From ad1928316d819ffb337fc4a926dbef47607dfb95 Mon Sep 17 00:00:00 2001 From: Norbert Preining Date: Sun, 1 Mar 2020 03:01:38 +0000 Subject: CTAN sync 202003010301 --- .../japanese/japanese-otf-uptex/00otf-uptex.txt | 11 +- language/japanese/japanese-otf-uptex/COPYRIGHT | 2 +- language/japanese/japanese-otf-uptex/README | 6 +- .../japanese-otf-uptex/script/CheckDVICode.pm | 3 + .../japanese-otf-uptex/script/sp_list_j.txt | 20 +- language/japanese/japanese-otf-uptex/sty/mlutf.sty | 2 +- language/japanese/japanese-otf-uptex/sty/otf.sty | 2 +- .../japanese-otf-uptex/test/uplatex/sp_jp_text.tex | 20 +- .../japanese-otf-uptex/test/uplatex/sp_jp_utf.tex | 20 +- .../japanese-otf-uptex/vf/upbrsgexpgothb-h.vf | Bin 651316 -> 651332 bytes .../japanese-otf-uptex/vf/upbrsgexpgothb-v.vf | Bin 651340 -> 651360 bytes .../japanese-otf-uptex/vf/upbrsgexpgothbn-h.vf | Bin 651316 -> 651336 bytes .../japanese-otf-uptex/vf/upbrsgexpgothbn-v.vf | Bin 651344 -> 651360 bytes .../japanese-otf-uptex/vf/upbrsgexpgotheb-h.vf | Bin 651316 -> 651336 bytes .../japanese-otf-uptex/vf/upbrsgexpgotheb-v.vf | Bin 651344 -> 651360 bytes .../japanese-otf-uptex/vf/upbrsgexpgothebn-h.vf | Bin 651320 -> 651336 bytes .../japanese-otf-uptex/vf/upbrsgexpgothebn-v.vf | Bin 651344 -> 651360 bytes .../japanese-otf-uptex/vf/upbrsgexpgothr-h.vf | Bin 651316 -> 651332 bytes .../japanese-otf-uptex/vf/upbrsgexpgothr-v.vf | Bin 651340 -> 651360 bytes .../japanese-otf-uptex/vf/upbrsgexpgothrn-h.vf | Bin 651316 -> 651336 bytes .../japanese-otf-uptex/vf/upbrsgexpgothrn-v.vf | Bin 651344 -> 651360 bytes .../japanese-otf-uptex/vf/upbrsgexpmgothr-h.vf | Bin 651320 -> 651336 bytes .../japanese-otf-uptex/vf/upbrsgexpmgothr-v.vf | Bin 651348 -> 651364 bytes .../japanese-otf-uptex/vf/upbrsgexpmgothrn-h.vf | Bin 651320 -> 651340 bytes .../japanese-otf-uptex/vf/upbrsgexpmgothrn-v.vf | Bin 651348 -> 651364 bytes .../japanese-otf-uptex/vf/upbrsgexpminb-h.vf | Bin 651316 -> 651332 bytes .../japanese-otf-uptex/vf/upbrsgexpminb-v.vf | Bin 651340 -> 651356 bytes .../japanese-otf-uptex/vf/upbrsgexpminbn-h.vf | Bin 651316 -> 651332 bytes .../japanese-otf-uptex/vf/upbrsgexpminbn-v.vf | Bin 651340 -> 651360 bytes .../japanese-otf-uptex/vf/upbrsgexpminl-h.vf | Bin 651316 -> 651332 bytes .../japanese-otf-uptex/vf/upbrsgexpminl-v.vf | Bin 651340 -> 651356 bytes .../japanese-otf-uptex/vf/upbrsgexpminln-h.vf | Bin 651316 -> 651332 bytes .../japanese-otf-uptex/vf/upbrsgexpminln-v.vf | Bin 651340 -> 651360 bytes .../japanese-otf-uptex/vf/upbrsgexpminr-h.vf | Bin 651316 -> 651332 bytes .../japanese-otf-uptex/vf/upbrsgexpminr-v.vf | Bin 651340 -> 651356 bytes .../japanese-otf-uptex/vf/upbrsgexpminrn-h.vf | Bin 651316 -> 651332 bytes .../japanese-otf-uptex/vf/upbrsgexpminrn-v.vf | Bin 651340 -> 651360 bytes .../japanese-otf-uptex/vf/upbrsgnmlgothb-h.vf | Bin 651068 -> 651088 bytes .../japanese-otf-uptex/vf/upbrsgnmlgothb-v.vf | Bin 651096 -> 651112 bytes .../japanese-otf-uptex/vf/upbrsgnmlgothbn-h.vf | Bin 651072 -> 651088 bytes .../japanese-otf-uptex/vf/upbrsgnmlgothbn-v.vf | Bin 651096 -> 651112 bytes .../japanese-otf-uptex/vf/upbrsgnmlgotheb-h.vf | Bin 651072 -> 651088 bytes .../japanese-otf-uptex/vf/upbrsgnmlgotheb-v.vf | Bin 651096 -> 651112 bytes .../japanese-otf-uptex/vf/upbrsgnmlgothebn-h.vf | Bin 651072 -> 651088 bytes .../japanese-otf-uptex/vf/upbrsgnmlgothebn-v.vf | Bin 651096 -> 651112 bytes .../japanese-otf-uptex/vf/upbrsgnmlgothr-h.vf | Bin 651068 -> 651088 bytes .../japanese-otf-uptex/vf/upbrsgnmlgothr-v.vf | Bin 651096 -> 651112 bytes .../japanese-otf-uptex/vf/upbrsgnmlgothrn-h.vf | Bin 651072 -> 651088 bytes .../japanese-otf-uptex/vf/upbrsgnmlgothrn-v.vf | Bin 651096 -> 651112 bytes .../japanese-otf-uptex/vf/upbrsgnmlmgothr-h.vf | Bin 651072 -> 651088 bytes .../japanese-otf-uptex/vf/upbrsgnmlmgothr-v.vf | Bin 651096 -> 651116 bytes .../japanese-otf-uptex/vf/upbrsgnmlmgothrn-h.vf | Bin 651072 -> 651088 bytes .../japanese-otf-uptex/vf/upbrsgnmlmgothrn-v.vf | Bin 651100 -> 651116 bytes .../japanese-otf-uptex/vf/upbrsgnmlminb-h.vf | Bin 651068 -> 651084 bytes .../japanese-otf-uptex/vf/upbrsgnmlminb-v.vf | Bin 651092 -> 651112 bytes .../japanese-otf-uptex/vf/upbrsgnmlminbn-h.vf | Bin 651068 -> 651088 bytes .../japanese-otf-uptex/vf/upbrsgnmlminbn-v.vf | Bin 651096 -> 651112 bytes .../japanese-otf-uptex/vf/upbrsgnmlminl-h.vf | Bin 651068 -> 651084 bytes .../japanese-otf-uptex/vf/upbrsgnmlminl-v.vf | Bin 651092 -> 651112 bytes .../japanese-otf-uptex/vf/upbrsgnmlminln-h.vf | Bin 651068 -> 651088 bytes .../japanese-otf-uptex/vf/upbrsgnmlminln-v.vf | Bin 651096 -> 651112 bytes .../japanese-otf-uptex/vf/upbrsgnmlminr-h.vf | Bin 651068 -> 651084 bytes .../japanese-otf-uptex/vf/upbrsgnmlminr-v.vf | Bin 651092 -> 651112 bytes .../japanese-otf-uptex/vf/upbrsgnmlminrn-h.vf | Bin 651068 -> 651088 bytes .../japanese-otf-uptex/vf/upbrsgnmlminrn-v.vf | Bin 651096 -> 651112 bytes .../japanese/japanese-otf-uptex/vf/upexpgothb-h.vf | Bin 651316 -> 651332 bytes .../japanese/japanese-otf-uptex/vf/upexpgothb-v.vf | Bin 651340 -> 651360 bytes .../japanese-otf-uptex/vf/upexpgothbn-h.vf | Bin 651316 -> 651336 bytes .../japanese-otf-uptex/vf/upexpgothbn-v.vf | Bin 651344 -> 651360 bytes .../japanese-otf-uptex/vf/upexpgotheb-h.vf | Bin 651316 -> 651336 bytes .../japanese-otf-uptex/vf/upexpgotheb-v.vf | Bin 651344 -> 651360 bytes .../japanese-otf-uptex/vf/upexpgothebn-h.vf | Bin 651320 -> 651336 bytes .../japanese-otf-uptex/vf/upexpgothebn-v.vf | Bin 651344 -> 651360 bytes .../japanese/japanese-otf-uptex/vf/upexpgothr-h.vf | Bin 651316 -> 651332 bytes .../japanese/japanese-otf-uptex/vf/upexpgothr-v.vf | Bin 651340 -> 651360 bytes .../japanese-otf-uptex/vf/upexpgothrn-h.vf | Bin 651316 -> 651336 bytes .../japanese-otf-uptex/vf/upexpgothrn-v.vf | Bin 651344 -> 651360 bytes .../japanese-otf-uptex/vf/upexpmgothr-h.vf | Bin 651320 -> 651336 bytes .../japanese-otf-uptex/vf/upexpmgothr-v.vf | Bin 651348 -> 651364 bytes .../japanese-otf-uptex/vf/upexpmgothrn-h.vf | Bin 651320 -> 651340 bytes .../japanese-otf-uptex/vf/upexpmgothrn-v.vf | Bin 651348 -> 651364 bytes .../japanese/japanese-otf-uptex/vf/upexpminb-h.vf | Bin 651316 -> 651332 bytes .../japanese/japanese-otf-uptex/vf/upexpminb-v.vf | Bin 651340 -> 651356 bytes .../japanese/japanese-otf-uptex/vf/upexpminbn-h.vf | Bin 651316 -> 651332 bytes .../japanese/japanese-otf-uptex/vf/upexpminbn-v.vf | Bin 651340 -> 651360 bytes .../japanese/japanese-otf-uptex/vf/upexpminl-h.vf | Bin 651316 -> 651332 bytes .../japanese/japanese-otf-uptex/vf/upexpminl-v.vf | Bin 651340 -> 651356 bytes .../japanese/japanese-otf-uptex/vf/upexpminln-h.vf | Bin 651316 -> 651332 bytes .../japanese/japanese-otf-uptex/vf/upexpminln-v.vf | Bin 651340 -> 651360 bytes .../japanese/japanese-otf-uptex/vf/upexpminr-h.vf | Bin 651316 -> 651332 bytes .../japanese/japanese-otf-uptex/vf/upexpminr-v.vf | Bin 651340 -> 651356 bytes .../japanese/japanese-otf-uptex/vf/upexpminrn-h.vf | Bin 651316 -> 651332 bytes .../japanese/japanese-otf-uptex/vf/upexpminrn-v.vf | Bin 651340 -> 651360 bytes .../japanese/japanese-otf-uptex/vf/upnmlgothb-h.vf | Bin 651068 -> 651088 bytes .../japanese/japanese-otf-uptex/vf/upnmlgothb-v.vf | Bin 651096 -> 651112 bytes .../japanese-otf-uptex/vf/upnmlgothbn-h.vf | Bin 651072 -> 651088 bytes .../japanese-otf-uptex/vf/upnmlgothbn-v.vf | Bin 651096 -> 651112 bytes .../japanese-otf-uptex/vf/upnmlgotheb-h.vf | Bin 651072 -> 651088 bytes .../japanese-otf-uptex/vf/upnmlgotheb-v.vf | Bin 651096 -> 651112 bytes .../japanese-otf-uptex/vf/upnmlgothebn-h.vf | Bin 651072 -> 651088 bytes .../japanese-otf-uptex/vf/upnmlgothebn-v.vf | Bin 651096 -> 651112 bytes .../japanese/japanese-otf-uptex/vf/upnmlgothr-h.vf | Bin 651068 -> 651088 bytes .../japanese/japanese-otf-uptex/vf/upnmlgothr-v.vf | Bin 651096 -> 651112 bytes .../japanese-otf-uptex/vf/upnmlgothrn-h.vf | Bin 651072 -> 651088 bytes .../japanese-otf-uptex/vf/upnmlgothrn-v.vf | Bin 651096 -> 651112 bytes .../japanese-otf-uptex/vf/upnmlmgothr-h.vf | Bin 651072 -> 651088 bytes .../japanese-otf-uptex/vf/upnmlmgothr-v.vf | Bin 651096 -> 651116 bytes .../japanese-otf-uptex/vf/upnmlmgothrn-h.vf | Bin 651072 -> 651088 bytes .../japanese-otf-uptex/vf/upnmlmgothrn-v.vf | Bin 651100 -> 651116 bytes .../japanese/japanese-otf-uptex/vf/upnmlminb-h.vf | Bin 651068 -> 651084 bytes .../japanese/japanese-otf-uptex/vf/upnmlminb-v.vf | Bin 651092 -> 651112 bytes .../japanese/japanese-otf-uptex/vf/upnmlminbn-h.vf | Bin 651068 -> 651088 bytes .../japanese/japanese-otf-uptex/vf/upnmlminbn-v.vf | Bin 651096 -> 651112 bytes .../japanese/japanese-otf-uptex/vf/upnmlminl-h.vf | Bin 651068 -> 651084 bytes .../japanese/japanese-otf-uptex/vf/upnmlminl-v.vf | Bin 651092 -> 651112 bytes .../japanese/japanese-otf-uptex/vf/upnmlminln-h.vf | Bin 651068 -> 651088 bytes .../japanese/japanese-otf-uptex/vf/upnmlminln-v.vf | Bin 651096 -> 651112 bytes .../japanese/japanese-otf-uptex/vf/upnmlminr-h.vf | Bin 651068 -> 651084 bytes .../japanese/japanese-otf-uptex/vf/upnmlminr-v.vf | Bin 651092 -> 651112 bytes .../japanese/japanese-otf-uptex/vf/upnmlminrn-h.vf | Bin 651068 -> 651088 bytes .../japanese/japanese-otf-uptex/vf/upnmlminrn-v.vf | Bin 651096 -> 651112 bytes .../japanese-otf-uptex/vf/uprubygothb-h.vf | Bin 651316 -> 651332 bytes .../japanese-otf-uptex/vf/uprubygothb-v.vf | Bin 651340 -> 651360 bytes .../japanese-otf-uptex/vf/uprubygotheb-h.vf | Bin 651316 -> 651336 bytes .../japanese-otf-uptex/vf/uprubygotheb-v.vf | Bin 651344 -> 651360 bytes .../japanese-otf-uptex/vf/uprubygothr-h.vf | Bin 651316 -> 651332 bytes .../japanese-otf-uptex/vf/uprubygothr-v.vf | Bin 651340 -> 651360 bytes .../japanese-otf-uptex/vf/uprubymgothr-h.vf | Bin 651320 -> 651336 bytes .../japanese-otf-uptex/vf/uprubymgothr-v.vf | Bin 651348 -> 651364 bytes .../japanese/japanese-otf-uptex/vf/uprubyminb-h.vf | Bin 651316 -> 651332 bytes .../japanese/japanese-otf-uptex/vf/uprubyminb-v.vf | Bin 651340 -> 651356 bytes .../japanese/japanese-otf-uptex/vf/uprubyminl-h.vf | Bin 651316 -> 651332 bytes .../japanese/japanese-otf-uptex/vf/uprubyminl-v.vf | Bin 651340 -> 651356 bytes .../japanese/japanese-otf-uptex/vf/uprubyminr-h.vf | Bin 651316 -> 651332 bytes .../japanese/japanese-otf-uptex/vf/uprubyminr-v.vf | Bin 651340 -> 651356 bytes .../japanese/japanese-otf-uptex/vf/utfgrj-h.vf | Bin 1872 -> 1888 bytes .../japanese/japanese-otf-uptex/vf/utfgrj-v.vf | Bin 1872 -> 1888 bytes .../japanese/japanese-otf-uptex/vf/utfjgbj-h.vf | Bin 1872 -> 1888 bytes .../japanese/japanese-otf-uptex/vf/utfjgbj-v.vf | Bin 1872 -> 1888 bytes .../japanese/japanese-otf-uptex/vf/utfjgej-h.vf | Bin 1872 -> 1888 bytes .../japanese/japanese-otf-uptex/vf/utfjgej-v.vf | Bin 1872 -> 1888 bytes .../japanese/japanese-otf-uptex/vf/utfjgrj-h.vf | Bin 1872 -> 1888 bytes .../japanese/japanese-otf-uptex/vf/utfjgrj-v.vf | Bin 1872 -> 1888 bytes .../japanese/japanese-otf-uptex/vf/utfjmbj-h.vf | Bin 1872 -> 1888 bytes .../japanese/japanese-otf-uptex/vf/utfjmbj-v.vf | Bin 1872 -> 1888 bytes .../japanese/japanese-otf-uptex/vf/utfjmgrj-h.vf | Bin 1872 -> 1888 bytes .../japanese/japanese-otf-uptex/vf/utfjmgrj-v.vf | Bin 1872 -> 1888 bytes .../japanese/japanese-otf-uptex/vf/utfjmlj-h.vf | Bin 1872 -> 1888 bytes .../japanese/japanese-otf-uptex/vf/utfjmlj-v.vf | Bin 1872 -> 1888 bytes .../japanese/japanese-otf-uptex/vf/utfjmrj-h.vf | Bin 1872 -> 1888 bytes .../japanese/japanese-otf-uptex/vf/utfjmrj-v.vf | Bin 1872 -> 1888 bytes .../japanese/japanese-otf-uptex/vf/utfmrj-h.vf | Bin 1872 -> 1888 bytes .../japanese/japanese-otf-uptex/vf/utfmrj-v.vf | Bin 1872 -> 1888 bytes language/japanese/ptex/COPYRIGHT | 25 - language/japanese/ptex/COPYRIGHT.jis | 32 - language/japanese/ptex/Changes.txt | 302 - language/japanese/ptex/Files | 27 - language/japanese/ptex/INSTALL | 85 - language/japanese/ptex/INSTALL.txt | 83 - language/japanese/ptex/Makefile.in | 344 - language/japanese/ptex/README | 36 - language/japanese/ptex/README.txt | 32 - language/japanese/ptex/configure | 47 - language/japanese/ptex/jbibd.sed | 17 - language/japanese/ptex/jbibextra.c | 485 -- language/japanese/ptex/jbibextra.h | 27 - language/japanese/ptex/jbibtex.ch | 1649 ----- language/japanese/ptex/jbibtex.defines | 3 - language/japanese/ptex/kanji.c | 233 - language/japanese/ptex/kanji.defines | 23 - language/japanese/ptex/kanji.h.in | 76 - language/japanese/ptex/mkconf | 53 - language/japanese/ptex/pconvert | 73 - language/japanese/ptex/pdvitype.ch | 1181 --- language/japanese/ptex/pltotf.ch | 780 -- language/japanese/ptex/ptex-base.ch | 7679 -------------------- language/japanese/ptex/ptexextra.c | 2319 ------ language/japanese/ptex/ptexextra.h | 61 - language/japanese/ptex/ptexhelp.h | 71 - language/japanese/ptex/tftopl.ch | 544 -- language/japanese/ptex/usage.c | 28 - language/japanese/ptex/version.c | 54 - language/japanese/uptex-base/00readme_uptex.txt | 3 +- language/japanese/uptex-base/01uptex_doc_utf8.txt | 35 +- .../japanese/uptex-base/02uptex_changelog_utf8.txt | 28 +- language/japanese/uptex-base/LICENSE | 4 +- language/japanese/uptex-base/Makefile | 21 - language/japanese/uptex-base/README.md | 2 +- language/japanese/uptex-base/samples/show_kcat.tex | 57 + language/japanese/uptex-base/samples/testrun.bat | 270 +- 190 files changed, 290 insertions(+), 16585 deletions(-) delete mode 100644 language/japanese/ptex/COPYRIGHT delete mode 100644 language/japanese/ptex/COPYRIGHT.jis delete mode 100644 language/japanese/ptex/Changes.txt delete mode 100644 language/japanese/ptex/Files delete mode 100644 language/japanese/ptex/INSTALL delete mode 100644 language/japanese/ptex/INSTALL.txt delete mode 100644 language/japanese/ptex/Makefile.in delete mode 100644 language/japanese/ptex/README delete mode 100644 language/japanese/ptex/README.txt delete mode 100644 language/japanese/ptex/configure delete mode 100644 language/japanese/ptex/jbibd.sed delete mode 100644 language/japanese/ptex/jbibextra.c delete mode 100644 language/japanese/ptex/jbibextra.h delete mode 100644 language/japanese/ptex/jbibtex.ch delete mode 100644 language/japanese/ptex/jbibtex.defines delete mode 100644 language/japanese/ptex/kanji.c delete mode 100644 language/japanese/ptex/kanji.defines delete mode 100644 language/japanese/ptex/kanji.h.in delete mode 100644 language/japanese/ptex/mkconf delete mode 100644 language/japanese/ptex/pconvert delete mode 100644 language/japanese/ptex/pdvitype.ch delete mode 100644 language/japanese/ptex/pltotf.ch delete mode 100644 language/japanese/ptex/ptex-base.ch delete mode 100644 language/japanese/ptex/ptexextra.c delete mode 100644 language/japanese/ptex/ptexextra.h delete mode 100644 language/japanese/ptex/ptexhelp.h delete mode 100644 language/japanese/ptex/tftopl.ch delete mode 100644 language/japanese/ptex/usage.c delete mode 100644 language/japanese/ptex/version.c delete mode 100644 language/japanese/uptex-base/Makefile (limited to 'language') diff --git a/language/japanese/japanese-otf-uptex/00otf-uptex.txt b/language/japanese/japanese-otf-uptex/00otf-uptex.txt index 29fb78f9f2..43b231ff57 100644 --- a/language/japanese/japanese-otf-uptex/00otf-uptex.txt +++ b/language/japanese/japanese-otf-uptex/00otf-uptex.txt @@ -1,5 +1,5 @@ [ Title ] -japanese-otf-uptex Ver.0.24 2019/09/07 +japanese-otf-uptex Ver.0.25 2020/02/28 [ Abstract ] @@ -388,3 +388,12 @@ https://github.com/t-tk/japanese-otf-uptex Increment version number. script/CheckDVICode.pm :: Make half width U+00B7 in VFs. +2020.02.28 Ver0.25 + sty/otf.sty, sty/mlutf.sty :: + Increment version number. + script/CheckDVICode.pm, script/sp_list_j.txt, + test/uplatex/sp_jp_{utf,text}.tex :: + Update references: + Adobe-Japan1-7 cid2code.txt (Version 07/30/2019). + COPYRIGHT :: + Update year. diff --git a/language/japanese/japanese-otf-uptex/COPYRIGHT b/language/japanese/japanese-otf-uptex/COPYRIGHT index 7ccde031af..8cee4f30b7 100644 --- a/language/japanese/japanese-otf-uptex/COPYRIGHT +++ b/language/japanese/japanese-otf-uptex/COPYRIGHT @@ -1,5 +1,5 @@ Copyright (C) 2003--2019 SAITO Shuzaburo and INOUE Koichi -Copyright (C) 2007--2019 TANAKA Takuji +Copyright (C) 2007--2020 TANAKA Takuji All rights reserved. Redistribution and use in source and binary forms, with or without diff --git a/language/japanese/japanese-otf-uptex/README b/language/japanese/japanese-otf-uptex/README index 9fa99269c3..216be309a6 100644 --- a/language/japanese/japanese-otf-uptex/README +++ b/language/japanese/japanese-otf-uptex/README @@ -3,7 +3,7 @@ README From 00otf-uptex.txt: [ Title ] -japanese-otf-uptex Ver.0.24 2019/09/07 +japanese-otf-uptex Ver.0.25 2020/02/28 [ Abstract ] @@ -22,11 +22,11 @@ Ref. http://opensource.org/licenses/BSD-3-Clause The original source has been downloaded from https://github.com/t-tk/japanese-otf-uptex as - https://github.com/t-tk/japanese-otf-uptex/releases/tag/v0.24 + https://github.com/t-tk/japanese-otf-uptex/releases/tag/v0.25 After that the scripts run and the generated tfm and vf files included. Norbert Preining TANAKA Takuji -2019-09-07 +2020-02-29 diff --git a/language/japanese/japanese-otf-uptex/script/CheckDVICode.pm b/language/japanese/japanese-otf-uptex/script/CheckDVICode.pm index 6ef5e528cd..3af7198b94 100644 --- a/language/japanese/japanese-otf-uptex/script/CheckDVICode.pm +++ b/language/japanese/japanese-otf-uptex/script/CheckDVICode.pm @@ -268,6 +268,9 @@ sub is_ucs_jpn_range{ return 1 if ($dvicode<=0x1F1FF); # Enclosed Alphanumeric Supplement return 1 if ($dvicode<=0x1F2FF); # Enclosed Ideographic Supplement + return 0 if ($dvicode< 0x1F780); + return 1 if ($dvicode<=0x1F7FF); # Geometric Shapes Extended + return 0 if ($dvicode< 0x20000); return 1 if ($dvicode<=0x2A6DF); # CJK Unified Ideographs Extension B return 1 if ($dvicode<=0x2B73F); # CJK Unified Ideographs Extension C diff --git a/language/japanese/japanese-otf-uptex/script/sp_list_j.txt b/language/japanese/japanese-otf-uptex/script/sp_list_j.txt index a6ab70c194..2092c5767a 100644 --- a/language/japanese/japanese-otf-uptex/script/sp_list_j.txt +++ b/language/japanese/japanese-otf-uptex/script/sp_list_j.txt @@ -1,6 +1,6 @@ % % This file is generated from the data of UniJIS-UTF32 -% in cid2code.txt (Version 07/30/2018) +% in cid2code.txt (Version 07/30/2019) % for Adobe-Japan1-7 % % Reference: @@ -26,15 +26,15 @@ 1F142,1F143,1F144,1F145,1F146,1F147,1F148,1F149,1F202,1F237 1F170,1F171,1F172,1F173,1F174,1F175,1F176,1F177,1F178,1F179 1F17A,1F17B,1F17C,1F17D,1F17E,1F17F,1F180,1F181,1F182,1F183 -1F184,1F185,1F186,1F187,1F188,1F189,2F945,2090E,26951,2B7D8 -2F8FC,2F995,2F8EA,2F822,26222,20BB7,29D4B,2F833,2B78E,2F8AC -20A64,2F903,2B746,2B777,2F90B,20B9F,2F828,2F921,2F83F,2F873 -2D544,2000B,2F852,2967F,2F947,201A2,2E569,2B751,2F8B2,27FB7 -23CFE,2F91A,25AD7,2F89A,2F90F,2123D,2F81A,24D14,2F862,2B789 -2F9D0,2F9DF,2567F,266B0,20628,2008A,20984,2F82C,2F86D,2F8B6 -26999,233CC,2F8DB,2A9E6,2B7BD,2F96C,2E278,2053F,2626A,200B0 -2E6EA,28987,28E17,2B81A,242EE,2F8E1,23CBE,20611,2F9F4,2F804 -2363A,233FE,22609 +1F184,1F185,1F186,1F187,1F188,1F189,1F79C,2F945,2090E,26951 +2B7D8,2F8FC,2F995,2F8EA,2F822,26222,20BB7,29D4B,2F833,2B78E +2F8AC,20A64,2F903,2B746,2B777,2F90B,20B9F,2F828,2F921,2F83F +2F873,2D544,2000B,2F852,2967F,2F947,201A2,2E569,2B751,2F8B2 +27FB7,23CFE,2F91A,25AD7,2F89A,2F90F,2123D,2F81A,24D14,2F862 +2B789,2F9D0,2F9DF,2567F,266B0,20628,2008A,20984,2F82C,2F86D +2F8B6,26999,233CC,2F8DB,2A9E6,2B7BD,2F96C,2E278,2053F,2626A +200B0,2E6EA,28987,28E17,2B81A,242EE,2F8E1,23CBE,20611,2F9F4 +2F804,2363A,233FE,22609 %Adobe-Japan1-5 2131B,2146E,218BD,216B4,21E34,231C4,235C4,2373F,23763,247F1 diff --git a/language/japanese/japanese-otf-uptex/sty/mlutf.sty b/language/japanese/japanese-otf-uptex/sty/mlutf.sty index 497ec378f3..cf6a7e7b03 100644 --- a/language/japanese/japanese-otf-uptex/sty/mlutf.sty +++ b/language/japanese/japanese-otf-uptex/sty/mlutf.sty @@ -1,5 +1,5 @@ \NeedsTeXFormat{pLaTeX2e} -\ProvidesPackage{mlutf}[2004/04/17 v1.1.2 psitau, u0.24 ttk] +\ProvidesPackage{mlutf}[2004/04/17 v1.1.2 psitau, u0.25 ttk] %force catcode of \" be 12 \count@\catcode`\" \catcode`\"=12 diff --git a/language/japanese/japanese-otf-uptex/sty/otf.sty b/language/japanese/japanese-otf-uptex/sty/otf.sty index d2d4415197..b92d403718 100644 --- a/language/japanese/japanese-otf-uptex/sty/otf.sty +++ b/language/japanese/japanese-otf-uptex/sty/otf.sty @@ -1,5 +1,5 @@ \NeedsTeXFormat{pLaTeX2e} -\ProvidesPackage{otf}[2019/04/01 v1.7b8 psitau, u0.24 ttk] +\ProvidesPackage{otf}[2019/04/01 v1.7b8 psitau, u0.25 ttk] \RequirePackage{keyval} %for processing options \newif\if@kana \@kanafalse diff --git a/language/japanese/japanese-otf-uptex/test/uplatex/sp_jp_text.tex b/language/japanese/japanese-otf-uptex/test/uplatex/sp_jp_text.tex index e77167987b..24203b59b9 100644 --- a/language/japanese/japanese-otf-uptex/test/uplatex/sp_jp_text.tex +++ b/language/japanese/japanese-otf-uptex/test/uplatex/sp_jp_text.tex @@ -1,6 +1,6 @@ % % This file is generated from the data of UniJIS-UTF32 -% in cid2code.txt (Version 02/05/2019) +% in cid2code.txt (Version 07/30/2019) % for Adobe-Japan1-7 % % Reference: @@ -26,15 +26,15 @@ Adobe-Japan1-4\\ 🅂🅃🅄🅅🅆🅇🅈🅉🈂🈷 🅰🅱🅲🅳🅴🅵🅶🅷🅸🅹 🅺🅻🅼🅽🅾🅿🆀ðŸ†ðŸ†‚🆃 -🆄🆅🆆🆇🆈🆉眞𠤎𦥑𫟘 -沿芽槪割𦈢𠮷𩵋卿𫞎憲 -𠩤浩ð«†ð«·ð¯¤‹ð ®Ÿð¯ ¨ð¯¤¡ð¯ ¿ð¯¡³ -𭕄𠀋城𩙿真𠆢𮕩ð«‘成𧾷 -𣳾炭𥫗彫ð¯¤ð¡ˆ½ð¯ šð¤´”姬𫞉 -ð¯§ð¯§Ÿð¥™¿ð¦š°ð ˜¨ð ‚Šð ¦„卉寃拔 -𦦙ð£Œð¯£›ðª§¦ð«ž½ð¯¥¬ð®‰¸ð ”¿ð¦‰ªð ‚° -𮛪𨦇𨸗𫠚𤋮桒𣲾𠘑嶲你 -𣘺ð£¾ð¢˜‰ +🆄🆅🆆🆇🆈🆉🞜眞𠤎𦥑 +𫟘沿芽槪割𦈢𠮷𩵋卿𫞎 +憲𠩤浩ð«†ð«·ð¯¤‹ð ®Ÿð¯ ¨ð¯¤¡ð¯ ¿ +将𭕄𠀋城𩙿真𠆢𮕩ð«‘成 +𧾷𣳾炭𥫗彫ð¯¤ð¡ˆ½ð¯ šð¤´”姬 +𫞉ð¯§ð¯§Ÿð¥™¿ð¦š°ð ˜¨ð ‚Šð ¦„卉寃 +拔𦦙ð£Œð¯£›ðª§¦ð«ž½ð¯¥¬ð®‰¸ð ”¿ð¦‰ª +𠂰𮛪𨦇𨸗𫠚𤋮桒𣲾𠘑嶲 +你𣘺ð£¾ð¢˜‰ Adobe-Japan1-5\\ 𡌛𡑮𡢽𡚴𡸴𣇄𣗄𣜿ð££ð¤Ÿ± diff --git a/language/japanese/japanese-otf-uptex/test/uplatex/sp_jp_utf.tex b/language/japanese/japanese-otf-uptex/test/uplatex/sp_jp_utf.tex index b1d08c6c89..3f9a1e6fcb 100644 --- a/language/japanese/japanese-otf-uptex/test/uplatex/sp_jp_utf.tex +++ b/language/japanese/japanese-otf-uptex/test/uplatex/sp_jp_utf.tex @@ -1,6 +1,6 @@ % % This file is generated from the data of UniJIS-UTF32 -% in cid2code.txt (Version 02/05/2019) +% in cid2code.txt (Version 07/30/2019) % for Adobe-Japan1-7 % % Reference: @@ -26,15 +26,15 @@ Adobe-Japan1-4\\ \UTF{1F142}\UTF{1F143}\UTF{1F144}\UTF{1F145}\UTF{1F146}\UTF{1F147}\UTF{1F148}\UTF{1F149}\UTF{1F202}\UTF{1F237}% \UTF{1F170}\UTF{1F171}\UTF{1F172}\UTF{1F173}\UTF{1F174}\UTF{1F175}\UTF{1F176}\UTF{1F177}\UTF{1F178}\UTF{1F179}% \UTF{1F17A}\UTF{1F17B}\UTF{1F17C}\UTF{1F17D}\UTF{1F17E}\UTF{1F17F}\UTF{1F180}\UTF{1F181}\UTF{1F182}\UTF{1F183}% -\UTF{1F184}\UTF{1F185}\UTF{1F186}\UTF{1F187}\UTF{1F188}\UTF{1F189}\UTF{2F945}\UTF{2090E}\UTF{26951}\UTF{2B7D8}% -\UTF{2F8FC}\UTF{2F995}\UTF{2F8EA}\UTF{2F822}\UTF{26222}\UTF{20BB7}\UTF{29D4B}\UTF{2F833}\UTF{2B78E}\UTF{2F8AC}% -\UTF{20A64}\UTF{2F903}\UTF{2B746}\UTF{2B777}\UTF{2F90B}\UTF{20B9F}\UTF{2F828}\UTF{2F921}\UTF{2F83F}\UTF{2F873}% -\UTF{2D544}\UTF{2000B}\UTF{2F852}\UTF{2967F}\UTF{2F947}\UTF{201A2}\UTF{2E569}\UTF{2B751}\UTF{2F8B2}\UTF{27FB7}% -\UTF{23CFE}\UTF{2F91A}\UTF{25AD7}\UTF{2F89A}\UTF{2F90F}\UTF{2123D}\UTF{2F81A}\UTF{24D14}\UTF{2F862}\UTF{2B789}% -\UTF{2F9D0}\UTF{2F9DF}\UTF{2567F}\UTF{266B0}\UTF{20628}\UTF{2008A}\UTF{20984}\UTF{2F82C}\UTF{2F86D}\UTF{2F8B6}% -\UTF{26999}\UTF{233CC}\UTF{2F8DB}\UTF{2A9E6}\UTF{2B7BD}\UTF{2F96C}\UTF{2E278}\UTF{2053F}\UTF{2626A}\UTF{200B0}% -\UTF{2E6EA}\UTF{28987}\UTF{28E17}\UTF{2B81A}\UTF{242EE}\UTF{2F8E1}\UTF{23CBE}\UTF{20611}\UTF{2F9F4}\UTF{2F804}% -\UTF{2363A}\UTF{233FE}\UTF{22609} +\UTF{1F184}\UTF{1F185}\UTF{1F186}\UTF{1F187}\UTF{1F188}\UTF{1F189}\UTF{1F79C}\UTF{2F945}\UTF{2090E}\UTF{26951}% +\UTF{2B7D8}\UTF{2F8FC}\UTF{2F995}\UTF{2F8EA}\UTF{2F822}\UTF{26222}\UTF{20BB7}\UTF{29D4B}\UTF{2F833}\UTF{2B78E}% +\UTF{2F8AC}\UTF{20A64}\UTF{2F903}\UTF{2B746}\UTF{2B777}\UTF{2F90B}\UTF{20B9F}\UTF{2F828}\UTF{2F921}\UTF{2F83F}% +\UTF{2F873}\UTF{2D544}\UTF{2000B}\UTF{2F852}\UTF{2967F}\UTF{2F947}\UTF{201A2}\UTF{2E569}\UTF{2B751}\UTF{2F8B2}% +\UTF{27FB7}\UTF{23CFE}\UTF{2F91A}\UTF{25AD7}\UTF{2F89A}\UTF{2F90F}\UTF{2123D}\UTF{2F81A}\UTF{24D14}\UTF{2F862}% +\UTF{2B789}\UTF{2F9D0}\UTF{2F9DF}\UTF{2567F}\UTF{266B0}\UTF{20628}\UTF{2008A}\UTF{20984}\UTF{2F82C}\UTF{2F86D}% +\UTF{2F8B6}\UTF{26999}\UTF{233CC}\UTF{2F8DB}\UTF{2A9E6}\UTF{2B7BD}\UTF{2F96C}\UTF{2E278}\UTF{2053F}\UTF{2626A}% +\UTF{200B0}\UTF{2E6EA}\UTF{28987}\UTF{28E17}\UTF{2B81A}\UTF{242EE}\UTF{2F8E1}\UTF{23CBE}\UTF{20611}\UTF{2F9F4}% +\UTF{2F804}\UTF{2363A}\UTF{233FE}\UTF{22609} Adobe-Japan1-5\\ \UTF{2131B}\UTF{2146E}\UTF{218BD}\UTF{216B4}\UTF{21E34}\UTF{231C4}\UTF{235C4}\UTF{2373F}\UTF{23763}\UTF{247F1}% diff --git a/language/japanese/japanese-otf-uptex/vf/upbrsgexpgothb-h.vf b/language/japanese/japanese-otf-uptex/vf/upbrsgexpgothb-h.vf index 933678b5e0..9acb943587 100644 Binary files a/language/japanese/japanese-otf-uptex/vf/upbrsgexpgothb-h.vf and b/language/japanese/japanese-otf-uptex/vf/upbrsgexpgothb-h.vf differ diff --git a/language/japanese/japanese-otf-uptex/vf/upbrsgexpgothb-v.vf b/language/japanese/japanese-otf-uptex/vf/upbrsgexpgothb-v.vf index 2cd57662d7..011540f487 100644 Binary files a/language/japanese/japanese-otf-uptex/vf/upbrsgexpgothb-v.vf and b/language/japanese/japanese-otf-uptex/vf/upbrsgexpgothb-v.vf differ diff --git a/language/japanese/japanese-otf-uptex/vf/upbrsgexpgothbn-h.vf b/language/japanese/japanese-otf-uptex/vf/upbrsgexpgothbn-h.vf index f5d3b67acc..a2b3406d16 100644 Binary files a/language/japanese/japanese-otf-uptex/vf/upbrsgexpgothbn-h.vf and b/language/japanese/japanese-otf-uptex/vf/upbrsgexpgothbn-h.vf differ diff --git a/language/japanese/japanese-otf-uptex/vf/upbrsgexpgothbn-v.vf b/language/japanese/japanese-otf-uptex/vf/upbrsgexpgothbn-v.vf index 46563c8700..f104f8db60 100644 Binary files a/language/japanese/japanese-otf-uptex/vf/upbrsgexpgothbn-v.vf and b/language/japanese/japanese-otf-uptex/vf/upbrsgexpgothbn-v.vf differ diff --git a/language/japanese/japanese-otf-uptex/vf/upbrsgexpgotheb-h.vf b/language/japanese/japanese-otf-uptex/vf/upbrsgexpgotheb-h.vf index 49acb1f98f..49a2b902ec 100644 Binary files a/language/japanese/japanese-otf-uptex/vf/upbrsgexpgotheb-h.vf and b/language/japanese/japanese-otf-uptex/vf/upbrsgexpgotheb-h.vf differ diff --git a/language/japanese/japanese-otf-uptex/vf/upbrsgexpgotheb-v.vf b/language/japanese/japanese-otf-uptex/vf/upbrsgexpgotheb-v.vf index aacefe52c0..acf3b1c1c9 100644 Binary files a/language/japanese/japanese-otf-uptex/vf/upbrsgexpgotheb-v.vf and b/language/japanese/japanese-otf-uptex/vf/upbrsgexpgotheb-v.vf differ diff --git a/language/japanese/japanese-otf-uptex/vf/upbrsgexpgothebn-h.vf b/language/japanese/japanese-otf-uptex/vf/upbrsgexpgothebn-h.vf index 4c42b2d716..79522e0f25 100644 Binary files a/language/japanese/japanese-otf-uptex/vf/upbrsgexpgothebn-h.vf and b/language/japanese/japanese-otf-uptex/vf/upbrsgexpgothebn-h.vf differ diff --git a/language/japanese/japanese-otf-uptex/vf/upbrsgexpgothebn-v.vf b/language/japanese/japanese-otf-uptex/vf/upbrsgexpgothebn-v.vf index abbb88aba6..546fd4a5f8 100644 Binary files a/language/japanese/japanese-otf-uptex/vf/upbrsgexpgothebn-v.vf and b/language/japanese/japanese-otf-uptex/vf/upbrsgexpgothebn-v.vf differ diff --git a/language/japanese/japanese-otf-uptex/vf/upbrsgexpgothr-h.vf b/language/japanese/japanese-otf-uptex/vf/upbrsgexpgothr-h.vf index 5b32c46ffe..77a2474d24 100644 Binary files a/language/japanese/japanese-otf-uptex/vf/upbrsgexpgothr-h.vf and b/language/japanese/japanese-otf-uptex/vf/upbrsgexpgothr-h.vf differ diff --git a/language/japanese/japanese-otf-uptex/vf/upbrsgexpgothr-v.vf b/language/japanese/japanese-otf-uptex/vf/upbrsgexpgothr-v.vf index 912d16c77d..f48d2645ad 100644 Binary files a/language/japanese/japanese-otf-uptex/vf/upbrsgexpgothr-v.vf and b/language/japanese/japanese-otf-uptex/vf/upbrsgexpgothr-v.vf differ diff --git a/language/japanese/japanese-otf-uptex/vf/upbrsgexpgothrn-h.vf b/language/japanese/japanese-otf-uptex/vf/upbrsgexpgothrn-h.vf index 454d1bcb38..8e45de7209 100644 Binary files a/language/japanese/japanese-otf-uptex/vf/upbrsgexpgothrn-h.vf and b/language/japanese/japanese-otf-uptex/vf/upbrsgexpgothrn-h.vf differ diff --git a/language/japanese/japanese-otf-uptex/vf/upbrsgexpgothrn-v.vf b/language/japanese/japanese-otf-uptex/vf/upbrsgexpgothrn-v.vf index 89bf664eb9..a22eb04188 100644 Binary files a/language/japanese/japanese-otf-uptex/vf/upbrsgexpgothrn-v.vf and b/language/japanese/japanese-otf-uptex/vf/upbrsgexpgothrn-v.vf differ diff --git a/language/japanese/japanese-otf-uptex/vf/upbrsgexpmgothr-h.vf b/language/japanese/japanese-otf-uptex/vf/upbrsgexpmgothr-h.vf index 38236057e4..2601b339e2 100644 Binary files a/language/japanese/japanese-otf-uptex/vf/upbrsgexpmgothr-h.vf and b/language/japanese/japanese-otf-uptex/vf/upbrsgexpmgothr-h.vf differ diff --git a/language/japanese/japanese-otf-uptex/vf/upbrsgexpmgothr-v.vf b/language/japanese/japanese-otf-uptex/vf/upbrsgexpmgothr-v.vf index 01f4286342..d25aac42f3 100644 Binary files a/language/japanese/japanese-otf-uptex/vf/upbrsgexpmgothr-v.vf and b/language/japanese/japanese-otf-uptex/vf/upbrsgexpmgothr-v.vf differ diff --git a/language/japanese/japanese-otf-uptex/vf/upbrsgexpmgothrn-h.vf b/language/japanese/japanese-otf-uptex/vf/upbrsgexpmgothrn-h.vf index bd85bc8cfd..605d5a3f3e 100644 Binary files a/language/japanese/japanese-otf-uptex/vf/upbrsgexpmgothrn-h.vf and b/language/japanese/japanese-otf-uptex/vf/upbrsgexpmgothrn-h.vf differ diff --git a/language/japanese/japanese-otf-uptex/vf/upbrsgexpmgothrn-v.vf b/language/japanese/japanese-otf-uptex/vf/upbrsgexpmgothrn-v.vf index 0d7e225895..ce09215824 100644 Binary files a/language/japanese/japanese-otf-uptex/vf/upbrsgexpmgothrn-v.vf and b/language/japanese/japanese-otf-uptex/vf/upbrsgexpmgothrn-v.vf differ diff --git a/language/japanese/japanese-otf-uptex/vf/upbrsgexpminb-h.vf b/language/japanese/japanese-otf-uptex/vf/upbrsgexpminb-h.vf index 7724ae462b..0f10b50fae 100644 Binary files a/language/japanese/japanese-otf-uptex/vf/upbrsgexpminb-h.vf and b/language/japanese/japanese-otf-uptex/vf/upbrsgexpminb-h.vf differ diff --git a/language/japanese/japanese-otf-uptex/vf/upbrsgexpminb-v.vf b/language/japanese/japanese-otf-uptex/vf/upbrsgexpminb-v.vf index cf082ca231..575ded81cc 100644 Binary files a/language/japanese/japanese-otf-uptex/vf/upbrsgexpminb-v.vf and b/language/japanese/japanese-otf-uptex/vf/upbrsgexpminb-v.vf differ diff --git a/language/japanese/japanese-otf-uptex/vf/upbrsgexpminbn-h.vf b/language/japanese/japanese-otf-uptex/vf/upbrsgexpminbn-h.vf index 5301509064..9c3785d9d8 100644 Binary files a/language/japanese/japanese-otf-uptex/vf/upbrsgexpminbn-h.vf and b/language/japanese/japanese-otf-uptex/vf/upbrsgexpminbn-h.vf differ diff --git a/language/japanese/japanese-otf-uptex/vf/upbrsgexpminbn-v.vf b/language/japanese/japanese-otf-uptex/vf/upbrsgexpminbn-v.vf index 4f55ac6bfd..2b80537a09 100644 Binary files a/language/japanese/japanese-otf-uptex/vf/upbrsgexpminbn-v.vf and b/language/japanese/japanese-otf-uptex/vf/upbrsgexpminbn-v.vf differ diff --git a/language/japanese/japanese-otf-uptex/vf/upbrsgexpminl-h.vf b/language/japanese/japanese-otf-uptex/vf/upbrsgexpminl-h.vf index ca27b108be..50247f5470 100644 Binary files a/language/japanese/japanese-otf-uptex/vf/upbrsgexpminl-h.vf and b/language/japanese/japanese-otf-uptex/vf/upbrsgexpminl-h.vf differ diff --git a/language/japanese/japanese-otf-uptex/vf/upbrsgexpminl-v.vf b/language/japanese/japanese-otf-uptex/vf/upbrsgexpminl-v.vf index 2a6c2c0557..f8cda080ab 100644 Binary files a/language/japanese/japanese-otf-uptex/vf/upbrsgexpminl-v.vf and b/language/japanese/japanese-otf-uptex/vf/upbrsgexpminl-v.vf differ diff --git a/language/japanese/japanese-otf-uptex/vf/upbrsgexpminln-h.vf b/language/japanese/japanese-otf-uptex/vf/upbrsgexpminln-h.vf index cd563855cc..5ad25fe26d 100644 Binary files a/language/japanese/japanese-otf-uptex/vf/upbrsgexpminln-h.vf and b/language/japanese/japanese-otf-uptex/vf/upbrsgexpminln-h.vf differ diff --git a/language/japanese/japanese-otf-uptex/vf/upbrsgexpminln-v.vf b/language/japanese/japanese-otf-uptex/vf/upbrsgexpminln-v.vf index 661832b76a..2d6a6fb160 100644 Binary files a/language/japanese/japanese-otf-uptex/vf/upbrsgexpminln-v.vf and b/language/japanese/japanese-otf-uptex/vf/upbrsgexpminln-v.vf differ diff --git a/language/japanese/japanese-otf-uptex/vf/upbrsgexpminr-h.vf b/language/japanese/japanese-otf-uptex/vf/upbrsgexpminr-h.vf index 3906445d67..a3d297231f 100644 Binary files a/language/japanese/japanese-otf-uptex/vf/upbrsgexpminr-h.vf and b/language/japanese/japanese-otf-uptex/vf/upbrsgexpminr-h.vf differ diff --git a/language/japanese/japanese-otf-uptex/vf/upbrsgexpminr-v.vf b/language/japanese/japanese-otf-uptex/vf/upbrsgexpminr-v.vf index 605a1d1f21..309b213eb5 100644 Binary files a/language/japanese/japanese-otf-uptex/vf/upbrsgexpminr-v.vf and b/language/japanese/japanese-otf-uptex/vf/upbrsgexpminr-v.vf differ diff --git a/language/japanese/japanese-otf-uptex/vf/upbrsgexpminrn-h.vf b/language/japanese/japanese-otf-uptex/vf/upbrsgexpminrn-h.vf index 3b0e09a518..785fae8410 100644 Binary files a/language/japanese/japanese-otf-uptex/vf/upbrsgexpminrn-h.vf and b/language/japanese/japanese-otf-uptex/vf/upbrsgexpminrn-h.vf differ diff --git a/language/japanese/japanese-otf-uptex/vf/upbrsgexpminrn-v.vf b/language/japanese/japanese-otf-uptex/vf/upbrsgexpminrn-v.vf index 44823b8468..3ac947a412 100644 Binary files a/language/japanese/japanese-otf-uptex/vf/upbrsgexpminrn-v.vf and b/language/japanese/japanese-otf-uptex/vf/upbrsgexpminrn-v.vf differ diff --git a/language/japanese/japanese-otf-uptex/vf/upbrsgnmlgothb-h.vf b/language/japanese/japanese-otf-uptex/vf/upbrsgnmlgothb-h.vf index 47b316286b..abd03bfa8c 100644 Binary files a/language/japanese/japanese-otf-uptex/vf/upbrsgnmlgothb-h.vf and b/language/japanese/japanese-otf-uptex/vf/upbrsgnmlgothb-h.vf differ diff --git a/language/japanese/japanese-otf-uptex/vf/upbrsgnmlgothb-v.vf b/language/japanese/japanese-otf-uptex/vf/upbrsgnmlgothb-v.vf index 08bf9e269e..00a8c060ab 100644 Binary files a/language/japanese/japanese-otf-uptex/vf/upbrsgnmlgothb-v.vf and b/language/japanese/japanese-otf-uptex/vf/upbrsgnmlgothb-v.vf differ diff --git a/language/japanese/japanese-otf-uptex/vf/upbrsgnmlgothbn-h.vf b/language/japanese/japanese-otf-uptex/vf/upbrsgnmlgothbn-h.vf index e9d75a8d2b..6973bb5542 100644 Binary files a/language/japanese/japanese-otf-uptex/vf/upbrsgnmlgothbn-h.vf and b/language/japanese/japanese-otf-uptex/vf/upbrsgnmlgothbn-h.vf differ diff --git a/language/japanese/japanese-otf-uptex/vf/upbrsgnmlgothbn-v.vf b/language/japanese/japanese-otf-uptex/vf/upbrsgnmlgothbn-v.vf index 283ed2e11e..f7ca0d4d9b 100644 Binary files a/language/japanese/japanese-otf-uptex/vf/upbrsgnmlgothbn-v.vf and b/language/japanese/japanese-otf-uptex/vf/upbrsgnmlgothbn-v.vf differ diff --git a/language/japanese/japanese-otf-uptex/vf/upbrsgnmlgotheb-h.vf b/language/japanese/japanese-otf-uptex/vf/upbrsgnmlgotheb-h.vf index 705152d68e..f058aef801 100644 Binary files a/language/japanese/japanese-otf-uptex/vf/upbrsgnmlgotheb-h.vf and b/language/japanese/japanese-otf-uptex/vf/upbrsgnmlgotheb-h.vf differ diff --git a/language/japanese/japanese-otf-uptex/vf/upbrsgnmlgotheb-v.vf b/language/japanese/japanese-otf-uptex/vf/upbrsgnmlgotheb-v.vf index 1673db0400..1c2b0be0a9 100644 Binary files a/language/japanese/japanese-otf-uptex/vf/upbrsgnmlgotheb-v.vf and b/language/japanese/japanese-otf-uptex/vf/upbrsgnmlgotheb-v.vf differ diff --git a/language/japanese/japanese-otf-uptex/vf/upbrsgnmlgothebn-h.vf b/language/japanese/japanese-otf-uptex/vf/upbrsgnmlgothebn-h.vf index 3a25013545..158f329e5a 100644 Binary files a/language/japanese/japanese-otf-uptex/vf/upbrsgnmlgothebn-h.vf and b/language/japanese/japanese-otf-uptex/vf/upbrsgnmlgothebn-h.vf differ diff --git a/language/japanese/japanese-otf-uptex/vf/upbrsgnmlgothebn-v.vf b/language/japanese/japanese-otf-uptex/vf/upbrsgnmlgothebn-v.vf index 33165ea87e..531622eca2 100644 Binary files a/language/japanese/japanese-otf-uptex/vf/upbrsgnmlgothebn-v.vf and b/language/japanese/japanese-otf-uptex/vf/upbrsgnmlgothebn-v.vf differ diff --git a/language/japanese/japanese-otf-uptex/vf/upbrsgnmlgothr-h.vf b/language/japanese/japanese-otf-uptex/vf/upbrsgnmlgothr-h.vf index 7e6912d8a0..0670f43683 100644 Binary files a/language/japanese/japanese-otf-uptex/vf/upbrsgnmlgothr-h.vf and b/language/japanese/japanese-otf-uptex/vf/upbrsgnmlgothr-h.vf differ diff --git a/language/japanese/japanese-otf-uptex/vf/upbrsgnmlgothr-v.vf b/language/japanese/japanese-otf-uptex/vf/upbrsgnmlgothr-v.vf index 9a9e412403..5b6269704d 100644 Binary files a/language/japanese/japanese-otf-uptex/vf/upbrsgnmlgothr-v.vf and b/language/japanese/japanese-otf-uptex/vf/upbrsgnmlgothr-v.vf differ diff --git a/language/japanese/japanese-otf-uptex/vf/upbrsgnmlgothrn-h.vf b/language/japanese/japanese-otf-uptex/vf/upbrsgnmlgothrn-h.vf index cf3faa021e..6703dc1aef 100644 Binary files a/language/japanese/japanese-otf-uptex/vf/upbrsgnmlgothrn-h.vf and b/language/japanese/japanese-otf-uptex/vf/upbrsgnmlgothrn-h.vf differ diff --git a/language/japanese/japanese-otf-uptex/vf/upbrsgnmlgothrn-v.vf b/language/japanese/japanese-otf-uptex/vf/upbrsgnmlgothrn-v.vf index 16e17e5717..d9640ebe63 100644 Binary files a/language/japanese/japanese-otf-uptex/vf/upbrsgnmlgothrn-v.vf and b/language/japanese/japanese-otf-uptex/vf/upbrsgnmlgothrn-v.vf differ diff --git a/language/japanese/japanese-otf-uptex/vf/upbrsgnmlmgothr-h.vf b/language/japanese/japanese-otf-uptex/vf/upbrsgnmlmgothr-h.vf index 344067f97e..410f38f8d3 100644 Binary files a/language/japanese/japanese-otf-uptex/vf/upbrsgnmlmgothr-h.vf and b/language/japanese/japanese-otf-uptex/vf/upbrsgnmlmgothr-h.vf differ diff --git a/language/japanese/japanese-otf-uptex/vf/upbrsgnmlmgothr-v.vf b/language/japanese/japanese-otf-uptex/vf/upbrsgnmlmgothr-v.vf index ba83f39064..809c8dd3e2 100644 Binary files a/language/japanese/japanese-otf-uptex/vf/upbrsgnmlmgothr-v.vf and b/language/japanese/japanese-otf-uptex/vf/upbrsgnmlmgothr-v.vf differ diff --git a/language/japanese/japanese-otf-uptex/vf/upbrsgnmlmgothrn-h.vf b/language/japanese/japanese-otf-uptex/vf/upbrsgnmlmgothrn-h.vf index e417042164..1386dc3988 100644 Binary files a/language/japanese/japanese-otf-uptex/vf/upbrsgnmlmgothrn-h.vf and b/language/japanese/japanese-otf-uptex/vf/upbrsgnmlmgothrn-h.vf differ diff --git a/language/japanese/japanese-otf-uptex/vf/upbrsgnmlmgothrn-v.vf b/language/japanese/japanese-otf-uptex/vf/upbrsgnmlmgothrn-v.vf index 8bd0e6cf2a..1fa9ecf0a5 100644 Binary files a/language/japanese/japanese-otf-uptex/vf/upbrsgnmlmgothrn-v.vf and b/language/japanese/japanese-otf-uptex/vf/upbrsgnmlmgothrn-v.vf differ diff --git a/language/japanese/japanese-otf-uptex/vf/upbrsgnmlminb-h.vf b/language/japanese/japanese-otf-uptex/vf/upbrsgnmlminb-h.vf index 33c03d58d9..7eb630cfc5 100644 Binary files a/language/japanese/japanese-otf-uptex/vf/upbrsgnmlminb-h.vf and b/language/japanese/japanese-otf-uptex/vf/upbrsgnmlminb-h.vf differ diff --git a/language/japanese/japanese-otf-uptex/vf/upbrsgnmlminb-v.vf b/language/japanese/japanese-otf-uptex/vf/upbrsgnmlminb-v.vf index 1600bcc99c..cd61226dc2 100644 Binary files a/language/japanese/japanese-otf-uptex/vf/upbrsgnmlminb-v.vf and b/language/japanese/japanese-otf-uptex/vf/upbrsgnmlminb-v.vf differ diff --git a/language/japanese/japanese-otf-uptex/vf/upbrsgnmlminbn-h.vf b/language/japanese/japanese-otf-uptex/vf/upbrsgnmlminbn-h.vf index b849b28f3e..af1a0043ce 100644 Binary files a/language/japanese/japanese-otf-uptex/vf/upbrsgnmlminbn-h.vf and b/language/japanese/japanese-otf-uptex/vf/upbrsgnmlminbn-h.vf differ diff --git a/language/japanese/japanese-otf-uptex/vf/upbrsgnmlminbn-v.vf b/language/japanese/japanese-otf-uptex/vf/upbrsgnmlminbn-v.vf index 3108b70fcc..b9a9e4c7fc 100644 Binary files a/language/japanese/japanese-otf-uptex/vf/upbrsgnmlminbn-v.vf and b/language/japanese/japanese-otf-uptex/vf/upbrsgnmlminbn-v.vf differ diff --git a/language/japanese/japanese-otf-uptex/vf/upbrsgnmlminl-h.vf b/language/japanese/japanese-otf-uptex/vf/upbrsgnmlminl-h.vf index e1441b55f6..1a148bf050 100644 Binary files a/language/japanese/japanese-otf-uptex/vf/upbrsgnmlminl-h.vf and b/language/japanese/japanese-otf-uptex/vf/upbrsgnmlminl-h.vf differ diff --git a/language/japanese/japanese-otf-uptex/vf/upbrsgnmlminl-v.vf b/language/japanese/japanese-otf-uptex/vf/upbrsgnmlminl-v.vf index 825c375cce..075a94aabf 100644 Binary files a/language/japanese/japanese-otf-uptex/vf/upbrsgnmlminl-v.vf and b/language/japanese/japanese-otf-uptex/vf/upbrsgnmlminl-v.vf differ diff --git a/language/japanese/japanese-otf-uptex/vf/upbrsgnmlminln-h.vf b/language/japanese/japanese-otf-uptex/vf/upbrsgnmlminln-h.vf index 8224d54648..79ecb65676 100644 Binary files a/language/japanese/japanese-otf-uptex/vf/upbrsgnmlminln-h.vf and b/language/japanese/japanese-otf-uptex/vf/upbrsgnmlminln-h.vf differ diff --git a/language/japanese/japanese-otf-uptex/vf/upbrsgnmlminln-v.vf b/language/japanese/japanese-otf-uptex/vf/upbrsgnmlminln-v.vf index c0efb1f007..f60a147c7b 100644 Binary files a/language/japanese/japanese-otf-uptex/vf/upbrsgnmlminln-v.vf and b/language/japanese/japanese-otf-uptex/vf/upbrsgnmlminln-v.vf differ diff --git a/language/japanese/japanese-otf-uptex/vf/upbrsgnmlminr-h.vf b/language/japanese/japanese-otf-uptex/vf/upbrsgnmlminr-h.vf index 40a615d071..e9e5d67659 100644 Binary files a/language/japanese/japanese-otf-uptex/vf/upbrsgnmlminr-h.vf and b/language/japanese/japanese-otf-uptex/vf/upbrsgnmlminr-h.vf differ diff --git a/language/japanese/japanese-otf-uptex/vf/upbrsgnmlminr-v.vf b/language/japanese/japanese-otf-uptex/vf/upbrsgnmlminr-v.vf index 92621de7e9..3cbc15decf 100644 Binary files a/language/japanese/japanese-otf-uptex/vf/upbrsgnmlminr-v.vf and b/language/japanese/japanese-otf-uptex/vf/upbrsgnmlminr-v.vf differ diff --git a/language/japanese/japanese-otf-uptex/vf/upbrsgnmlminrn-h.vf b/language/japanese/japanese-otf-uptex/vf/upbrsgnmlminrn-h.vf index b441360a44..7e852897e1 100644 Binary files a/language/japanese/japanese-otf-uptex/vf/upbrsgnmlminrn-h.vf and b/language/japanese/japanese-otf-uptex/vf/upbrsgnmlminrn-h.vf differ diff --git a/language/japanese/japanese-otf-uptex/vf/upbrsgnmlminrn-v.vf b/language/japanese/japanese-otf-uptex/vf/upbrsgnmlminrn-v.vf index 28c9eff499..5441e62baa 100644 Binary files a/language/japanese/japanese-otf-uptex/vf/upbrsgnmlminrn-v.vf and b/language/japanese/japanese-otf-uptex/vf/upbrsgnmlminrn-v.vf differ diff --git a/language/japanese/japanese-otf-uptex/vf/upexpgothb-h.vf b/language/japanese/japanese-otf-uptex/vf/upexpgothb-h.vf index ae9b522525..aa6d896bb3 100644 Binary files a/language/japanese/japanese-otf-uptex/vf/upexpgothb-h.vf and b/language/japanese/japanese-otf-uptex/vf/upexpgothb-h.vf differ diff --git a/language/japanese/japanese-otf-uptex/vf/upexpgothb-v.vf b/language/japanese/japanese-otf-uptex/vf/upexpgothb-v.vf index db537e6912..fe7c1f4533 100644 Binary files a/language/japanese/japanese-otf-uptex/vf/upexpgothb-v.vf and b/language/japanese/japanese-otf-uptex/vf/upexpgothb-v.vf differ diff --git a/language/japanese/japanese-otf-uptex/vf/upexpgothbn-h.vf b/language/japanese/japanese-otf-uptex/vf/upexpgothbn-h.vf index e8f3312bb9..97d88e0c66 100644 Binary files a/language/japanese/japanese-otf-uptex/vf/upexpgothbn-h.vf and b/language/japanese/japanese-otf-uptex/vf/upexpgothbn-h.vf differ diff --git a/language/japanese/japanese-otf-uptex/vf/upexpgothbn-v.vf b/language/japanese/japanese-otf-uptex/vf/upexpgothbn-v.vf index 827bd1f209..2e12822952 100644 Binary files a/language/japanese/japanese-otf-uptex/vf/upexpgothbn-v.vf and b/language/japanese/japanese-otf-uptex/vf/upexpgothbn-v.vf differ diff --git a/language/japanese/japanese-otf-uptex/vf/upexpgotheb-h.vf b/language/japanese/japanese-otf-uptex/vf/upexpgotheb-h.vf index e4b49b164f..c5b429d7a4 100644 Binary files a/language/japanese/japanese-otf-uptex/vf/upexpgotheb-h.vf and b/language/japanese/japanese-otf-uptex/vf/upexpgotheb-h.vf differ diff --git a/language/japanese/japanese-otf-uptex/vf/upexpgotheb-v.vf b/language/japanese/japanese-otf-uptex/vf/upexpgotheb-v.vf index 6a0423e61c..6b09ded11a 100644 Binary files a/language/japanese/japanese-otf-uptex/vf/upexpgotheb-v.vf and b/language/japanese/japanese-otf-uptex/vf/upexpgotheb-v.vf differ diff --git a/language/japanese/japanese-otf-uptex/vf/upexpgothebn-h.vf b/language/japanese/japanese-otf-uptex/vf/upexpgothebn-h.vf index 4a8d0f3fba..4d8ea91f71 100644 Binary files a/language/japanese/japanese-otf-uptex/vf/upexpgothebn-h.vf and b/language/japanese/japanese-otf-uptex/vf/upexpgothebn-h.vf differ diff --git a/language/japanese/japanese-otf-uptex/vf/upexpgothebn-v.vf b/language/japanese/japanese-otf-uptex/vf/upexpgothebn-v.vf index 76dfcb16e6..a7da2d8589 100644 Binary files a/language/japanese/japanese-otf-uptex/vf/upexpgothebn-v.vf and b/language/japanese/japanese-otf-uptex/vf/upexpgothebn-v.vf differ diff --git a/language/japanese/japanese-otf-uptex/vf/upexpgothr-h.vf b/language/japanese/japanese-otf-uptex/vf/upexpgothr-h.vf index 6d96c0cf4d..7c54f2a656 100644 Binary files a/language/japanese/japanese-otf-uptex/vf/upexpgothr-h.vf and b/language/japanese/japanese-otf-uptex/vf/upexpgothr-h.vf differ diff --git a/language/japanese/japanese-otf-uptex/vf/upexpgothr-v.vf b/language/japanese/japanese-otf-uptex/vf/upexpgothr-v.vf index a95c167f0b..c65012f864 100644 Binary files a/language/japanese/japanese-otf-uptex/vf/upexpgothr-v.vf and b/language/japanese/japanese-otf-uptex/vf/upexpgothr-v.vf differ diff --git a/language/japanese/japanese-otf-uptex/vf/upexpgothrn-h.vf b/language/japanese/japanese-otf-uptex/vf/upexpgothrn-h.vf index 1f30951c3e..b67025af59 100644 Binary files a/language/japanese/japanese-otf-uptex/vf/upexpgothrn-h.vf and b/language/japanese/japanese-otf-uptex/vf/upexpgothrn-h.vf differ diff --git a/language/japanese/japanese-otf-uptex/vf/upexpgothrn-v.vf b/language/japanese/japanese-otf-uptex/vf/upexpgothrn-v.vf index a3cb0531a0..823d9a3d71 100644 Binary files a/language/japanese/japanese-otf-uptex/vf/upexpgothrn-v.vf and b/language/japanese/japanese-otf-uptex/vf/upexpgothrn-v.vf differ diff --git a/language/japanese/japanese-otf-uptex/vf/upexpmgothr-h.vf b/language/japanese/japanese-otf-uptex/vf/upexpmgothr-h.vf index f371b65830..f99ec667fb 100644 Binary files a/language/japanese/japanese-otf-uptex/vf/upexpmgothr-h.vf and b/language/japanese/japanese-otf-uptex/vf/upexpmgothr-h.vf differ diff --git a/language/japanese/japanese-otf-uptex/vf/upexpmgothr-v.vf b/language/japanese/japanese-otf-uptex/vf/upexpmgothr-v.vf index 48f0831e61..1715516fda 100644 Binary files a/language/japanese/japanese-otf-uptex/vf/upexpmgothr-v.vf and b/language/japanese/japanese-otf-uptex/vf/upexpmgothr-v.vf differ diff --git a/language/japanese/japanese-otf-uptex/vf/upexpmgothrn-h.vf b/language/japanese/japanese-otf-uptex/vf/upexpmgothrn-h.vf index 38f94d507d..03c79ed3fb 100644 Binary files a/language/japanese/japanese-otf-uptex/vf/upexpmgothrn-h.vf and b/language/japanese/japanese-otf-uptex/vf/upexpmgothrn-h.vf differ diff --git a/language/japanese/japanese-otf-uptex/vf/upexpmgothrn-v.vf b/language/japanese/japanese-otf-uptex/vf/upexpmgothrn-v.vf index 132269e782..cc017c3da1 100644 Binary files a/language/japanese/japanese-otf-uptex/vf/upexpmgothrn-v.vf and b/language/japanese/japanese-otf-uptex/vf/upexpmgothrn-v.vf differ diff --git a/language/japanese/japanese-otf-uptex/vf/upexpminb-h.vf b/language/japanese/japanese-otf-uptex/vf/upexpminb-h.vf index db137a8311..2f2b6ba07f 100644 Binary files a/language/japanese/japanese-otf-uptex/vf/upexpminb-h.vf and b/language/japanese/japanese-otf-uptex/vf/upexpminb-h.vf differ diff --git a/language/japanese/japanese-otf-uptex/vf/upexpminb-v.vf b/language/japanese/japanese-otf-uptex/vf/upexpminb-v.vf index 57a196ff61..12e3dfc4e6 100644 Binary files a/language/japanese/japanese-otf-uptex/vf/upexpminb-v.vf and b/language/japanese/japanese-otf-uptex/vf/upexpminb-v.vf differ diff --git a/language/japanese/japanese-otf-uptex/vf/upexpminbn-h.vf b/language/japanese/japanese-otf-uptex/vf/upexpminbn-h.vf index 240d6bbe8c..ec31dabd77 100644 Binary files a/language/japanese/japanese-otf-uptex/vf/upexpminbn-h.vf and b/language/japanese/japanese-otf-uptex/vf/upexpminbn-h.vf differ diff --git a/language/japanese/japanese-otf-uptex/vf/upexpminbn-v.vf b/language/japanese/japanese-otf-uptex/vf/upexpminbn-v.vf index bcfd945082..19b3db7c7d 100644 Binary files a/language/japanese/japanese-otf-uptex/vf/upexpminbn-v.vf and b/language/japanese/japanese-otf-uptex/vf/upexpminbn-v.vf differ diff --git a/language/japanese/japanese-otf-uptex/vf/upexpminl-h.vf b/language/japanese/japanese-otf-uptex/vf/upexpminl-h.vf index fd06ef8c8b..4323703caf 100644 Binary files a/language/japanese/japanese-otf-uptex/vf/upexpminl-h.vf and b/language/japanese/japanese-otf-uptex/vf/upexpminl-h.vf differ diff --git a/language/japanese/japanese-otf-uptex/vf/upexpminl-v.vf b/language/japanese/japanese-otf-uptex/vf/upexpminl-v.vf index 8a4a40f2d8..8b1b1ba38f 100644 Binary files a/language/japanese/japanese-otf-uptex/vf/upexpminl-v.vf and b/language/japanese/japanese-otf-uptex/vf/upexpminl-v.vf differ diff --git a/language/japanese/japanese-otf-uptex/vf/upexpminln-h.vf b/language/japanese/japanese-otf-uptex/vf/upexpminln-h.vf index 3d1a738a14..e6ebb66b05 100644 Binary files a/language/japanese/japanese-otf-uptex/vf/upexpminln-h.vf and b/language/japanese/japanese-otf-uptex/vf/upexpminln-h.vf differ diff --git a/language/japanese/japanese-otf-uptex/vf/upexpminln-v.vf b/language/japanese/japanese-otf-uptex/vf/upexpminln-v.vf index 08a17589f4..1db691e689 100644 Binary files a/language/japanese/japanese-otf-uptex/vf/upexpminln-v.vf and b/language/japanese/japanese-otf-uptex/vf/upexpminln-v.vf differ diff --git a/language/japanese/japanese-otf-uptex/vf/upexpminr-h.vf b/language/japanese/japanese-otf-uptex/vf/upexpminr-h.vf index bd5bd3dd89..b956ae7073 100644 Binary files a/language/japanese/japanese-otf-uptex/vf/upexpminr-h.vf and b/language/japanese/japanese-otf-uptex/vf/upexpminr-h.vf differ diff --git a/language/japanese/japanese-otf-uptex/vf/upexpminr-v.vf b/language/japanese/japanese-otf-uptex/vf/upexpminr-v.vf index 02215b19ee..1245e31889 100644 Binary files a/language/japanese/japanese-otf-uptex/vf/upexpminr-v.vf and b/language/japanese/japanese-otf-uptex/vf/upexpminr-v.vf differ diff --git a/language/japanese/japanese-otf-uptex/vf/upexpminrn-h.vf b/language/japanese/japanese-otf-uptex/vf/upexpminrn-h.vf index 253ce751c3..18c95052c2 100644 Binary files a/language/japanese/japanese-otf-uptex/vf/upexpminrn-h.vf and b/language/japanese/japanese-otf-uptex/vf/upexpminrn-h.vf differ diff --git a/language/japanese/japanese-otf-uptex/vf/upexpminrn-v.vf b/language/japanese/japanese-otf-uptex/vf/upexpminrn-v.vf index b21059c5cc..fb455a11a5 100644 Binary files a/language/japanese/japanese-otf-uptex/vf/upexpminrn-v.vf and b/language/japanese/japanese-otf-uptex/vf/upexpminrn-v.vf differ diff --git a/language/japanese/japanese-otf-uptex/vf/upnmlgothb-h.vf b/language/japanese/japanese-otf-uptex/vf/upnmlgothb-h.vf index ccbf0a2952..a5781acd0f 100644 Binary files a/language/japanese/japanese-otf-uptex/vf/upnmlgothb-h.vf and b/language/japanese/japanese-otf-uptex/vf/upnmlgothb-h.vf differ diff --git a/language/japanese/japanese-otf-uptex/vf/upnmlgothb-v.vf b/language/japanese/japanese-otf-uptex/vf/upnmlgothb-v.vf index d8cc083104..ba2b280bec 100644 Binary files a/language/japanese/japanese-otf-uptex/vf/upnmlgothb-v.vf and b/language/japanese/japanese-otf-uptex/vf/upnmlgothb-v.vf differ diff --git a/language/japanese/japanese-otf-uptex/vf/upnmlgothbn-h.vf b/language/japanese/japanese-otf-uptex/vf/upnmlgothbn-h.vf index e36022e686..0084a01481 100644 Binary files a/language/japanese/japanese-otf-uptex/vf/upnmlgothbn-h.vf and b/language/japanese/japanese-otf-uptex/vf/upnmlgothbn-h.vf differ diff --git a/language/japanese/japanese-otf-uptex/vf/upnmlgothbn-v.vf b/language/japanese/japanese-otf-uptex/vf/upnmlgothbn-v.vf index 01a4d7d6df..98ce4bd20a 100644 Binary files a/language/japanese/japanese-otf-uptex/vf/upnmlgothbn-v.vf and b/language/japanese/japanese-otf-uptex/vf/upnmlgothbn-v.vf differ diff --git a/language/japanese/japanese-otf-uptex/vf/upnmlgotheb-h.vf b/language/japanese/japanese-otf-uptex/vf/upnmlgotheb-h.vf index 8eeddf0eb6..59d14920fd 100644 Binary files a/language/japanese/japanese-otf-uptex/vf/upnmlgotheb-h.vf and b/language/japanese/japanese-otf-uptex/vf/upnmlgotheb-h.vf differ diff --git a/language/japanese/japanese-otf-uptex/vf/upnmlgotheb-v.vf b/language/japanese/japanese-otf-uptex/vf/upnmlgotheb-v.vf index e05254d3ed..45159fc605 100644 Binary files a/language/japanese/japanese-otf-uptex/vf/upnmlgotheb-v.vf and b/language/japanese/japanese-otf-uptex/vf/upnmlgotheb-v.vf differ diff --git a/language/japanese/japanese-otf-uptex/vf/upnmlgothebn-h.vf b/language/japanese/japanese-otf-uptex/vf/upnmlgothebn-h.vf index e1080967c0..89ad1d0d8d 100644 Binary files a/language/japanese/japanese-otf-uptex/vf/upnmlgothebn-h.vf and b/language/japanese/japanese-otf-uptex/vf/upnmlgothebn-h.vf differ diff --git a/language/japanese/japanese-otf-uptex/vf/upnmlgothebn-v.vf b/language/japanese/japanese-otf-uptex/vf/upnmlgothebn-v.vf index f7af5d25a7..faebc355aa 100644 Binary files a/language/japanese/japanese-otf-uptex/vf/upnmlgothebn-v.vf and b/language/japanese/japanese-otf-uptex/vf/upnmlgothebn-v.vf differ diff --git a/language/japanese/japanese-otf-uptex/vf/upnmlgothr-h.vf b/language/japanese/japanese-otf-uptex/vf/upnmlgothr-h.vf index 94a5f6af10..3ff7fb00db 100644 Binary files a/language/japanese/japanese-otf-uptex/vf/upnmlgothr-h.vf and b/language/japanese/japanese-otf-uptex/vf/upnmlgothr-h.vf differ diff --git a/language/japanese/japanese-otf-uptex/vf/upnmlgothr-v.vf b/language/japanese/japanese-otf-uptex/vf/upnmlgothr-v.vf index cb1c32ed18..70570b4816 100644 Binary files a/language/japanese/japanese-otf-uptex/vf/upnmlgothr-v.vf and b/language/japanese/japanese-otf-uptex/vf/upnmlgothr-v.vf differ diff --git a/language/japanese/japanese-otf-uptex/vf/upnmlgothrn-h.vf b/language/japanese/japanese-otf-uptex/vf/upnmlgothrn-h.vf index ce7079e2b5..4f1868d5b5 100644 Binary files a/language/japanese/japanese-otf-uptex/vf/upnmlgothrn-h.vf and b/language/japanese/japanese-otf-uptex/vf/upnmlgothrn-h.vf differ diff --git a/language/japanese/japanese-otf-uptex/vf/upnmlgothrn-v.vf b/language/japanese/japanese-otf-uptex/vf/upnmlgothrn-v.vf index c558e33797..90874681ca 100644 Binary files a/language/japanese/japanese-otf-uptex/vf/upnmlgothrn-v.vf and b/language/japanese/japanese-otf-uptex/vf/upnmlgothrn-v.vf differ diff --git a/language/japanese/japanese-otf-uptex/vf/upnmlmgothr-h.vf b/language/japanese/japanese-otf-uptex/vf/upnmlmgothr-h.vf index 8423206b9d..4ac9b03745 100644 Binary files a/language/japanese/japanese-otf-uptex/vf/upnmlmgothr-h.vf and b/language/japanese/japanese-otf-uptex/vf/upnmlmgothr-h.vf differ diff --git a/language/japanese/japanese-otf-uptex/vf/upnmlmgothr-v.vf b/language/japanese/japanese-otf-uptex/vf/upnmlmgothr-v.vf index 3687569107..ce6e080a89 100644 Binary files a/language/japanese/japanese-otf-uptex/vf/upnmlmgothr-v.vf and b/language/japanese/japanese-otf-uptex/vf/upnmlmgothr-v.vf differ diff --git a/language/japanese/japanese-otf-uptex/vf/upnmlmgothrn-h.vf b/language/japanese/japanese-otf-uptex/vf/upnmlmgothrn-h.vf index c8448d2271..c4b111b6f9 100644 Binary files a/language/japanese/japanese-otf-uptex/vf/upnmlmgothrn-h.vf and b/language/japanese/japanese-otf-uptex/vf/upnmlmgothrn-h.vf differ diff --git a/language/japanese/japanese-otf-uptex/vf/upnmlmgothrn-v.vf b/language/japanese/japanese-otf-uptex/vf/upnmlmgothrn-v.vf index 328561dca5..1921de3f87 100644 Binary files a/language/japanese/japanese-otf-uptex/vf/upnmlmgothrn-v.vf and b/language/japanese/japanese-otf-uptex/vf/upnmlmgothrn-v.vf differ diff --git a/language/japanese/japanese-otf-uptex/vf/upnmlminb-h.vf b/language/japanese/japanese-otf-uptex/vf/upnmlminb-h.vf index e642e771ea..b393789b18 100644 Binary files a/language/japanese/japanese-otf-uptex/vf/upnmlminb-h.vf and b/language/japanese/japanese-otf-uptex/vf/upnmlminb-h.vf differ diff --git a/language/japanese/japanese-otf-uptex/vf/upnmlminb-v.vf b/language/japanese/japanese-otf-uptex/vf/upnmlminb-v.vf index d42e498ae6..bab92c9778 100644 Binary files a/language/japanese/japanese-otf-uptex/vf/upnmlminb-v.vf and b/language/japanese/japanese-otf-uptex/vf/upnmlminb-v.vf differ diff --git a/language/japanese/japanese-otf-uptex/vf/upnmlminbn-h.vf b/language/japanese/japanese-otf-uptex/vf/upnmlminbn-h.vf index 33f5965d08..e97d138fa9 100644 Binary files a/language/japanese/japanese-otf-uptex/vf/upnmlminbn-h.vf and b/language/japanese/japanese-otf-uptex/vf/upnmlminbn-h.vf differ diff --git a/language/japanese/japanese-otf-uptex/vf/upnmlminbn-v.vf b/language/japanese/japanese-otf-uptex/vf/upnmlminbn-v.vf index fc4116d524..2f9bf3f4aa 100644 Binary files a/language/japanese/japanese-otf-uptex/vf/upnmlminbn-v.vf and b/language/japanese/japanese-otf-uptex/vf/upnmlminbn-v.vf differ diff --git a/language/japanese/japanese-otf-uptex/vf/upnmlminl-h.vf b/language/japanese/japanese-otf-uptex/vf/upnmlminl-h.vf index f7fda64fe0..9c9e014075 100644 Binary files a/language/japanese/japanese-otf-uptex/vf/upnmlminl-h.vf and b/language/japanese/japanese-otf-uptex/vf/upnmlminl-h.vf differ diff --git a/language/japanese/japanese-otf-uptex/vf/upnmlminl-v.vf b/language/japanese/japanese-otf-uptex/vf/upnmlminl-v.vf index e5fa1b6d4b..b6523316e6 100644 Binary files a/language/japanese/japanese-otf-uptex/vf/upnmlminl-v.vf and b/language/japanese/japanese-otf-uptex/vf/upnmlminl-v.vf differ diff --git a/language/japanese/japanese-otf-uptex/vf/upnmlminln-h.vf b/language/japanese/japanese-otf-uptex/vf/upnmlminln-h.vf index 364a40e0fe..55374728d7 100644 Binary files a/language/japanese/japanese-otf-uptex/vf/upnmlminln-h.vf and b/language/japanese/japanese-otf-uptex/vf/upnmlminln-h.vf differ diff --git a/language/japanese/japanese-otf-uptex/vf/upnmlminln-v.vf b/language/japanese/japanese-otf-uptex/vf/upnmlminln-v.vf index 695c03e12e..cdf4b64eb8 100644 Binary files a/language/japanese/japanese-otf-uptex/vf/upnmlminln-v.vf and b/language/japanese/japanese-otf-uptex/vf/upnmlminln-v.vf differ diff --git a/language/japanese/japanese-otf-uptex/vf/upnmlminr-h.vf b/language/japanese/japanese-otf-uptex/vf/upnmlminr-h.vf index d61f16de3f..9c36f040b7 100644 Binary files a/language/japanese/japanese-otf-uptex/vf/upnmlminr-h.vf and b/language/japanese/japanese-otf-uptex/vf/upnmlminr-h.vf differ diff --git a/language/japanese/japanese-otf-uptex/vf/upnmlminr-v.vf b/language/japanese/japanese-otf-uptex/vf/upnmlminr-v.vf index 4a4f49e429..f5322eb1b1 100644 Binary files a/language/japanese/japanese-otf-uptex/vf/upnmlminr-v.vf and b/language/japanese/japanese-otf-uptex/vf/upnmlminr-v.vf differ diff --git a/language/japanese/japanese-otf-uptex/vf/upnmlminrn-h.vf b/language/japanese/japanese-otf-uptex/vf/upnmlminrn-h.vf index 79bc686397..c7989f92f7 100644 Binary files a/language/japanese/japanese-otf-uptex/vf/upnmlminrn-h.vf and b/language/japanese/japanese-otf-uptex/vf/upnmlminrn-h.vf differ diff --git a/language/japanese/japanese-otf-uptex/vf/upnmlminrn-v.vf b/language/japanese/japanese-otf-uptex/vf/upnmlminrn-v.vf index 82dad5a04c..08778a48d4 100644 Binary files a/language/japanese/japanese-otf-uptex/vf/upnmlminrn-v.vf and b/language/japanese/japanese-otf-uptex/vf/upnmlminrn-v.vf differ diff --git a/language/japanese/japanese-otf-uptex/vf/uprubygothb-h.vf b/language/japanese/japanese-otf-uptex/vf/uprubygothb-h.vf index 12a7b96898..ea0eb96afa 100644 Binary files a/language/japanese/japanese-otf-uptex/vf/uprubygothb-h.vf and b/language/japanese/japanese-otf-uptex/vf/uprubygothb-h.vf differ diff --git a/language/japanese/japanese-otf-uptex/vf/uprubygothb-v.vf b/language/japanese/japanese-otf-uptex/vf/uprubygothb-v.vf index c87dbdd1c2..b92b253316 100644 Binary files a/language/japanese/japanese-otf-uptex/vf/uprubygothb-v.vf and b/language/japanese/japanese-otf-uptex/vf/uprubygothb-v.vf differ diff --git a/language/japanese/japanese-otf-uptex/vf/uprubygotheb-h.vf b/language/japanese/japanese-otf-uptex/vf/uprubygotheb-h.vf index 2e665d5687..0c0deb3465 100644 Binary files a/language/japanese/japanese-otf-uptex/vf/uprubygotheb-h.vf and b/language/japanese/japanese-otf-uptex/vf/uprubygotheb-h.vf differ diff --git a/language/japanese/japanese-otf-uptex/vf/uprubygotheb-v.vf b/language/japanese/japanese-otf-uptex/vf/uprubygotheb-v.vf index 02edea5501..46207c67bf 100644 Binary files a/language/japanese/japanese-otf-uptex/vf/uprubygotheb-v.vf and b/language/japanese/japanese-otf-uptex/vf/uprubygotheb-v.vf differ diff --git a/language/japanese/japanese-otf-uptex/vf/uprubygothr-h.vf b/language/japanese/japanese-otf-uptex/vf/uprubygothr-h.vf index 181dacc8ca..3f20ccd428 100644 Binary files a/language/japanese/japanese-otf-uptex/vf/uprubygothr-h.vf and b/language/japanese/japanese-otf-uptex/vf/uprubygothr-h.vf differ diff --git a/language/japanese/japanese-otf-uptex/vf/uprubygothr-v.vf b/language/japanese/japanese-otf-uptex/vf/uprubygothr-v.vf index 453577b7fa..2ab799b317 100644 Binary files a/language/japanese/japanese-otf-uptex/vf/uprubygothr-v.vf and b/language/japanese/japanese-otf-uptex/vf/uprubygothr-v.vf differ diff --git a/language/japanese/japanese-otf-uptex/vf/uprubymgothr-h.vf b/language/japanese/japanese-otf-uptex/vf/uprubymgothr-h.vf index 77cfe8497d..7e2bd9027f 100644 Binary files a/language/japanese/japanese-otf-uptex/vf/uprubymgothr-h.vf and b/language/japanese/japanese-otf-uptex/vf/uprubymgothr-h.vf differ diff --git a/language/japanese/japanese-otf-uptex/vf/uprubymgothr-v.vf b/language/japanese/japanese-otf-uptex/vf/uprubymgothr-v.vf index 53bcda14b6..bfc4edf805 100644 Binary files a/language/japanese/japanese-otf-uptex/vf/uprubymgothr-v.vf and b/language/japanese/japanese-otf-uptex/vf/uprubymgothr-v.vf differ diff --git a/language/japanese/japanese-otf-uptex/vf/uprubyminb-h.vf b/language/japanese/japanese-otf-uptex/vf/uprubyminb-h.vf index b082fc5d0b..82e6a4bda4 100644 Binary files a/language/japanese/japanese-otf-uptex/vf/uprubyminb-h.vf and b/language/japanese/japanese-otf-uptex/vf/uprubyminb-h.vf differ diff --git a/language/japanese/japanese-otf-uptex/vf/uprubyminb-v.vf b/language/japanese/japanese-otf-uptex/vf/uprubyminb-v.vf index 80f0a382e7..5ce32fcf18 100644 Binary files a/language/japanese/japanese-otf-uptex/vf/uprubyminb-v.vf and b/language/japanese/japanese-otf-uptex/vf/uprubyminb-v.vf differ diff --git a/language/japanese/japanese-otf-uptex/vf/uprubyminl-h.vf b/language/japanese/japanese-otf-uptex/vf/uprubyminl-h.vf index cad297e3f6..fe4478d868 100644 Binary files a/language/japanese/japanese-otf-uptex/vf/uprubyminl-h.vf and b/language/japanese/japanese-otf-uptex/vf/uprubyminl-h.vf differ diff --git a/language/japanese/japanese-otf-uptex/vf/uprubyminl-v.vf b/language/japanese/japanese-otf-uptex/vf/uprubyminl-v.vf index 6e8b69b956..b33e0c9cc4 100644 Binary files a/language/japanese/japanese-otf-uptex/vf/uprubyminl-v.vf and b/language/japanese/japanese-otf-uptex/vf/uprubyminl-v.vf differ diff --git a/language/japanese/japanese-otf-uptex/vf/uprubyminr-h.vf b/language/japanese/japanese-otf-uptex/vf/uprubyminr-h.vf index eaedf971ff..10e9cb6541 100644 Binary files a/language/japanese/japanese-otf-uptex/vf/uprubyminr-h.vf and b/language/japanese/japanese-otf-uptex/vf/uprubyminr-h.vf differ diff --git a/language/japanese/japanese-otf-uptex/vf/uprubyminr-v.vf b/language/japanese/japanese-otf-uptex/vf/uprubyminr-v.vf index 7272613104..be216feb04 100644 Binary files a/language/japanese/japanese-otf-uptex/vf/uprubyminr-v.vf and b/language/japanese/japanese-otf-uptex/vf/uprubyminr-v.vf differ diff --git a/language/japanese/japanese-otf-uptex/vf/utfgrj-h.vf b/language/japanese/japanese-otf-uptex/vf/utfgrj-h.vf index 2456e34946..b7669663f0 100644 Binary files a/language/japanese/japanese-otf-uptex/vf/utfgrj-h.vf and b/language/japanese/japanese-otf-uptex/vf/utfgrj-h.vf differ diff --git a/language/japanese/japanese-otf-uptex/vf/utfgrj-v.vf b/language/japanese/japanese-otf-uptex/vf/utfgrj-v.vf index 61234a1974..7b805f3c14 100644 Binary files a/language/japanese/japanese-otf-uptex/vf/utfgrj-v.vf and b/language/japanese/japanese-otf-uptex/vf/utfgrj-v.vf differ diff --git a/language/japanese/japanese-otf-uptex/vf/utfjgbj-h.vf b/language/japanese/japanese-otf-uptex/vf/utfjgbj-h.vf index 90bd3a0fa4..fdce2f0df0 100644 Binary files a/language/japanese/japanese-otf-uptex/vf/utfjgbj-h.vf and b/language/japanese/japanese-otf-uptex/vf/utfjgbj-h.vf differ diff --git a/language/japanese/japanese-otf-uptex/vf/utfjgbj-v.vf b/language/japanese/japanese-otf-uptex/vf/utfjgbj-v.vf index 739e3531f3..32a77dffba 100644 Binary files a/language/japanese/japanese-otf-uptex/vf/utfjgbj-v.vf and b/language/japanese/japanese-otf-uptex/vf/utfjgbj-v.vf differ diff --git a/language/japanese/japanese-otf-uptex/vf/utfjgej-h.vf b/language/japanese/japanese-otf-uptex/vf/utfjgej-h.vf index 9b43d009ee..4ed5b1a02e 100644 Binary files a/language/japanese/japanese-otf-uptex/vf/utfjgej-h.vf and b/language/japanese/japanese-otf-uptex/vf/utfjgej-h.vf differ diff --git a/language/japanese/japanese-otf-uptex/vf/utfjgej-v.vf b/language/japanese/japanese-otf-uptex/vf/utfjgej-v.vf index ec29536dc5..3506c3e63e 100644 Binary files a/language/japanese/japanese-otf-uptex/vf/utfjgej-v.vf and b/language/japanese/japanese-otf-uptex/vf/utfjgej-v.vf differ diff --git a/language/japanese/japanese-otf-uptex/vf/utfjgrj-h.vf b/language/japanese/japanese-otf-uptex/vf/utfjgrj-h.vf index 2456e34946..b7669663f0 100644 Binary files a/language/japanese/japanese-otf-uptex/vf/utfjgrj-h.vf and b/language/japanese/japanese-otf-uptex/vf/utfjgrj-h.vf differ diff --git a/language/japanese/japanese-otf-uptex/vf/utfjgrj-v.vf b/language/japanese/japanese-otf-uptex/vf/utfjgrj-v.vf index 61234a1974..7b805f3c14 100644 Binary files a/language/japanese/japanese-otf-uptex/vf/utfjgrj-v.vf and b/language/japanese/japanese-otf-uptex/vf/utfjgrj-v.vf differ diff --git a/language/japanese/japanese-otf-uptex/vf/utfjmbj-h.vf b/language/japanese/japanese-otf-uptex/vf/utfjmbj-h.vf index 3b0e2e4a33..e2e442352c 100644 Binary files a/language/japanese/japanese-otf-uptex/vf/utfjmbj-h.vf and b/language/japanese/japanese-otf-uptex/vf/utfjmbj-h.vf differ diff --git a/language/japanese/japanese-otf-uptex/vf/utfjmbj-v.vf b/language/japanese/japanese-otf-uptex/vf/utfjmbj-v.vf index 0f2208ed50..81dfd03381 100644 Binary files a/language/japanese/japanese-otf-uptex/vf/utfjmbj-v.vf and b/language/japanese/japanese-otf-uptex/vf/utfjmbj-v.vf differ diff --git a/language/japanese/japanese-otf-uptex/vf/utfjmgrj-h.vf b/language/japanese/japanese-otf-uptex/vf/utfjmgrj-h.vf index 93116ce704..f06dcafdf4 100644 Binary files a/language/japanese/japanese-otf-uptex/vf/utfjmgrj-h.vf and b/language/japanese/japanese-otf-uptex/vf/utfjmgrj-h.vf differ diff --git a/language/japanese/japanese-otf-uptex/vf/utfjmgrj-v.vf b/language/japanese/japanese-otf-uptex/vf/utfjmgrj-v.vf index 97031da703..7c0e317db5 100644 Binary files a/language/japanese/japanese-otf-uptex/vf/utfjmgrj-v.vf and b/language/japanese/japanese-otf-uptex/vf/utfjmgrj-v.vf differ diff --git a/language/japanese/japanese-otf-uptex/vf/utfjmlj-h.vf b/language/japanese/japanese-otf-uptex/vf/utfjmlj-h.vf index 386d6c310a..80a43ba307 100644 Binary files a/language/japanese/japanese-otf-uptex/vf/utfjmlj-h.vf and b/language/japanese/japanese-otf-uptex/vf/utfjmlj-h.vf differ diff --git a/language/japanese/japanese-otf-uptex/vf/utfjmlj-v.vf b/language/japanese/japanese-otf-uptex/vf/utfjmlj-v.vf index fa1de2cde5..00f8241197 100644 Binary files a/language/japanese/japanese-otf-uptex/vf/utfjmlj-v.vf and b/language/japanese/japanese-otf-uptex/vf/utfjmlj-v.vf differ diff --git a/language/japanese/japanese-otf-uptex/vf/utfjmrj-h.vf b/language/japanese/japanese-otf-uptex/vf/utfjmrj-h.vf index 61a2db2b03..6f4b9a0e3b 100644 Binary files a/language/japanese/japanese-otf-uptex/vf/utfjmrj-h.vf and b/language/japanese/japanese-otf-uptex/vf/utfjmrj-h.vf differ diff --git a/language/japanese/japanese-otf-uptex/vf/utfjmrj-v.vf b/language/japanese/japanese-otf-uptex/vf/utfjmrj-v.vf index 717795c3fa..3618981b8a 100644 Binary files a/language/japanese/japanese-otf-uptex/vf/utfjmrj-v.vf and b/language/japanese/japanese-otf-uptex/vf/utfjmrj-v.vf differ diff --git a/language/japanese/japanese-otf-uptex/vf/utfmrj-h.vf b/language/japanese/japanese-otf-uptex/vf/utfmrj-h.vf index 61a2db2b03..6f4b9a0e3b 100644 Binary files a/language/japanese/japanese-otf-uptex/vf/utfmrj-h.vf and b/language/japanese/japanese-otf-uptex/vf/utfmrj-h.vf differ diff --git a/language/japanese/japanese-otf-uptex/vf/utfmrj-v.vf b/language/japanese/japanese-otf-uptex/vf/utfmrj-v.vf index 717795c3fa..3618981b8a 100644 Binary files a/language/japanese/japanese-otf-uptex/vf/utfmrj-v.vf and b/language/japanese/japanese-otf-uptex/vf/utfmrj-v.vf differ diff --git a/language/japanese/ptex/COPYRIGHT b/language/japanese/ptex/COPYRIGHT deleted file mode 100644 index 336e241dce..0000000000 --- a/language/japanese/ptex/COPYRIGHT +++ /dev/null @@ -1,25 +0,0 @@ -Copyright (C) 1987, 1995 ASCII Corporation. -All rights reserved. - -Redistribution and use in source and binary forms, with or without -modification, are permitted provided that the following conditions -are met: - -1. Redistributions of source code must retain the above copyright - notice, this list of conditions and the following disclaimer. -2. Redistributions in binary form must reproduce the above copyright - notice, this list of conditions and the following disclaimer in the - documentation and/or other materials provided with the distribution. -3. Neither the name of the author may be used to endorse or promote products - derived from this software without specific prior written permission. - -THIS SOFTWARE IS PROVIDED BY THE AUTHOR ``AS IS'' AND ANY EXPRESS OR -IMPLIED WARRANTIES, INCLUDING, BUT NOT LIMITED TO, THE IMPLIED WARRANTIES -OF MERCHANTABILITY AND FITNESS FOR A PARTICULAR PURPOSE ARE DISCLAIMED. -IN NO EVENT SHALL THE AUTHOR BE LIABLE FOR ANY DIRECT, INDIRECT, -INCIDENTAL, SPECIAL, EXEMPLARY, OR CONSEQUENTIAL DAMAGES (INCLUDING, BUT -NOT LIMITED TO, PROCUREMENT OF SUBSTITUTE GOODS OR SERVICES; LOSS OF USE, -DATA, OR PROFITS; OR BUSINESS INTERRUPTION) HOWEVER CAUSED AND ON ANY -THEORY OF LIABILITY, WHETHER IN CONTRACT, STRICT LIABILITY, OR TORT -(INCLUDING NEGLIGENCE OR OTHERWISE) ARISING IN ANY WAY OUT OF THE USE OF -THIS SOFTWARE, EVEN IF ADVISED OF THE POSSIBILITY OF SUCH DAMAGE. diff --git a/language/japanese/ptex/COPYRIGHT.jis b/language/japanese/ptex/COPYRIGHT.jis deleted file mode 100644 index 303299130f..0000000000 --- a/language/japanese/ptex/COPYRIGHT.jis +++ /dev/null @@ -1,32 +0,0 @@ -($BCm(B) $B0J2<$O!"1QJ8$N7@Ls>r9`$rF|K\8l$KK]Lu$7$?$b$N$G$"$k!#F|K\8lLu$H1Q(B -$B8lI=5-$N4V$Ksrsw$,$"$C$?>l9g$K$O!"7@Ls>r7o$O1Q8lI=5-$K$h$k7@Ls>r9`$K=>(B -$B$&!#(B - -$B!ZCx:n8"I=<(![(B -Copyright (C) 1987, 1995 ASCII Corporation. -All rights reserved. - -$B!Z7@Ls>r7o![(B -$B2~JQ$NM-L5$K$+$+$o$i$:!"K\%=%U%H%&%'%"$N%=!<%9%3!<%I5Z$S%P%$%J%j!<%3!<(B -$B%I7A<0$K$h$k:FHRI[5Z$S;HMQ$O!"r7o$N2<$K5vBz$5$l$k!#(B -1. $B%=!<%9%3!<%I$N:FHRI[$K:]$7$F$O!">e5-$N!ZCx:n8"I=<(![!"$3$N!Z7@Ls>r(B - $B7o![5Z$Sr9`![$NI=5-$r!"0z$-B3$-0];}$7$FL@5-$7$J$1$l$P$J(B - $B$i$J$$!#(B -2. $B%P%$%J%j!<7A<0$K$h$k:FHRI[$K:]$7$F$O!">e5-$N!ZCx:n8"I=<(![!"$3$N(B - $B!Z7@Ls>r7o![5Z$Sr9`![$r!":FHRI[$K:]$7Ds6!$9$k@bL@=q5Z$S(B - $B$=$NB>$N4XO";qNA$K2~$a$FL@5-$7$J$1$l$P$J$i$J$$!#(B -3. $BFCJL$J;vA0$N=qLL$K$h$k5vBz$,$J$$8B$j!"K\%=%U%H%&%'%"$+$iGI@8$7$?@=(B - $BIJ$r?d>)Kt$O@kEA$9$k$?$a$K!"Cx:n8"$O;HMQ$7$F$O$J$i$J$$!#(B - -$B!ZLH@U>r9`![(B -$BK\%=%U%H%&%'%"$O!"Cx:n8"uM-;Q$N$^$^!J$=$N$^$^$N7A$G!K!W(B -$BDs6!$5$l$k$b$N$G$"$j!">&IJ@-Kt$OFCDjL\E*$X$NE,9g@-$K4X$9$kL[<(E*J]>Z$J(B -$B$I!"L@<(Kt$OL[<($NJ]>Z$rLd$o$:!"$$$+$J$kJ]>Z$r$b9T$&$b$N$G$O$J$$!#(B -$B$$$+$J$kM}M3$K$h$C$F$b!"$^$?!"7@Ls@UG$!"873J@UG$Kt$O!J2a<:$K$h$k$b$N$r(B -$B4^$`!KITK!9T0Y@UG$$rLd$o$:$I$N$h$&$J@UG$$NM}O@$K$h$C$F$b!"Cx:n8"l9g$b!"K\%=%U%H%&%'%"$r;HMQ$9$k$3$H$K$h$jH/@8$9$k!"$"$i$f$kD>(B -$B@\B;32!"4V@\B;32!"6vH/B;32!"FCJLB;32!"D(H3E*B;32$"$k$$$OGI@8E*B;32!JBe(B -$BBX@=IJ!&BeBX%5!<%S%9$ND4C#!";HMQMx1W!"%G!<%?Kt$O<}1W$K4X$9$kB;<:!"1D6H(B -$BCfCG$K$h$kB;<:$J$I!K$K$D$$$F2?$i$N@UG$$bIi$o$J$$!#$3$l$O!"K\%=%U%H%&%'(B -$B%"$r;HMQ$9$k$3$H$K$h$j!"$3$l$i$NB;32$,H/@8$9$k2DG=@-$K$D$$$F!"$"$i$+$8(B -$B$a<(:6$5$l$F$$$?>l9g$G$"$C$F$bF1MM$G$"$k!#(B diff --git a/language/japanese/ptex/Changes.txt b/language/japanese/ptex/Changes.txt deleted file mode 100644 index d13f95a08a..0000000000 --- a/language/japanese/ptex/Changes.txt +++ /dev/null @@ -1,302 +0,0 @@ -2005/10/17: (p3.1.9) - mkconf: platex ¤Î¸¡º÷¥Ñ¥¹¤Ë tex/platex ¤òÆþ¤ì¤Ê¤¤¤è¤¦¤Ë½¤Àµ - ptex: ñ¸ì¤ÎÀèƬ¤Ç LIG/ ¤ò¹Ô¤¦¤è¤¦¤ÊTFM¤ò»ÈÍѤ¹¤ë¤È¥Ù¡¼¥¹¥é¥¤¥ó¥·¥Õ¥È - ¤¬0¤Ç¤Ê¤¤¾ì¹ç¤Ë°Û¾ï½ªÎ»¤¹¤ë¥Ð¥°¤ò½¤Àµ - -2005/03/07: (p3.1.8) - Makefile.in: make install ¤ÎºÇ¸å¤Ë mktexlsr ¤Î¼Â¹Ô¤òÄɲà - Makefile.in, INSTALL.txt: teTeX-3.0¤ÎTEXMF¥Ç¥£¥ì¥¯¥È¥ê¤ÎÊѹ¹¤Ëȼ¤¤½¤Àµ - (¤¢¤ê¤¬¤È¤¦¤´¤¶¤¤¤Þ¤¹¡¢³ÑÆ£¤µ¤ó)¡£ - -2004/12/14: (p3.1.8) - ptex: ¥³¥ó¥È¥í¡¼¥ë¥·¡¼¥±¥ó¥¹Ì¾¤Î½èÍý¸í¤ê¤ò½¤Àµ¡£ - (Î㡧\Te^^5e^58 ¢Í \Te^^58 ¤È¤Ê¤ê¡¢\TeX ¤È¤·¤Æɾ²Á¤µ¤ì¤Ê¤¤) - ptex: ¥³¥ó¥È¥í¡¼¥ë¥·¡¼¥±¥ó¥¹Ä¾¸å¤Î ^^·Á¼°¤¬´Á»ú¤È¤·¤Æǧ¼±¤µ¤ì¤Æ - ¤·¤Þ¤¦¾ì¹ç¤¬¤¢¤ë¤Î¤ò½¤Àµ (Î㡧\TeX^^83A ¢Í \TeX¥¢) - (°Ê¾å¡¢¤¢¤ê¤¬¤È¤¦¤´¤¶¤¤¤Þ¤¹¡¢°æ¾å¤µ¤ó)¡£ - ptex: üËö¤ä¥í¥°¥Õ¥¡¥¤¥ë¤Ç¤Î²þ¹Ô°ÌÃ֤Υ¿¥¤¥ß¥ó¥°¤Î½¤Àµ - (¤¢¤ê¤¬¤È¤¦¤´¤¶¤¤¤Þ¤¹¡¢³ÑÆ£¤µ¤ó)¡£ - -2004/12/09: (p3.1.7) - ptex: ^^·Á¼°¤ò´Þ¤à¥³¥ó¥È¥í¡¼¥ë¥·¡¼¥±¥ó¥¹Ì¾¤Î½èÍý¸í¤ê¤ò½¤Àµ¡£ - ptex: ɽ¼¨ÉÔ²Äǽʸ»ú¤ÎÈϰϤò3.1.4¤ÈƱ¤¸¤Ë¤·¤¿¡£ - (Missing character ¤Ç¤Ï ^^ ·Á¼°¤Ç½ÐÎÏ)¡£ - mkconf: sjis,jis,euc¤Î³Æ¥¨¥ó¥³¡¼¥É̾¤ÎTEXINPUTS¤òºîÀ®¤¹¤ë¤è¤¦¤Ë¤·¤¿¡£ - ¤Þ¤¿¡¢TEXINPUTS.xetex ¤Î¼¡¤ËºîÀ®¤¹¤ë¤è¤¦¤Ë¤·¤¿¡£ - -2004/12/02: (p3.1.6) - ptex: tetex-2.99.4.20041128-beta ¤ËÂбþ(¤¢¤ê¤¬¤È¤¦¤´¤¶¤¤¤Þ¤¹¡¢³ÑÆ£¤µ¤ó)¡£ - INSTALL.txt: ¥Õ¥¡¥¤¥ë̾¤ÈTDS¤Ë´Ø¤¹¤ë¥³¥á¥ó¥È¤òÄɲà - (¤¢¤ê¤¬¤È¤¦¤´¤¶¤¤¤Þ¤¹¡¢³ÑÆ£¤µ¤ó)¡£ - -2004/11/29: (p3.1.5) - ptex: ¥³¥ó¥È¥í¡¼¥ë¥·¡¼¥±¥ó¥¹Ì¾¤Î¡¢^^·Á¼°¤Îʸ»ú¤È¼¡¤Îʸ»ú¤ò´Á»ú¤È - ¤·¤Æ¤ß¤Ê¤¹¾ì¹ç¤¬¤¢¤ë¤Î¤ò½¤Àµ(¤¢¤ê¤¬¤È¤¦¤´¤¶¤¤¤Þ¤¹¡¢°æ¾å¤µ¤ó)¡£ - ptex: Missing character ¤Ê¤É¤Î¥á¥Ã¥»¡¼¥¸¤Ç¤Îɽ¼¨ÉÔ²Äǽʸ»ú¤ò - ^^ ·Á¼°¤Ç½ÐÎϤ¹¤ë¤è¤¦¤Ë½¤Àµ¡£ - -2004/11/08: (p3.1.5) - ptex: JIS¥¨¥ó¥³¡¼¥Ç¥£¥ó¥°¥Õ¥¡¥¤¥ë¤òÆɤ߹þ¤ó¤À¸å¡¢`´Á»ú¥¤¥ó' ¤Î¾õÂÖ¤¬ - ¥Õ¥¡¥¤¥ë¤Î½ª¤ï¤ê¤ò±Û¤¨¤ÆÍ­¸ú¤Ë¤Ê¤Ã¤Æ¤·¤Þ¤¦¾ì¹ç¤¬¤¢¤ë¤Î¤ò½¤Àµ - (¤¢¤ê¤¬¤È¤¦¤´¤¶¤¤¤Þ¤¹¡¢°æ¾å¤µ¤ó)¡£ - -2004/10/12: - pltotf: SJIS¥³¡¼¥É¤ÎPL¥Õ¥¡¥¤¥ë¤«¤é¡¢TFM¥Õ¥¡¥¤¥ë¤òÀµ¤·¤¯ºî¤ì¤Ê¤¤ - ¤Î¤ò½¤Àµ(¤¢¤ê¤¬¤È¤¦¤´¤¶¤¤¤Þ¤¹¡¢³ÑÆ£¤µ¤ó¡¢ÀÄÌÚ¤µ¤ó)¡£ - -2004/09/02: (p3.1.4) - ptex: ¹ÔËöµ­¹æ¤ò´Á»ú¤ÎÂè1¥Ð¥¤¥È¤ËÅö¤¿¤ëʸ»ú¤Ë¤·¤¿¾ì¹ç¡¢¹Ô¤Î¼¡¤Îʸ»ú - ¤È¶¦¤Ë´Á»ú¤Ë¤·¤è¤¦¤È¤·¤Æ¤·¤Þ¤¦¤Î¤ò½¤Àµ¡£ - ptex: 1¥Ð¥¤¥Èʸ»ú¤Î¤¦¤Á¡¢´Á»ú¤ÎÂè1¥Ð¥¤¥È¤ËÅö¤¿¤ëʸ»ú¤Î¥«¥Æ¥´¥ê¡¼ - ¥³¡¼¥É¤¬Ìµ¸ú¤Êʸ»ú¤È¤Ê¤Ã¤Æ¤·¤Þ¤¦¤Î¤ò½¤Àµ¡£ - ptex: ^^·Á¼°¤ÇÆþÎϤµ¤ì¤¿Ê¸»ú¥³¡¼¥É¤¬´Á»ú¤ÎÂè1¥Ð¥¤¥È¤ËÅö¤¿¤ë¾ì¹ç¡¢ - ¼¡¤Îʸ»ú¤È¶¦¤Ë´Á»ú¤Ë¤·¤è¤¦¤È¤·¤Æ¤·¤Þ¤¦¤Î¤ò½¤Àµ¡£ - ptex: \string ¤Ç°·¤¦Ê¸»ú¤Î´Á»úȽÄê¤ò¸·Ì©²½¡£ - jbibtex: ²þ¹Ô¥³¡¼¥ÉCR¤ËÂбþ¡£ - (°Ê¾å¡¢¤¢¤ê¤¬¤È¤¦¤´¤¶¤¤¤Þ¤¹¡¢°æ¾å¤µ¤ó) - ptex: ¿ô¼°Æâ¤Ç \char ¤ò»ÈÍѤ·¤¿¾ì¹ç¤Ë1¥Ð¥¤¥Èʸ»ú¤¬´Á»ú¤È¸íǧ¼±¤µ¤ì¤ë - ¥Ð¥°¤ò½¤Àµ¡£ - (¤¢¤ê¤¬¤È¤¦¤´¤¶¤¤¤Þ¤¹¡¢³ÑÆ£¤µ¤ó) - ·ÀÌó¾òʸÏÂÌõ¤ò½¤Àµ¡£ - -2003/10/07: (p3.1.3) - ptex: -kanji=sjis ¤Î¤È¤­¡¢\kansujichar ¤Ç¡¢´üÂÔ¤·¤¿Ê¸»ú¤¬ÀßÄꤵ¤ì - ¤Ê¤¤¤Î¤ò½¤Àµ(¤¢¤ê¤¬¤È¤¦¡¢³ÑÆ£¤µ¤ó)¡£ - -2003/09/30: - ptex: üËö/¥í¥°¤Ø¤Î¥á¥Ã¥»¡¼¥¸¤Ç¡¢°õ»ú¤Ç¤­¤Ê¤¤Ê¸»ú¤¬½ÐÎϤµ¤ì¤ë¤³¤È¤¬ - ¤¢¤ë¤Î¤ËÂн衣 - -2003/08/05: - pconvert: usage ¥á¥Ã¥»¡¼¥¸¤ÎÊѹ¹¡£pltotf, tftopl, pdvitype ¤Î¤È¤­¡¢ - fixwrites ¤Ë¥ª¥×¥·¥ç¥ó($target)¤ò»ØÄꤹ¤ë¤è¤¦¤Ë¤·¤¿¡£ - -2003/06/23: (p3.1.2) - configure: mktemp¤ò»È¤ï¤Ê¤¤¤è¤¦¤Ë½¤Àµ - -2003/06/17: (p3.1.2) - Makefile.in: BSDÈÇ make ¤Ç texmf.cnf ¤ÎºîÀ®¤Ë¼ºÇÔ¤·¤Æ¤¤¤ë¤Î¤ò½¤Àµ - -2003/02/18: (p3.1.2) - ptex: \kansuji ¥×¥ê¥ß¥Æ¥£¥Ö¤òÉü³è¤µ¤»¤¿¡£ - ptex: \kansujichar ¥×¥ê¥ß¥Æ¥£¥Ö¤Ë¤è¤ê¡¢\kansuji ¤Ç½ÐÎϤµ¤ì¤ëʸ»ú¤òÀßÄê - ²Äǽ¤Ë¤·¤¿¡£ - -2003/02/14: (p3.1.1) - ptex: ´Á»ú¤¬ ^^ ·Á¼°¤Ç¥³¥ó¥½¡¼¥ë¤Ëɽ¼¨¤µ¤ì¤ë¤Î¤ò½¤Àµ¡£ - ptex: \uppercase, \lowercase ¤Ç core ¤ò½Ð¤¹¾ì¹ç¤¬¤¢¤ë¤Î¤ò½¤Àµ¡£ - -2003/02/13: (p3.1) - ptex: main_memory¡¢hash_extra ¤òÂ礭¤¯¤·¡¢ËÄÂç¤Ê¥Þ¥¯¥íÄêµÁ¤ò¤¹¤ë¤È¡¢ - ¡Ö!Missing control sequence inserted.¡×¤Î¥¨¥é¡¼¤Ë¤Ê¤ë¤Î¤ò½¤Àµ¡£ - -2003/02/03: (p3.0.6) - ptex: tetex-2.0 ¤Ø¤ÎÂбþ - ptex: sjis Æ°ºî°Ê³°¤Î¤È¤­¡¢\char\sjis ¤¬Àµ¤·¤¯Æ°¤«¤Ê¤¤¤Î¤ò½¤Àµ - ptex: ¼Â¸³Åª¤ËÆþ¤ì¤Æ¤¢¤Ã¤¿¥×¥ê¥ß¥Æ¥£¥Ö¡Ê\kansuji¡¢\tozen¡Ë¤ò¼è¤ê½ü¤¤¤¿ - ptexextra.h: BANNER ʸ»úÎó¤Î¹¹¿· - ptexextra.c: tetex-2.0 ¤Ø¤ÎÂбþ - -2002/11/22: - Makefile.in: euc(jis), sjis ÍÑ¥Õ¥©¡¼¥Þ¥Ã¥È¤òºîÀ®¤¹¤ë¤è¤¦½¤Àµ - platex ÍѤΥê¥ó¥¯¤òºîÀ®¤¹¤ë¤è¤¦¤Ë¤·¤¿ - mkconf: iniptex ¤Îµ­½Ò¤òºï½ü - -2002/11/15: (p3.0.5) - ptexextra.c: web2c-7.3.11 (teTeX-beta-20021114) ¤Ø¤ÎÂбþ - -2002/10/29: (p3.0.4) - --version ¤Î£±¹ÔÌܤΥե©¡¼¥Þ¥Ã¥È¤òÊѹ¹ - jbibtex: ǧ¼±¤Ç¤­¤Ê¤¤¥ª¥×¥·¥ç¥ó¤Ç core ¤ò½Ð¤¹¤Î¤ò½¤Àµ - -2002/10/28: (p3.0.3) - ptex: ¥Ð¥Ê¡¼¤Î¥Õ¥©¡¼¥Þ¥Ã¥È¤òÊѹ¹ - tftopl.ch: pTeXÍѤÎHELP¤ò»È¤Ã¤Æ¤¤¤Ê¤¤¤Î¤ò½¤Àµ - pltotf.ch: pTeXÍѤÎHELP¤ò»È¤Ã¤Æ¤¤¤Ê¤¤¤Î¤ò½¤Àµ - -2002/10/24: (p3.0.2) - web2c-7.3.9 ¤ËÂбþ¡£ - -2002/01/18: (p3.0.1) - °Ê²¼¤Î¥½¡¼¥¹¤òÍѤ¤¤¿¤¿¤È¤­¤Ç¤â¥³¥ó¥Ñ¥¤¥ë¤Ç¤­¤ë¤è¤¦¤Ë¤·¤¿¡£ - * tetex-supp.tar.gz - * web2c-7.3.3.tar.gz - * teTeX-src-beta-20011202.tar.gz - -2002/01/15: (p3.0) - ptex-base.ch: fix hyphenation. - -2001/10/03: - README.txt: rewrite - INSTALL.txt: rewrite - ptex-base.ch: version 3.0 - ptexextra-plain.c: removed local_maintainer and this_bug_address - ptexextra-src-special.c: removed local_maintainer and this_bug_address - jbibextra.c: removed local_maintainer and this_bug_address - maintain.h: removed local_maintainer and this_bug_address - version.c: modified message - -2001/07/26: - Change Licence to modified BSD license - COPYRIGHT: new file - COPYRIGHT.jis: new file - INSTALL.txt: new file - README.txt: cut short and move to INSTALL.txt - version.c: change licence filename (l.87,91, COPYING -> COPYRIGHT) - -2001/02/13: - version.c: typo (l.89, build -> build) - ptexhelp.h: typo (l.56, versobe -> verbose) - Changes.txt: typo (20001/02/09 -> 2001/02/09) - -2001/02/09: - REAMDE.txt: rewrite for 2.1.10 - version.c: rewrite the copyright message. enable usage() function. - ptexhelp.h: newfile - help.h: removed - kanji.h.in: include "ptexhelp.h" - ptexextra-plain.c: rename TEXHELP to PTEXHELP. - ptexextra-src-special.c rename TEXHELP to PTEXHELP. - Makefile.in: depend on ptexhelp.h - -2000/11/13: (p2.1.10) -2000/11/10: - ptex.ch: can't load JFM which the number of char_type less than - the glue types. - pltotf.ch: can't convert property list which has fullwidth space - '0x2121(JIS)' in charsintype. - -2000/08/17 - mkconf: modify path separator to semicolon(;) - -2000/03/18 - README.txt: fixed web2c-7.2 -> teTeX-1.0 (l.77) - -2000/03/01 (p2.1.9) - ptexextra-plain.c, ptexextra-src-special.c: version number 2.1.8 -> 2.1.9 - -2000/02/29 (p2.1.9) - README.txt: rewrite. - -2000/02/28 (p2.1.9) - correspond to TeX 3.14159 with Web2c 7.3.1 and tex-src-special. - Makefile.in: distclean cleans tftopl.ch and pltotf.ch - ptexextra-plain.c, ptexextra-src-special.c: newfile - COPYING: newfile - -1998/04/09 (p2.1.8) -1998/03/26 (p2.1.8.beta1) - correspond to TeX 3.14159 with Web2c 7.2. - -1998/03/19 (p2.1.7) - fix bug: \leaders - -1998/02/26 (p2.1.6) - fix bug: \inhibitxspcode - -1997/08/27 (p2.1.5) - official release. - -1997/08/27 (TFtoPL v1.3) - fix bug: occers core dump when loading a JFM. - -1997/08/14 (p2.1.5, beta12) - fix bug: kinsoku process doesn't work for ligatured character. - -1997/08/07 (p2.1.5, beta11) - changed specification: How to insert \xkanjiskip at surrounding a \hbox - (back to the p2.1.4 specification). - -1997/08/01 (p2.1.5, beta10) - fix bug: caused line breaking after a kinsoku penalty by - the \jcharwidowpenalty. - -1997/07/29 (p2.1.5, beta9) - fix bug: A penalty of kinsoku doesn't work well. - fix bug: italic correction is not inserted. - -1997/07/11 (p2.1.5, beta8) - fix bug: A penalty of kinsoku doesn't work well. - fix bug: Inserted \kanjiskip before widow KANJI character when the line - holds only it (embeded 2.1.5.beta6). - fix bug: Inserted \kanjiskip between kern of head of the line and - the next widow KANJI character (since from jTeX 1.7 p1.0.9G). - changed specification: How to insert \xkanjiskip at surrounding text-math. - -1997/06/29 (p2.1.5, beta7) - fix bug: pTeX occers coredump, when \{y,t}baselineskip is not equal zero, - and where explicit kern after ligature like `diff\/'. - changed specification: How to insert \xkanjiskip at surrounding text-math. - -1997/06/16 (p2.1.5, beta6) - fix bug: The \{y,t}baselineskip isn't work except the first place in - a paragraph. - fix bug: Doesn't hyphenation when the value of \{y,t}baselineskip is - not equals zero. - fix buf: Printed `(EUC)' in banner instead of making as JIS-version. - fix bug: `make install' increase the TEXINPUTS.{ptex,platex,platex209} at - texmf.cnf. - -1997/05/13 (p2.1.5, beta5) - fix bug: Fail to read euex10.tfm. - -1997/05/01 (p2.1.5, beta4) - fix bug: \char{\jis,\euc,\sjis,\kuten} after a 1byte character that have - a possibility of ligature like the "`" causes coredump or worng result. - -1997/03/17 (p2.1.5, beta3) - change banner strings. - -1997/03/14 (p2.1.5, beta3) - fix bug: can't run as iniptex/virptex. - -1997/03/12 (p2.1.5, beta2) - fix bug: \calcpos return wrong number. - -1997/02/27 (p2.1.5, beta1) - correspond to TeX 3.14159 with Web2c 7.0. - -1995/11/21 (p2.1.4) - new feature: accept kanji filename. - -1995/11/17 (p2.1.3) - fix bug : try_break routine doesn't corect action when the list - has disp_node or dir_node (Error `disc4'). - -1995/11/07 (p2.1.2) - fix bug : \kanjiskip doesn't inserted after JFM glue/kern. - -1995/10/11 - include jbibtex (Shouichi Matsui) and - pdvitype (Thanks, Kazunori Asayama) - -1995/09/20 (p2.1.1) - fix bug : \xkanjiskip doesn't inserted after italic correction. - fix bug : italic correction doesn't inserted when \{y,t}baselineshift - is used. - -1995/09/08 (p2.1) - fix bug : \xkanjiskip doesn't inserted after math mode which correct - italic kern spacing. - -1995/08/29 - rename `find_first' to `find_first_char' for djgpp 1.12. - (Thanks, Kazunori Asayama) - -1995/03/25 - fix bug : Three minuses sequence (---) doesn't become em-hyphen. - -1995/03/11 - imprement \kanji primitive. - -1995/01/17 - translate/modify pTeX 2.0 change file for TeX 3.1415. - -1994/12/17 - translate/modify pTeX 2.0 change file for TeX 3.141. - -1994/10/17 - translate/modify pTeX 1.0.9F change file which based on TeX 2.99 to - pTeX 2.0 which based on TeX 3.14. - -== EOF === diff --git a/language/japanese/ptex/Files b/language/japanese/ptex/Files deleted file mode 100644 index ac7a1dff91..0000000000 --- a/language/japanese/ptex/Files +++ /dev/null @@ -1,27 +0,0 @@ -COPYRIGHT -COPYRIGHT.jis -Changes.txt -Files -INSTALL.txt -Makefile.in -README.txt -configure -jbibd.sed -jbibextra.c -jbibextra.h -jbibtex.ch -jbibtex.defines -kanji.c -kanji.defines -kanji.h.in -mkconf -pconvert -pdvitype.ch -pltotf.ch -ptex-base.ch -ptexextra.c -ptexextra.h -ptexhelp.h -tftopl.ch -usage.c -version.c diff --git a/language/japanese/ptex/INSTALL b/language/japanese/ptex/INSTALL deleted file mode 100644 index 77116b109d..0000000000 --- a/language/japanese/ptex/INSTALL +++ /dev/null @@ -1,85 +0,0 @@ -=========================================================================== - Japanese TeX version 3.141592, p3.1.9 - (for tetex-src-3.0 and later) -=========================================================================== - If necessary, backup the TeX system of the old version before starting - installation. - -$B"((BpTeX supports file names with spaces. However, it doesn't support more - than two subsequent spaces in the file name. - platex "a b c d e.tex" will be accepted, however - platex "a b.tex" will not. - ---------------------------------------------------------------------------- - Source files ---------------------------------------------------------------------------- - To install pTeX, the following files are required: - - - ptex-src-3.1.9.tar.gz (pTeX source file) - - ptex-texmf-2.3.tar.gz (pTeX library file) - - teTeX-src-3.0.tar.gz (teTeX source file) - - teTeX-texmf-3.0.tar.gz (teTeX library file) - - These can be obrained from the following sites: - - - pTeX - ftp://ftp.ascii.co.jp/pub/TeX/ascii-ptex/ - ftp://ftp.ring.gr.jp/pub/text/TeX/ascii-ptex/ - ftp://ftp.media.kyoto-u.ac.jp/TeX/ASCII-pTeX/ - ftp://bash.cc.keio.ac.jp/pub/TeX/ascii-ptex/ - ftp://ftp.cs.titech.ac.jp/pub/text/TeX/ASCII-pTeX/ - ftp://ftp.tut.ac.jp/TeX/ASCII-pTeX/ - ftp://ftp.u-aizu.ac.jp/pub/tex/ASCII-pTeX/ - ftp://ftp.foretune.co.jp/pub/TeX/ascii-ptex/ - - - teTeX - ftp://ftp.ring.gr.jp/pub/text/CTAN/systems/unix/teTeX/current/distrib/ (JPN) - ftp://cam.ctan.org/tex-archive/systems/unix/teTeX/current/distrib/ (UK) - ftp://dante.ctan.org/tex-archive/systems/unix/teTeX/current/distrib/ (GER) - ftp://tug.ctan.org/tex-archive/systems/unix/teTeX/current/distrib/ (US) - ---------------------------------------------------------------------------- - Installation ---------------------------------------------------------------------------- -1. Expand the teTeX library file. - - mkdir -p /usr/local/teTeX3/share/texmf-dist - tar zxf tetex-texmf-3.0.tar.gz \ - -C /usr/local/teTeX3/share/texmf-dist - -2. Expand the ptex library file. - - mkdir -p /usr/local/teTeX3/share/texmf - tar zxf ptex-texmf-2.3.tar.gz -C /usr/local/teTeX3/share/texmf - -3. Expand the teTeX source file. - - tar zxf tetex-src-3.0.tar.gz -C /usr/local/src - -4. Expand the ptex source file. - - tar zxvf ptex-src-3.1.9.tar.gz \ - -C /usr/local/src/tetex-src-3.0/texk/web2c - -5. After moving to the directory where the teTeX source file is expanded, - execute the configure command. In the prefix option, specify the - directory where teTeX libraries are installed as a prefix option: - - cd /usr/local/src/tetex-src-3.0 - ./configure --prefix=/usr/local/teTeX3 - make - make install - -6. After moving to the ptex source directory, execute the configure command. - In doing so, specify the default Kanji code: - - cd /usr/local/src/tetex-src-3.0/texk/web2c/ptex-src-3.1.9 - ./configure euc (EUC code case) - ./configure jis (JIS code case) - ./configure sjis (Shift JIS code case) - make - make install - -=============================================================== EOT ===== - - (Translated from INSTALL.txt in Japanese) diff --git a/language/japanese/ptex/INSTALL.txt b/language/japanese/ptex/INSTALL.txt deleted file mode 100644 index c0c621c1a1..0000000000 --- a/language/japanese/ptex/INSTALL.txt +++ /dev/null @@ -1,83 +0,0 @@ -=========================================================================== -$BF|K\8l(B TeX $B%P!<%8%g%s(B 3.141592, p3.1.9 -(tetex-src-3.0 $B0J9_MQ(B) -=========================================================================== -$B"((B $BI,MW$J$i$P!"%$%s%9%H!<%k:n6H$r$9$kA0$K!"(B - $B5l%P!<%8%g%s$N(B TeX $B%7%9%F%`$N%P%C%/%"%C%W$r$7$F$/$@$5$$!#(B - -$B"((B space code $B$r4^$s$@%U%!%$%kL>$,%5%]!<%H$5$l$F$$$^$9!#(B - $B$?$@$7!"O"B3$9$kFs$D0J>e$N(B space codes $B$O;HMQ$7$J$$$G$/$@$5$$(B: - platex "a b c d e.tex" $B$O(B ok $B$G$9$,(B - platex "a b.tex" $B$O(B ng $B$G$9!#(B - ---------------------------------------------------------------------------- -$B!|(B $B%=!<%9%U%!%$%k(B ---------------------------------------------------------------------------- -pTeX $B$r%$%s%9%H!<%k$9$k$K$O!"$D$.$N%U%!%$%k$,I,MW$G$9!#(B - - $B!&(Bptex-src-3.1.9.tar.gz (pTeX $B%=!<%9%U%!%$%k(B) - $B!&(Bptex-texmf-2.3.tar.gz (pTeX $B%i%$%V%i%j%U%!%$%k(B) - $B!&(BteTeX-src-3.0.tar.gz (teTeX $B%=!<%9%U%!%$%k(B) - $B!&(BteTeX-texmf-3.0.tar.gz (teTeX $B%i%$%V%i%j%U%!%$%k(B) - -$B$3$l$i$O!"0J2<$N%5%$%H$J$I$+$iF~l9g(B) - ./configure jis (JIS$B%3!<%I$N>l9g(B) - ./configure sjis ($B%7%U%H(BJIS$B%3!<%I$N>l9g(B) - make - make install - -=============================================================== EOT ===== diff --git a/language/japanese/ptex/Makefile.in b/language/japanese/ptex/Makefile.in deleted file mode 100644 index b2e79ce54c..0000000000 --- a/language/japanese/ptex/Makefile.in +++ /dev/null @@ -1,344 +0,0 @@ -# Makefile for ptex -version = @WEB2CVERSION@ -configopt = @configopt@ -configkcode = @configkcode@ - -default: programs formats - -programs=ptex tftopl pltotf pdvitype jbibtex -euc-formats=ptex-euc.fmt platex-euc.fmt -sjis-formats=ptex-sjis.fmt platex-sjis.fmt - -ac_include ../../make/paths.mk - -# Used for triptrap. -DIFF = diff -DIFFFLAGS = - -.SUFFIXES: # get rid of .p.o -ac_include ../../make/common.mk -ac_include ../../make/programs.mk - -@MAINT@ifeq ($(CC), gcc) -@MAINT@XDEFS = -Wimplicit -Wreturn-type -Wcomment -Wformat -@MAINT@endif - -# With --enable-ipc, TeX may need to link with -lsocket. -socketlibs = @socketlibs@ - -common_makeargs = $(MFLAGS) CC='$(CC)' CFLAGS='$(CFLAGS)' LDFLAGS='$(LDFLAGS)' $(XMAKEARGS) -install_makeargs = INSTALL='$(INSTALL)' INSTALL_DATA='$(INSTALL_DATA)' \ - INSTALL_PROGRAM='$(INSTALL_PROGRAM)' \ - $(makevars) $(common_makeargs) - -proglib = ../lib/lib.a - -# The sh script that does the conversion: -web2c = srcdir=$(thisdir) $(SHELL) $(thisdir)/pconvert -# Additional dependencies: -web2c_aux = $(thisdir)/pconvert $(cwebdir)/common.defines \ - $(thisdir)/kanji.defines -web2c_programs = $(cwebdir)/fixwrites $(cwebdir)/splitup $(cwebdir)/web2c - -# Unfortunately, suffix rules can't have dependencies, or multiple -# targets, and we can't assume all makes supports pattern rules. -.SUFFIXES: .p .c .ch .p -.p.c: # really depends on $(web2c_programs), and generates .h. - $(web2c) $* -.ch.p: # really depends on $(srcdir)/tangle; for ptex, also generates .pool - $(srcdir)/tangle $(thisdir)/$*.web $< - -# These definitions have to come before the rules that expand them. -# The tex{ini,0,1,2}.c files are created by splitup, run as part of convert. -ptex_c = texini.c tex0.c tex1.c tex2.c -ptex_o = texini.o tex0.o tex1.o tex2.o ptexextra.o -plib_o = kanji.o version.o usage.o - -# Prevent Make from deleting the intermediate forms. -.PRECIOUS: %.p %.c - -# -# Rules for pTeX, TFtoPL, PLtoTF. -# fix dir -thisdir = . -srcdir = .. -top_srcdir= $(srcdir)/.. -cwebdir = $(srcdir)/web2c - -kpathsea_parent = $(top_srcdir) -kpathsea_srcdir_parent = $(kpathsea_parent) - -programs: $(programs) - -### pTeX -ptex: $(ptex_o) $(plib_o) $(kpathsea) $(proglib) - $(kpathsea_link) $(ptex_o) $(plib_o) $(socketlibs) $(LOADLIBES) - -$(ptex_o): $(ptex_c) texcoerce.h texd.h kanji.h - -texini.o: texini.c texcoerce.h texd.h kanji.h ptexhelp.h -tex0.o: tex0.c texcoerce.h texd.h kanji.h ptexhelp.h -tex1.o: tex1.c texcoerce.h texd.h kanji.h ptexhelp.h -tex2.o: tex2.c texcoerce.h texd.h kanji.h ptexhelp.h -ptexextra.o: ptexextra.c ptexextra.h texcoerce.h texd.h kanji.h ptexhelp.h - -$(ptex_c) texcoerce.h texd.h: ptex.p $(web2c_aux) $(web2c_programs) - $(web2c) ptex - -ptex.p: ptex.web ptex.ch $(srcdir)/tangle - -ptex.web: $(srcdir)/tex.web $(srcdir)/tex.ch $(srcdir)/tie - $(srcdir)/tie -m ptex.web $(srcdir)/tex.web $(srcdir)/tex.ch - -ptex.ch: $(srcdir)/tie ptex.web ptex-base.ch - $(srcdir)/tie -c ptex.ch ptex.web ptex-base.ch - -### TFtoPL -tftopl: tftopl.o $(plib_o) $(kpathsea) $(proglib) - $(kpathsea_link) tftopl.o $(plib_o) $(LOADLIBES) -tftopl.o: tftopl.c kanji.h ptexhelp.h -tftopl.c: tftopl.p $(web2c_aux) -tftopl.p: tftopl.web tftopl.ch -tftopl.web: $(srcdir)/tftopl.web $(srcdir)/tftopl.ch - rm -f tftopl.web && \ - $(srcdir)/tie -m tftopl.web $(srcdir)/tftopl.web $(srcdir)/tftopl.ch - - -### PLtoTF -pltotf: pltotf.o $(plib_o) $(kpathsea) $(proglib) - $(kpathsea_link) pltotf.o $(plib_o) $(LOADLIBES) -pltotf.o: pltotf.c kanji.h ptexhelp.h - $(compile) -DKANJI_C=1 -c pltotf.c -pltotf.c: pltotf.p $(web2c_aux) -pltotf.p: pltotf.web pltotf.ch -pltotf.web: $(srcdir)/pltotf.web $(srcdir)/pltotf.ch - rm -f pltotf.web && \ - $(srcdir)/tie -m pltotf.web $(srcdir)/pltotf.web $(srcdir)/pltotf.ch - -### pDVItype -pdvitype: pdvitype.o $(plib_o) $(kpathsea) $(proglib) - $(kpathsea_link) pdvitype.o $(plib_o) $(LOADLIBES) -pdvitype.o: pdvitype.c kanji.h ptexhelp.h - $(compile) -DDVITYPE -DHEX_CHAR_CODE -c pdvitype.c -pdvitype.c: pdvitype.p $(web2c_aux) -pdvitype.p: pdvitype.web pdvitype.ch -pdvitype.web: - $(LN) $(srcdir)/dvitype.web pdvitype.web - -### jBibTeX -jbibtex: jbibtex.o jbibextra.o $(plib_o) $(kpathsea) $(proglib) - $(kpathsea_link) jbibtex.o jbibextra.o $(plib_o) $(LOADLIBES) -jbibextra.o: jbibextra.c jbibd.h kanji.h ptexhelp.h -jbibtex.o: jbibtex.c jbibextra.h kanji.h ptexhelp.h - $(compile) -DBIBTEX -c jbibtex.c -jbibtex.c jbibd.h: jbibtex.p $(web2c_aux) jbibd.sed -jbibtex.p: jbibtex.web jbibtex.ch -jbibtex.web: - $(LN) $(srcdir)/bibtex.web jbibtex.web - -# Additional dependencies for recompiling the C code are generated -# automatically, included at the end. -kanji.o: kanji.c kanji.h ptexhelp.h -version.o: version.c kanji.h ptexhelp.h -usage.o: usage.c - -# Additional dependencies for relinking. -$(srcdir)/tangleboot: - cd $(srcdir) && $(MAKE) tangleboot -$(srcdir)/tangle: - cd $(srcdir) && $(MAKE) tangle -$(srcdir)/tie: - cd $(srcdir) && $(MAKE) tie -$(cwebdir)/fixwrites: - cd $(cwebdir) && $(MAKE) fixwrites -$(cwebdir)/splitup: - cd $(cwebdir) && $(MAKE) splitup -$(cwebdir)/web2c: - cd $(cwebdir) && $(MAKE) web2c -$(proglib): - cd $(srcdir)/lib && $(MAKE) lib.a -$(kpathsea): - cd $(kpathsea_dir) && $(MAKE) libkpathsea.a - -# -# Making formats and bases. -formats=$(euc-formats) $(sjis-formats) -formats: $(formats) - -texmf.cnf: $(kpathsea_dir)/texmf.cnf - $(SHELL) $(thisdir)/mkconf $(kpathsea_dir)/texmf.cnf > texmf.cnf - -dumpenv = TEXMFCNF=$(thisdir) - -ptex-euc.fmt: ptex texmf.cnf - $(dumpenv) $(MAKE) progname=ptex files="ptex.tex min10.tfm" prereq-check - $(dumpenv) ./ptex --ini --kanji=euc --progname=ptex --jobname=ptex-euc \\input ptex.tex \\dump /dev/null || $(MAKE) prereq-lose >/dev/null - -prereq-lose: - @echo "You seem to be missing input files necessary to make the" >&2 - @echo "basic formats (some or all of: $(files))." >&2 - @echo "Perhaps you've defined the default paths incorrectly, or" >&2 - @echo "perhaps you have environment variables set pointing" >&2 - @echo "to an incorrect location. See $(srcdir)/kpathsea/BUGS." >&2 - @echo >&2 - @echo "If you simply do not have the files, you can" >&2 - @echo "retrieve a minimal set of input files from" >&2 - @echo "ftp://ftp.tug.org/tex/lib.tar.gz, mirrored on" >&2 - @echo "CTAN hosts in systems/web2c." >&2 - false - -$(kpathsea_dir)/kpsewhich: $(kpathsea) - -# -install: install-exec install-data - $(top_srcdir)/kpathsea/mktexlsr -install-exec:: install-links -install-data:: install-formats - -# Installation directories. -$(bindir):: - $(SHELL) $(top_srcdir)/mkinstalldirs $(bindir) -$(web2cdir):: - $(SHELL) $(top_srcdir)/mkinstalldirs $(web2cdir) - -# The actual binary executables and pool files. -install-programs: $(programs) $(bindir) - for p in $(programs); do $(INSTALL_LIBTOOL_PROG) $$p $(bindir); done - -# The links to ptex for each format. -install-links: install-programs $(bindir) - cd $(bindir) && (rm -f iniptex virptex platex; $(LN) ptex platex) - -# Always do plain.*, so examples from the TeXbook (etc.) will work. -install-formats: $(formats) $(web2cdir) - for f in $(formats); do $(INSTALL_DATA) $$f $(web2cdir)/$$f; done - cd $(web2cdir) && (rm -f ptex-jis.fmt platex-jis.fmt ;\ - $(LN) ptex-euc.fmt ptex-jis.fmt ;\ - $(LN) platex-euc.fmt platex-jis.fmt) - cd $(web2cdir) && (rm -f ptex.fmt platex.fmt ;\ - $(LN) ptex-$(configkcode).fmt ptex.fmt ;\ - $(LN) platex-$(configkcode).fmt platex.fmt ) - -# Auxiliary files. -install-data:: - $(SHELL) $(top_srcdir)/mkinstalldirs $(web2cdir) - $(INSTALL_DATA) ptex.pool $(web2cdir)/ptex.pool - if [ -f $(web2cdir)/texmf.cnf ]; then \ - mv -f $(web2cdir)/texmf.cnf $(web2cdir)/texmf.cnf.orig ;\ - else true; fi - $(INSTALL_DATA) texmf.cnf $(web2cdir)/texmf.cnf -# -# Testing, including triptrap. The `x' filenames are for output. -check: pltotf-check tftopl-check pooltype-check ptex-check - -triptrap: trip -tripdir = $(srcdir)/triptrap -ptripdir = ./triptrap -testdir = $(srcdir)/tests -testenv = TEXMFCNF=$(ptripdir) -dvitype_args = -output-level=2 -dpi=72.27 -page-start='*.*.*.*.*.*.*.*.*.*' -trip: ptex pltotf tftopl $(srcdir)/dvitype - @echo ">>> See $(tripdir)/trip.diffs for example of acceptable diffs." >&2 - ./pltotf $(tripdir)/trip.pl trip.tfm - ./tftopl ./trip.tfm trip.pl - -diff $(tripdir)/trip.pl trip.pl - rm -f trip.tex; $(LN) $(tripdir)/trip.tex . # get same filename in log - -$(SHELL) -c '$(testenv) ./ptex -ini <$(tripdir)/trip1.in >tripin.fot' - mv trip.log tripin.log - -diff $(tripdir)/tripin.log tripin.log -# May as well test non-ini second time through. - -$(SHELL) -c '$(testenv) ./ptex <$(tripdir)/trip2.in >trip.fot' - -diff $(tripdir)/trip.fot trip.fot -# We use $(DIFF) instead of `diff' only for those files where there -# might actually be legitimate numerical differences. - -$(DIFF) $(DIFFFLAGS) $(tripdir)/trip.log trip.log - $(SHELL) -c '$(testenv) $(srcdir)/dvitype $(dvitype_args) trip.dvi >trip.typ' - -$(DIFF) $(DIFFFLAGS) $(tripdir)/trip.typ trip.typ - -# Ad hoc tests. -pltotf-check: pltotf - ./pltotf -verbose $(testdir)/cmr10 $(testdir)/xcmr10 - ./pltotf -verbose $(testdir)/min10 $(testdir)/xmin10 - -tftopl-check: tftopl - ./tftopl -verbose $(testdir)/cmr10 $(testdir)/xcmr10 - ./tftopl -verbose $(testdir)/min10 $(testdir)/xmin10 - -pooltype-check: $(srcdir)/pooltype - $(srcdir)/pooltype ptex.pool > $(testdir)/xtexpool.typ - -ptex-check: trip ptex-euc.fmt -# Test truncation (but don't bother showing the warning msg). - ./ptex -output-comment="`cat PROJECTS`" $(testdir)/hello 2>/dev/null \ - && $(srcdir)/dvitype hello.dvi | grep kb@mail.tug.org >/dev/null -# \openout should show up in \write's. - ./ptex $(testdir)/openout && grep xfoo openout.log -# one.two.tex -> one.two.log - ./ptex $(testdir)/one.two && ls -l one.two.log -# uno.dos -> uno.dos.log - ./ptex $(testdir)/uno.dos && ls -l uno.dos.log - ./ptex $(testdir)/just.texi && ls -l just.log - -./ptex $(testdir)/batch.tex - ./ptex -shell $(testdir)/write18 | grep echo -# tcx files are a bad idea. -# ./ptex -translate-file=$(srcdir)/share/isol1-t1.tcx $(testdir)/eight \ -# && ./pdvitype eight.dvi >eigh.typ - ./ptex -mltex -ini $(testdir)/mltextst - -./ptex $CONFIGSED -echo "s%@TERMCODE@%$termcode%g" >> $CONFIGSED -case $termcode in - "SJIS") echo "s%@configkcode@%sjis%g" >> $CONFIGSED ;; - "JIS") echo "s%@configkcode@%jis%g" >> $CONFIGSED ;; - *) echo "s%@configkcode@%euc%g" >> $CONFIGSED ;; -esac -echo "creating kanji.h" -sed -f $CONFIGSED kanji.h.in > kanji.h - -# Makefile ¤ÎºîÀ® -CONFIG_FILES=Makefile -CONFIG_HEADERS=.. -export CONFIG_FILES CONFIG_HEADERS -../config.status -TMPFILE=makefile.tmp -sed -f $CONFIGSED Makefile > $TMPFILE -mv -f $TMPFILE Makefile - -exit 0 diff --git a/language/japanese/ptex/jbibd.sed b/language/japanese/ptex/jbibd.sed deleted file mode 100644 index cb30424cfe..0000000000 --- a/language/japanese/ptex/jbibd.sed +++ /dev/null @@ -1,17 +0,0 @@ -/jbibtex\.h/,$d -/^jmp_buf/d -/^typedef/b -/^#define/b -/^[a-zA-Z_].*;/{ - s/^/extern / - b -} -/^[a-zA-Z].*/ { - /^[^;][^;]*$/ { - s/^/extern / - b - } -} -/^ */b -t -d diff --git a/language/japanese/ptex/jbibextra.c b/language/japanese/ptex/jbibextra.c deleted file mode 100644 index 72ccd175ee..0000000000 --- a/language/japanese/ptex/jbibextra.c +++ /dev/null @@ -1,485 +0,0 @@ -/* - * Auxilliary routines for BibTeX in C. - * - * Tim Morgan 2/15/88 - * Eduardo Krell 4/21/88 - */ - -/* - * JBibTeX Version by Shouichi Matsui - * matsui@denken.or.jp (matsui%denken.or.jp@uunet.uu.net) - * 1989-05-02 - * Last updated: 1990-12-29 - * many codes are from ../cjtex/extra.c by T. Sakurai - */ -/* - * Modified for pTeX 2.1 by Kazunori Aasayama - * asayama@kuis.kyoto-u.ac.jp Sep. 4, 1995 - * Modified for pTeX 2.1.5 by Kazunori Aasayama - * asayama@vsp.cpg.sony.co.jp March. 14, 1997 - */ - -/* - Change DEFAULT_FILE_CODE, DEFAULT_TERM_CODE definition for your site code - 1 JIS; Kanji-in ESC$@, Kanji-out ESC(J - 2 JIS; Kanji-in ESC$@, Kanji-out ESC(H - 3 JIS; Kanji-in ESC$@, Kanji-out ESC(B - 4 JIS; Kanji-in ESC$B, Kanji-out ESC(J - 5 JIS; Kanji-in ESC$B, Kanji-out ESC(H - 6 JIS; Kanji-in ESC$B, Kanji-out ESC(B - 10 Shift JIS - 20 EUC - */ - -/* #define KANJI */ -#define KANJI_C -#include "kanji.h" -#include "jbibd.h" -#include - -/* - const_string based_prog_name="BibTeX"; - const_string based_prog_version="0.99c"; - */ - -#ifdef OUTJIS -# define DEFAULT_FILE_CODE 6 /* JIS */ -# define DEFAULT_TERM_CODE 6 /* JIS */ -#else -# ifdef OUTSJIS -# define DEFAULT_FILE_CODE 10 /* SJIS */ -# define DEFAULT_TERM_CODE 10 /* SJIS */ -# else /* EUC */ -# ifdef OUTEUC -# define DEFAULT_FILE_CODE 20 /* EUC */ -# define DEFAULT_TERM_CODE 20 /* EUC */ -# else -# error /* unexpected. */ -# endif -# endif -#endif - -/* END OF SITE DEPENDENT DEFINITIONS */ - -typedef ASCIIcode textchar; -typedef struct kaninfo_s kaninfo; -struct kaninfo_s{ - char ktype, kstat; - textchar kpend; - int (*in_ln)(); - int (*out_ch)(); - kaninfo *next; -}; - -static kaninfo kanjiinfo_table[NOFILE]; - -static int kanji_file_code, kanji_term_code; /* kanji code same as NTT-JTeX */ -static get_kanji_code(); -static set_kanji_type(); - -boolean jbibtex_open_input (f, path_index, fopen_mode) - FILE **f; - int path_index; - const_string fopen_mode; -{ - boolean result; - result = open_input(f,path_index,fopen_mode); - if (result == false) return false; - set_kanji_type(*f, kanji_file_code); - return result; -} - -boolean jbibtex_open_output (f, fopen_mode) - FILE **f; - const_string fopen_mode; -{ - boolean result; - result = open_output(f,fopen_mode); - if (result == false) return false; - set_kanji_type(*f, kanji_file_code); - return result; -} - -boolean inputline(f) - FILE *f; -{ - int in; - register kaninfo *ki; - - last = 0; - ki = &kanjiinfo_table[fileno(f)]; - in = (*(ki->in_ln))(f,ki); - if (in == EOF && last == 0) - return false; - if (in != EOF && in != '\n' && in != '\r') - return false; - - /* Don't bother using xord if we don't need to. */ -#ifdef NONASCII - /* - for (in = 0; in <= last; in++) - buffer[in] = xord[buffer[in]]; - */ -#endif - - return true; -} - -jbibtex_printstr(s, c) - char *s, c; -{ - static unsigned char temp_buff[4096]; /* maybe too long */ - sprintf(temp_buff, "%s%c", s, c); - jbibtex_Fputs(logfile, temp_buff); - jbibtex_Fputs(stdout, temp_buff); -} - -jbibtex_putc(c, f) - textchar c; - FILE *f; -{ - register kaninfo *ki; - - ki = &kanjiinfo_table[fileno(f)]; - (*(ki->out_ch))(c, f, ki); -} - -jbibtex_Fputs(f, s) - register FILE *f; - register textchar *s; -{ - register kaninfo *ki; - - ki = &kanjiinfo_table[fileno(f)]; - for (; *s; s++) - (*(ki->out_ch))(*s, f, ki); -} - -initkanji() -{ - get_kanji_code(); -} - -/*** internal routines ***/ - -/* kanji state */ -#define KAN_ASCII 0 -#define KAN_JIS_FIRST 1 -#define KAN_JIS_SECOND 2 -#define KAN_ASCII_KAN 3 - -#define ESC '\033' -#define KANJIBIT 0x80 -#define isTeXkanji(c) ((c)&KANJIBIT) -#define deTeXkanji(c) ((c)&~KANJIBIT) - -static int in_ln_gen(); -static int in_ln_ascii(); -static int in_ln_jis(); -static int in_ln_sjis(); - -static int out_ch_ascii(); -static int out_ch_jis(); -static int out_ch_sjis(); -static int out_ch_euc(); - -static integer check_euc_kanji(); -static integer check_sj_kanji(); -static integer fix_kanji_range(); - -static int (*in_ln_tab[])() = { - in_ln_ascii, - in_ln_jis, - in_ln_jis, - in_ln_jis, - in_ln_jis, - in_ln_jis, - in_ln_jis, - 0, - 0, - 0, - in_ln_sjis, - 0, 0, 0, 0, 0, 0, 0, 0, 0, - in_ln_jis -}; -static int (*out_ch_tab[])() = { - out_ch_ascii, - out_ch_jis, - out_ch_jis, - out_ch_jis, - out_ch_jis, - out_ch_jis, - out_ch_jis, - 0, - 0, - 0, - out_ch_sjis, - 0, 0, 0, 0, 0, 0, 0, 0, 0, - out_ch_euc -}; -struct { - char esc_in, esc_out; -} jis_esc_tab[] = { - {'\0', '\0'}, /* dummy */ - {'@', 'J'}, - {'@', 'H'}, - {'@', 'B'}, - {'B', 'J'}, - {'B', 'H'}, - {'B', 'B'} -}; - -static -get_kanji_code() -{ - extern int atoi(); - register char *p; - - if (prockanjicode == JIS) kanji_file_code = 6; - else if (prockanjicode == EUC) kanji_file_code = 20; - else if (prockanjicode == SJIS) kanji_file_code = 10; - else kanji_file_code = DEFAULT_FILE_CODE; - kanji_term_code = DEFAULT_TERM_CODE; - - if( p=kpse_var_value("BIBFILECODE") ) - kanji_file_code = atoi(p); - if( (kanji_file_code<1)||(kanji_file_code>20)|| - (in_ln_tab[kanji_file_code] == 0) ) { - fprintf(stderr,"Kanji File Code:%d is illegal. I'll use system default\n", - kanji_file_code); - kanji_file_code = DEFAULT_FILE_CODE; - } - if( p=kpse_var_value("BIBTERMCODE") ) - kanji_term_code = atoi(p); - if( (kanji_term_code<1)||(kanji_term_code>20)|| - (in_ln_tab[kanji_term_code] == 0 ) ) { - fprintf(stderr,"Kanji Term Code:%d is illegal. I'll use system default\n", - kanji_term_code); - kanji_term_code = DEFAULT_TERM_CODE; - } - set_kanji_type(stdout,kanji_term_code); - set_kanji_type(stderr,kanji_term_code); -} - -static -set_kanji_type(f, ktype) - FILE *f; - int ktype; -{ - kaninfo *ki; - ki = &kanjiinfo_table[fileno(f)]; - ki->ktype = ktype; - ki->kstat = KAN_ASCII; - ki->in_ln = in_ln_tab[ktype]; - ki->out_ch = out_ch_tab[ktype]; -} - -static -int in_ln_ascii(f, ki) - register FILE *f; - kaninfo *ki; -{ - register int i; - - while ( last < bufsize && ((i = getc(f)) != EOF) && i != '\n' && i != '\r') { -#ifdef NONASCII - buffer[last++] = i; -#else - buffer[last++] = (i > 127 || i < 0)?' ':i; -#endif - } - return (i); -} - -static -int in_ln_jis(f, ki) - FILE *f; - kaninfo *ki; -{ - return (in_ln_gen(f, ki, check_euc_kanji, fix_kanji_range)); -} - -static -int in_ln_sjis(f, ki) - FILE *f; - kaninfo *ki; -{ - return (in_ln_gen(f, ki, check_sj_kanji, SJIStoEUC)); -} - -static integer -check_euc_kanji(c, ki) - textchar c; - kaninfo *ki; -{ - /* An illegal kanji should be detected, but ... */ - if (isTeXkanji(c)) { - ki->kpend = c; - ki->kstat = KAN_ASCII_KAN; - } else - buffer[last++] = c; -} - -static integer -check_sj_kanji(c, ki) - textchar c; - kaninfo *ki; -{ - if (c >= 0xe0 || c >= 0x80 && c < 0xa0) { - ki->kpend = c; - ki->kstat = KAN_ASCII_KAN; - } else if (c < 0x80) - buffer[last++] = c; - else { - /* Web procedure should be called for a better error handling. */ - fprintf(stderr, "\n1-byte kana (shift-jis) ignored.\n"); - buffer[last++] = '?'; - } -} - -static -int in_ln_gen(f, ki, checkkanji, makekanji) - register FILE *f; - register kaninfo *ki; - int (*checkkanji)(), (*makekanji)(); -{ - register int i; - - while ( last < bufsize && ((i = getc(f)) != EOF) && i != '\n' && i !='\r') { - if (ki->kstat == KAN_ASCII) { - if (i == ESC) { - if ((i = getc(f)) == '$') { - getc(f); - ki->kstat = KAN_JIS_SECOND; - } else if (i == '(') { - getc(f); - /* ki->kstat = KAN_ASCII; */ - } else { - /* Web procedure should be called for a better error handling. */ - fprintf(stderr,"\nText line contains an invalid escape sequence\n"); - exit(1); - } - } else - (*checkkanji)(i, ki); - } else if (ki->kstat == KAN_JIS_FIRST) { - integer c; - if (last >= bufsize-1) - return(i); - c = fix_kanji_range(JIStoEUC(((integer)ki->kpend << 8) | i)); - buffer[last++] = c >> 8; - buffer[last++] = c & 0xff; - ki->kstat = KAN_JIS_SECOND; - } else if (ki->kstat == KAN_JIS_SECOND) { - if (i == ESC) { - if ((i = getc(f)) == '$') { - getc(f); - /* ki->kstat = KAN_JIS_SECOND; */ - } else if (i == '(') { - getc(f); - ki->kstat = KAN_ASCII; - } else { - /* Web procedure should be called for a better error handling. */ - fprintf(stderr,"\nText line contains an invalid escape sequence\n"); - exit(1); - } - } else if (i < ' ') { - buffer[last++] = i; - } else { - ki->kpend = i; - ki->kstat = KAN_JIS_FIRST; - } - } else /*if (ki->kstat == KAN_ASCII_KAN)*/ { - integer c; - if (last >= bufsize-1) - return(i); - c = fix_kanji_range((*makekanji)(((integer)ki->kpend << 8) | i)); - buffer[last++] = c >> 8; - buffer[last++] = c & 0xff; - ki->kstat = KAN_ASCII; - } - } - return (i); -} - -static -out_ch_ascii(c, f, ki) - textchar c; - FILE *f; - kaninfo *ki; -{ - putc(deTeXkanji(c), f); -} - -static -out_ch_jis(c, f, ki) - textchar c; - FILE *f; - register kaninfo *ki; -{ - int cj; - - if (ki->kstat == KAN_JIS_FIRST) { - cj = EUCtoJIS(((integer)ki->kpend << 8) | c); - putc(cj >> 8, f); - putc(cj & 0xff, f); - ki->kstat = KAN_JIS_SECOND; - } else if (isTeXkanji(c)) { - if (ki->kstat == KAN_ASCII) { - putc(ESC, f); - putc('$', f); - putc(jis_esc_tab[ki->ktype].esc_in, f); - } - ki->kpend = c; - ki->kstat = KAN_JIS_FIRST; - } else { - if (ki->kstat == KAN_JIS_SECOND) { - putc(ESC, f); - putc('(', f); - putc(jis_esc_tab[ki->ktype].esc_out, f); - } - putc(c, f); - ki->kstat = KAN_ASCII; - } -} - -static -out_ch_sjis(c, f, ki) - textchar c; - FILE *f; - register kaninfo *ki; -{ - textchar c1, c2; - - if (ki->kstat == KAN_ASCII_KAN) { - integer csj; - csj = EUCtoSJIS(((integer)ki->kpend << 8) | c); - putc(csj >> 8, f); - putc(csj & 0xff, f); - ki->kstat = KAN_ASCII; - } else if (isTeXkanji(c)) { - ki->kpend = c; - ki->kstat = KAN_ASCII_KAN; - } else - putc(c, f); -} - -static -out_ch_euc(c, f, ki) - textchar c; - FILE *f; - kaninfo *ki; -{ - putc(c, f); -} - -/* - * Kanji conversion functions - */ - -static integer -fix_kanji_range(c) - integer c; -{ - return (c < 0xa100 || (c >= 0xa900 && c <= 0xafff) || c >= 0xf500) ? - 0xa2a3 : c; -} diff --git a/language/japanese/ptex/jbibextra.h b/language/japanese/ptex/jbibextra.h deleted file mode 100644 index c030aae06e..0000000000 --- a/language/japanese/ptex/jbibextra.h +++ /dev/null @@ -1,27 +0,0 @@ -#include "cpascal.h" -#include "kanji.h" - -/* re-define aopenin, aopenout */ -#undef aopenin -#undef aopenout -#define aopenin(f, p) jbibtex_open_input (&(f), p, FOPEN_R_MODE) -#define aopenout(f) jbibtex_open_output (&(f), FOPEN_W_MODE) - -/* override open_input,open_output */ -#define open_input(f,p,m) jbibtex_open_input(f,p,m) -#define open_output(f,p,m) jbibtex_open_output(f,p,m) - -#undef Fputs -#define Fputs(f,s) jbibtex_Fputs(f,s) -#undef putc -#define putc(c,f) jbibtex_putc(c,f) - -#define printstr(s,c) jbibtex_printstr(s,c) - -extern boolean jbibtex_open_input(); -extern boolean jbibtex_open_output(); -extern jbibtex_printstr(); -extern jbibtex_Fputs(); -extern jbibtex_putc(); -extern boolean inputline(); -extern initkanji(); diff --git a/language/japanese/ptex/jbibtex.ch b/language/japanese/ptex/jbibtex.ch deleted file mode 100644 index 43bd83ea1b..0000000000 --- a/language/japanese/ptex/jbibtex.ch +++ /dev/null @@ -1,1649 +0,0 @@ -% Change file for BibTeX in C, originally by Howard Trickey. -% -% 05/28/84 Initial implementation, version 0.41 of BibTeX -% 07/01/84 Version 0.41a of BibTeX. -% 12/17/84 Version 0.97c of BibTeX. -% 02/12/85 Version 0.98c of BibTeX. -% 02/25/85 Newer version 0.98c of BibTeX. -% 03/25/85 Version 0.98f of BibTeX -% 05/23/85 Version 0.98i of BibTeX -% 02/11/88 Version 0.99b of BibTeX -% 04/04/88 Version 0.99c; converted for use with web2c (ETM). -% 11/30/89 Use FILENAMESIZE instead of 1024 (KB). -% 03/09/90 `int' is a bad variable name for C. -% (more recent changes in the ChangeLog) -% -% 5/ 2/89 Version 0.20 of JBiBTeX by Shouichi Matsui -% 12/25/90 Version 0.30 of JBibTeX by Shouichi Matsui -% 1/ 1/91 last update for JBibTeX 0.30 by Shouichi Matsui -% 10/30/92 last update for JBibTeX 0.31 for bug fix by Shouichi Matsui -% 11/02/94 Version 0.32 for use with web2c 6.1, by Takafumi Sakurai -% -% - -% [0] Let bibtex.tex work with latest webmac (which defines \ET, hence -% making E active loses). -@x -\catcode`E=13 \uppercase{\def E{e}} -\def\\#1{\hbox{\let E=\drop\it#1\/\kern.05em}} % italic type for identifiers -@y -\let\maybe = \iffalse % process only changed sections -@z - -@x only print chnages -\def\title{\BibTeX\ } -@y -\let\maybe=\iffalse -\def\title{J\BibTeX\ 0.32 Changes for C Version \BibTeX\ } -@z - -@x - \def\titlepage{F} - \centerline{\:\titlefont The {\:\ttitlefont \BibTeX} preprocessor} - \vskip 15pt \centerline{(Version 0.99c---\today)} \vfill} -@y - \def\titlepage{F} - \centerline{\:\titlefont The {\:\ttitlefont J\BibTeX} preprocessor} - \vskip 15pt \centerline{(Version 0.32 base on C Version \BibTeX 0.99c---\today)} \vfill} -@z - -%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%% -% [1] banner -%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%% -@x -@d banner=='This is BibTeX, Version 0.99c' {printed when the program starts} -@y -@d banner=='This is JBibTeX, Version 0.99c-j0.33' - {printed when the program starts} -@z - -% [2] `term_in' and `term_out' are standard input and output. But -% there is a complication: BibTeX passes `term_out' to some routines as -% a var parameter. web2c turns a var parameter f into &f at the calling -% side -- and stdout is sometimes implemented as `&_iob[1]' or some -% such. An address of an address is invalid. Therefore, we define -% variables `standardinput' and `standardoutput' in openinout.c. -@x -@d term_out == tty -@d term_in == tty -@y -@d term_out == standard_output -@d term_in == standard_input - -@= -standard_input, standard_output: text; -@z - -@x [4] Turn debug..gubed et al. into #ifdef's. -@d debug == @{ { remove the `|@{|' when debugging } -@d gubed == @t@>@} { remove the `|@}|' when debugging } -@f debug == begin -@f gubed == end -@# -@d stat == @{ { remove the `|@{|' when keeping statistics } -@d tats == @t@>@} { remove the `|@}|' when keeping statistics } -@f stat == begin -@f tats == end -@# -@d trace == @{ { remove the `|@{|' when in |trace| mode } -@d ecart == @t@>@} { remove the `|@}|' when in |trace| mode } -@f trace == begin -@f ecart == end -@y -@d debug == ifdef('TEXMF_DEBUG') -@d gubed == endif('TEXMF_DEBUG') -@f debug == begin -@f gubed == end -@# -@d stat == ifndef('NO_BIBTEX_STAT') -@d tats == endifn('NO_BIBTEX_STAT') -@f stat==begin -@f tats==end -@# -@d trace == ifdef@&('TRACE') -@d ecart == endif@&('TRACE') -@f trace == begin -@f ecart == end -@z - -@x [10] Don't print the banner unless verbose, and initialize dynamic arrays. -begin -initialize; -print_ln(banner);@/ -@y -@ -begin -standard_input := stdin; -standard_output := stdout; -@# -max_ent_ints := MAX_ENT_INTS; -max_ent_strs := MAX_ENT_STRS; -pool_size := POOL_SIZE; -max_bib_files := MAX_BIB_FILES; -max_fields := MAX_FIELDS; -@# -{Add one to the sizes because the Pascal arrays start at 1, not 0.} -bib_file := XTALLOC (max_bib_files + 1, alpha_file); -bib_list := XTALLOC (max_bib_files + 1, str_number); -entry_ints := XTALLOC (max_ent_ints + 1, integer); -entry_strs := XTALLOC ((max_ent_strs + 1) * (ent_str_size + 1), ASCII_code); -wiz_functions := XTALLOC (wiz_fn_space + 1, hash_ptr2); -field_info := XTALLOC (max_fields + 1, str_number); -s_preamble := XTALLOC (max_bib_files + 1, str_number); -str_pool := XTALLOC (pool_size + 1, ASCII_code); -@# -initialize; -if verbose then begin - print (banner); - print_ln (version_string); -end; -@z - -% [10] Possibly exit with bad status. It doesn't seem worth it to move -% the definitions of the |history| values to above this module; hence the 1. -@x -exit_program: -end. -@y -exit_program: -if (history > 1) then uexit (history); -end. -@z - -@x [13] Remove nonlocal goto. - goto exit_program; -@y - uexit (1); -@z - -@x [14] Increase some constants, and uppercase others for dynamic arrays. -@= -@y -@= -@!hash_prime = 30011; {a prime number about 85\% of |hash_size| and |>= 128|} -@!hash_size = 35307; {must be |>= max_strings| and |>= hash_prime|} -@!hash_base = empty + 1; {lowest numbered hash-table location} -@!hash_max = hash_base + hash_size - 1; {highest numbered hash-table location} -@!hash_maxp1 = hash_max + 1; {because we need a scalar constant later} -@!max_hash_value = hash_prime + hash_prime - 2 + 127; {|h|'s maximum value} -@!quote_next_fn = hash_base - 1; {special marker used in defining functions} -@!end_of_def = hash_max + 1; {another such special marker} -@!undefined = hash_max + 1; {a special marker used for |type_list|} -@z - -@x [still 14] -@!buf_size=1000; {maximum number of characters in an input line (or string)} -@y -@!buf_size=9000; {maximum number of characters in an input line (or string)} -@z - -@x [still 14] -@!max_bib_files=20; {maximum number of \.{.bib} files allowed} -@!pool_size=65000; {maximum number of characters in strings} -@!max_strings=4000; {maximum number of strings, including pre-defined; - must be |<=hash_size|} -@!max_cites=750; {maximum number of distinct cite keys; must be - |<=max_strings|} -@!min_crossrefs=2; {minimum number of cross-refs required for automatic - |cite_list| inclusion} -@!wiz_fn_space=3000; {maximum amount of |wiz_defined|-function space} -@y [still 14] -@!MAX_BIB_FILES=20; {initial number of \.{.bib} files allowed} -@!POOL_SIZE=65000; {initial number of characters in strings} -@!max_strings=35000; {maximum number of strings, including pre-defined; - must be |<=hash_size|} -@!max_cites=5000; {maximum number of distinct cite keys; must be - |<=max_strings|} -@!WIZ_FN_SPACE=3400; {initial amount of |wiz_defined|-function space} -{|min_crossrefs| can be set at runtime now.} -@z - -@x [still 14] handle long citation strings -@!max_ent_ints=3000; {maximum number of |int_entry_var|s - (entries $\times$ |int_entry_var|s)} -@!max_ent_strs=3000; {maximum number of |str_entry_var|s - (entries $\times$ |str_entry_var|s)} -@!ent_str_size=100; {maximum size of a |str_entry_var|; must be |<=buf_size|} -@!glob_str_size=1000; {maximum size of a |str_global_var|; - must be |<=buf_size|} -@!max_fields=17250; {maximum number of fields (entries $\times$ fields, -@y -@!MAX_ENT_INTS=3000; {initial number of |int_entry_var|s - (entries $\times$ |int_entry_var|s)} -@!MAX_ENT_STRS=3000; {initial number of |str_entry_var|s - (entries $\times$ |str_entry_var|s)} -@!ent_str_size=250; {maximum size of a |str_entry_var|; must be |<=buf_size|} -@!glob_str_size=3000; {maximum size of a |str_global_var|; - must be |<=buf_size|} -@!MAX_FIELDS=5000; {initial number of fields (entries $\times$ fields, -@z - -@x [15] Increase more constants in the web defines. -@d hash_size=5000 {must be |>= max_strings| and |>= hash_prime|} -@d hash_prime=4253 {a prime number about 85\% of |hash_size| and |>= 128| - and |< @t$2^{14}-2^6$@>|} -@d file_name_size=40 {file names shouldn't be longer than this} -@d max_glob_strs=10 {maximum number of |str_global_var| names} -@y -{|hash_size| and |hash_prime| are |const| constants now.} -@d max_glob_strs=20 {maximum number of |str_global_var| names - \.{James.Ashton@keating.anu.edu.au} says his - indxcite package needs at least 15 here.} -@# -@d file_name_size==maxint {file names have no arbitrary maximum length} -@# -{For dynamic allocation.} -@d x_entry_strs_tail(#) == (#)] -@d x_entry_strs(#) == entry_strs[(#) * (ent_str_size+1) + x_entry_strs_tail -@z - -@x [16] Add new variables-that-used-to-be-constants for dynamic arrays. -@= -@y -@= -@!max_ent_ints: integer; -@!max_ent_strs: integer; -@!pool_size: integer; -@!max_bib_files: integer; -@!wiz_fn_space: integer; -@!max_fields: integer; -@z - -@x [17] Remove painfully small upper bound on hash_prime -if (hash_prime >= (16384-64)) then bad:=10*bad+6; -@y -@z - -@x [22, 23, 27, 28] Allow any character as input. [22] -@!ASCII_code=0..127; {seven-bit numbers} -@y -@!ASCII_code=0..255; {eight-bit numbers} -@z - -@x [23] -@d text_char == char {the data type of characters in text files} -@d first_text_char=0 {ordinal number of the smallest element of |text_char|} -@d last_text_char=127 {ordinal number of the largest element of |text_char|} - -@= -i:0..last_text_char; {this is the first one declared} -@y -@d text_char == ASCII_code {the data type of characters in text files} -@d first_text_char=0 {ordinal number of the smallest element of |text_char|} -@d last_text_char=255 {ordinal number of the largest element of |text_char|} - -@= -i:integer; -@z - -@x Changes for JBibTeX by Shouichi Matsui [27] -for i:=1 to @'37 do xchr[i]:=' '; -xchr[tab]:=chr(tab); -@y -for i:=1 to @'37 do xchr[i]:=' '; -xchr[tab]:=chr(tab); -for i:=@'200 to @'237 do xchr[i]:=chr(i-@'200); -for i:=@'240 to 255 do xchr[i]:=chr(i); -xchr[@'33]:=chr(@'33); {escape char} -@z - -@x Changes for JBibTeX by Shouichi Matsui [28] -@= -for i:=first_text_char to last_text_char do xord[chr(i)]:=invalid_code; -for i:=1 to @'176 do xord[xchr[i]]:=i; -@y -@= -for i:=first_text_char to last_text_char do xord[i]:=invalid_code; -for i:=1 to @'176 do xord[i]:= i; -for i:=@'200 to @'237 do xord[i]:= i-@'200; -for i:=@'240 to 255 do xord[i]:=i; -@z - -@x Changes for JBibTeX by Shouichi Matsui for ver. 0.30 -@d period = "." {these are three} -@d question_mark = "?" {string-ending characters} -@d exclamation_mark = "!" {of interest in \.{add.period\$}} -@y -@d period = "." {these are three} -@d question_mark = "?" {string-ending characters} -@d exclamation_mark = "!" {of interest in \.{add.period\$}} -@d zen_pun_first = 161 {Zenkaku punctuation first byte; in EUC} -@d zen_space = 161 {Zenkaku space first, second byte; in EUC} -@d zen_kuten = 162 {Zenkaku kuten second byte; in EUC} -@d zen_ten = 163 {Zenkaku ten second byte; in EUC} -@d zen_comma = 164 {Zenkaku comman second byte; in EUC} -@d zen_period = 165 {Zenkaku period second byte; in EUC} -@d zen_question = 169 {Zenkaku question mark second byte; in EUC} -@d zen_exclamation = 170 {Zenkaku exclamation mark second byte; in EUC} -@z -@x Changes for JBibTeX by Shouichi Matsui [32] -@= -for i:=0 to @'177 do lex_class[i] := other_lex; -for i:=0 to @'37 do lex_class[i] := illegal; -lex_class[invalid_code] := illegal; -lex_class[tab] := white_space; -lex_class[space] := white_space; -lex_class[tie] := sep_char; -lex_class[hyphen] := sep_char; -for i:=@'60 to @'71 do lex_class[i] := numeric; -for i:=@'101 to @'132 do lex_class[i] := alpha; -for i:=@'141 to @'172 do lex_class[i] := alpha; -@y -@= -for i:=0 to @'377 do lex_class[i] := other_lex; -for i:=0 to @'37 do lex_class[i] := illegal; -lex_class[invalid_code] := illegal; -lex_class[tab] := white_space; -lex_class[13] := white_space; -lex_class[space] := white_space; -lex_class[tie] := sep_char; -lex_class[hyphen] := sep_char; -for i:=@'60 to @'71 do lex_class[i] := numeric; -for i:=@'101 to @'132 do lex_class[i] := alpha; -for i:=@'141 to @'172 do lex_class[i] := alpha; -for i:=@'200 to @'237 do lex_class[i] := illegal; -for i:=@'240 to 255 do lex_class[i] := alpha; -lex_class[@'33]:=alpha; -@z - -@x Changes for JBibTeX by Shouichi Matsui [33] -@= -for i:=0 to @'177 do id_class[i] := legal_id_char; -for i:=0 to @'37 do id_class[i] := illegal_id_char; -id_class[space] := illegal_id_char; -id_class[tab] := illegal_id_char; -id_class[double_quote] := illegal_id_char; -id_class[number_sign] := illegal_id_char; -id_class[comment] := illegal_id_char; -id_class[single_quote] := illegal_id_char; -id_class[left_paren] := illegal_id_char; -id_class[right_paren] := illegal_id_char; -id_class[comma] := illegal_id_char; -id_class[equals_sign] := illegal_id_char; -id_class[left_brace] := illegal_id_char; -id_class[right_brace] := illegal_id_char; -@y -@= -for i:=0 to @'377 do id_class[i] := legal_id_char; -for i:=0 to @'37 do id_class[i] := illegal_id_char; -for i:=@'200 to @'237 do id_class[i] := illegal_id_char; -id_class[@'33] := legal_id_char; -id_class[space] := illegal_id_char; -id_class[tab] := illegal_id_char; -id_class[double_quote] := illegal_id_char; -id_class[number_sign] := illegal_id_char; -id_class[comment] := illegal_id_char; -id_class[single_quote] := illegal_id_char; -id_class[left_paren] := illegal_id_char; -id_class[right_paren] := illegal_id_char; -id_class[comma] := illegal_id_char; -id_class[equals_sign] := illegal_id_char; -id_class[left_brace] := illegal_id_char; -id_class[right_brace] := illegal_id_char; -@z - -@x Changes for JBibTeX by Shouichi Matsui [35] -char_width[@'167] := 722; -char_width[@'170] := 528; -char_width[@'171] := 528; -char_width[@'172] := 444; -char_width[@'173] := 500; -char_width[@'174] :=1000; -char_width[@'175] := 500; -char_width[@'176] := 500; -@y -char_width[@'167] := 722; -char_width[@'170] := 528; -char_width[@'171] := 528; -char_width[@'172] := 444; -char_width[@'173] := 500; -char_width[@'174] :=1000; -char_width[@'175] := 500; -char_width[@'176] := 500; -for i:=@'240 to 254 do char_width[i]:=514; -@z - -% [37] file_name_size no longer exists. See comments in tex.ch for why -% we change the element type to text_char. -@x -@!name_of_file:packed array[1..file_name_size] of char; - {on some systems this is a \&{record} variable} -@!name_length:0..file_name_size; - {this many characters are relevant in |name_of_file| (the rest are blank)} -@!name_ptr:0..file_name_size+1; {index variable into |name_of_file|} -@y -@!name_of_file:^text_char; -@!name_length:integer; - {this many characters are relevant in |name_of_file| } -@!name_ptr:integer; {index variable into |name_of_file|} -@z - -@x [38] File opening. -The \ph\ compiler with which the present version of \TeX\ was prepared has -extended the rules of \PASCAL\ in a very convenient way. To open file~|f|, -we can write -$$\vbox{\halign{#\hfil\qquad&#\hfil\cr -|reset(f,@t\\{name}@>,'/O')|&for input;\cr -|rewrite(f,@t\\{name}@>,'/O')|&for output.\cr}}$$ -The `\\{name}' parameter, which is of type `\ignorespaces|packed -array[@t\<\\{any}>@>] of text_char|', stands for the name of -the external file that is being opened for input or output. -Blank spaces that might appear in \\{name} are ignored. - -The `\.{/O}' parameter tells the operating system not to issue its own -error messages if something goes wrong. If a file of the specified name -cannot be found, or if such a file cannot be opened for some other reason -(e.g., someone may already be trying to write the same file), we will have -|@!erstat(f)<>0| after an unsuccessful |reset| or |rewrite|. This allows -\TeX\ to undertake appropriate corrective action. - -\TeX's file-opening procedures return |false| if no file identified by -|name_of_file| could be opened. - -@d reset_OK(#)==erstat(#)=0 -@d rewrite_OK(#)==erstat(#)=0 - -@= -function erstat(var f:file):integer; extern; {in the runtime library} -@#@t\2@> -function a_open_in(var f:alpha_file):boolean; {open a text file for input} -begin reset(f,name_of_file,'/O'); a_open_in:=reset_OK(f); -end; -@# -function a_open_out(var f:alpha_file):boolean; {open a text file for output} -begin rewrite(f,name_of_file,'/O'); a_open_out:=rewrite_OK(f); -end; -@y -@ File opening will be done in C. -@d no_file_path = -1 -@z - -@x [39] Do file closing in C. -@= -procedure a_close(var f:alpha_file); {close a text file} -begin close(f); -end; -@y -File closing will be done in C, too. -@z - -%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%% -% [47] input for JBibTeX -%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%% -@x - while (not eoln(f)) do - begin - if (last >= buf_size) then - buffer_overflow; - buffer[last]:=xord[f^]; - get(f); incr(last); - end; - get(f); -@y - if (not input_line(f)) then - buffer_overflow; -@z - -@x [48] Dynamically allocate str_pool. -@!str_pool : packed array[pool_pointer] of ASCII_code; {the characters} -@y -@!str_pool : ^ASCII_code; {the characters} -@z - -@x [49] pool_size is a variable now, so can't be used as a constant. -@!pool_pointer = 0..pool_size; {for variables that point into |str_pool|} -@y -@!pool_pointer = integer; {for variables that point into |str_pool|} -@z - -@x [53] Reallocate str_pool. -overflow('pool size ',pool_size); -@y -BIB_XRETALLOC ('str_pool', str_pool, ASCII_code, pool_size, - pool_size + POOL_SIZE); -@z - -% [58] (start_name) reallocate name_of_file for the new name and -% terminate with null. -@x -name_ptr := 1; -@y -name_ptr := 1; -free (name_of_file); -name_of_file := xmalloc (length (file_name) + 2); -@z - -@x -name_length := length(file_name); -@y -name_length := length(file_name); -name_of_file[name_length + 1] := 0; -@z - -% [60] (add_extension) Don't pad name_of_file with blanks, terminate -% with null. And junk the overflow check, since Web2c can't translate -% the print statement properly and it can never happen, anyway. -@x -if (name_length + length(ext) > file_name_size) then - begin - print ('File=',name_of_file,', extension='); - print_pool_str (ext); print_ln (','); - file_nm_size_overflow; - end; -@y -@z -@x -name_ptr := name_length+1; -while (name_ptr <= file_name_size) do {pad with blanks} - begin - name_of_file[name_ptr] := ' '; - incr(name_ptr); - end; -@y -name_of_file[name_length + 1] := 0; -@z - -@x [61] (add_area) Delete this print of name_of_file as well. -if (name_length + length(area) > file_name_size) then - begin - print ('File='); - print_pool_str (area); print (name_of_file,','); - file_nm_size_overflow; - end; -@y -@z - -@x [65] hash_base and hash_max are now Pascal consts, instead of web macros. -@d hash_base = empty + 1 {lowest numbered hash-table location} -@d hash_max = hash_base + hash_size - 1 {highest numbered hash-table location} -@y -@z -@x -@!hash_used : hash_base..hash_max+1; {allocation pointer for hash table} -@y -@!hash_used : hash_base..hash_maxp1; {allocation pointer for hash table} -@z - -@x [68] This is const now. -@d max_hash_value = hash_prime+hash_prime-2+127 {|h|'s maximum value} -@y -@z - -@x [77] The predefined string array starts at zero instead of one. -for i:=1 to len do - buffer[i] := xord[pds[i]]; -@y -for i:=1 to len do - buffer[i] := xord[pds[i-1]]; -@z - -@x [97] Can't do this tangle-time arithmetic with file_name_size. -@!aux_name_length : 0..file_name_size+1; {\.{.aux} name sans extension} -@y -@!aux_name_length : integer; -@z - -@x [100] Reading the aux file name and command-line processing. -This procedure consists of a loop that reads and processes a (nonnull) -\.{.aux} file name. It's this module and the next two that must be -changed on those systems using command-line arguments. Note: The -|term_out| and |term_in| files are system dependent. - -@= -procedure get_the_top_level_aux_file_name; -label aux_found,@!aux_not_found; -var @@/ -begin -check_cmnd_line := false; {many systems will change this} -loop - begin - if (check_cmnd_line) then - @ - else - begin - write (term_out,'Please type input file name (no extension)--'); - if (eoln(term_in)) then {so the first |read| works} - read_ln (term_in); - aux_name_length := 0; - while (not eoln(term_in)) do - begin - if (aux_name_length = file_name_size) then - begin - while (not eoln(term_in)) do {discard the rest of the line} - get(term_in); - sam_you_made_the_file_name_too_long; - end; - incr(aux_name_length); - name_of_file[aux_name_length] := term_in^; - get(term_in); - end; - end; - @; -aux_not_found: - check_cmnd_line := false; - end; -aux_found: {now we're ready to read the \.{.aux} file} -end; -@y -@= -procedure get_the_top_level_aux_file_name; -label aux_found,@!aux_not_found; -begin - @ - {Leave room for the \.., the extension, the junk byte at the - beginning, and the null byte at the end.} - init_kanji; - name_of_file := xmalloc (strlen (cmdline (optind)) + 4 + 2); - strcpy (name_of_file + 1, cmdline (optind)); - aux_name_length := strlen (name_of_file + 1); - @; -aux_not_found: uexit (1); -aux_found: {now we're ready to read the \.{.aux} file} -end; -@z - -% [101] Don't need this variable; we use argc to check if we have a -% command line. -@x -@= -@!check_cmnd_line : boolean; {|true| if we're to check the command line} -@y -@z - -@x [102] Get the aux file name from the command line. -@= -begin -do_nothing; {the ``default system'' doesn't use the command line} -end -@y -@= -kpse_set_progname (argv[0]); -parse_arguments; -@z - -% [106] Don't use a path to find the aux file, and don't add the -% extension if it's already there. -@x -add_extension (s_aux_extension); {this also sets |name_length|} -aux_ptr := 0; {initialize the \.{.aux} file stack} -if (not a_open_in(cur_aux_file)) then - sam_you_made_the_file_name_wrong; -@y -if strcmp (name_of_file + 1 + name_length - 3, 'aux') <> 0 then - add_extension (s_aux_extension); {this also sets |name_length|} -aux_ptr := 0; {initialize the \.{.aux} file stack} -if (not a_open_in(cur_aux_file,no_file_path)) then - sam_you_made_the_file_name_wrong; -@z - -@x [110] Be silent unless verbose. -print ('The top-level auxiliary file: '); -print_aux_name; -@y -if verbose then begin - print ('The top-level auxiliary file: '); - print_aux_name; -end; -@z - -@x [117] bib_list is dynamically allocated. -@!bib_list : array[bib_number] of str_number; {the \.{.bib} file list} -@y -@!bib_list : ^str_number; {the \.{.bib} file list} -@z -@x [still 117] bib_file also. -@!bib_file : array[bib_number] of alpha_file; {corresponding |file| variables} -@y -@!bib_file : ^alpha_file; {corresponding |file| variables} -@z - -@x [118] max_bib_files is a variable now, so can't be used as a const. -@!bib_number = 0..max_bib_files; {gives the |bib_list| range} -@y -@!bib_number = integer; {gives the |bib_list| range} -@z - -@x [123] Reallocate when we run out of bib files. - overflow('number of database files ',max_bib_files); -@y -begin - BIB_XRETALLOC ('bib_list', bib_list, str_number, max_bib_files, - max_bib_files + MAX_BIB_FILES); - {Already increased |max_bib_files|, so don't need to do it again.} - BIB_XRETALLOC ('bib_file', bib_file, alpha_file, max_bib_files, - max_bib_files); - BIB_XRETALLOC ('s_preamble', s_preamble, str_number, max_bib_files, - max_bib_files); -end; -@z - -@x [still 123] Use BIBINPUTS to search for the .bib file. -add_extension (s_bib_extension); -if (not a_open_in(cur_bib_file)) then - begin - add_area (s_bib_area); - if (not a_open_in(cur_bib_file)) then - open_bibdata_aux_err ('I couldn''t open database file '); - end; -@y -if (not a_open_in(cur_bib_file, kpse_bib_format)) then - open_bibdata_aux_err ('I couldn''t open database file '); -@z - -@x [127] Use BSTINPUTS/TEXINPUTS to search for .bst files. -add_extension (s_bst_extension); -if (not a_open_in(bst_file)) then - begin - add_area (s_bst_area); - if (not a_open_in(bst_file)) then - begin - print ('I couldn''t open style file '); - print_bst_name;@/ - bst_str := 0; {mark as unused again} - aux_err_return; - end; - end; -@y -if (not a_open_in(bst_file, kpse_bst_format)) then - begin - print ('I couldn''t open style file '); - print_bst_name;@/ - bst_str := 0; {mark as unused again} - aux_err_return; - end; -@z - -@x [127] Be silent unless verbose. -print ('The style file: '); -print_bst_name; -@y -if verbose then begin - print ('The style file: '); - print_bst_name; -end; -@z - -% [141] Don't pad with blanks. -% Don't use a path to search for subsidiary aux files, either. -@x -while (name_ptr <= file_name_size) do {pad with blanks} - begin - name_of_file[name_ptr] := ' '; - incr(name_ptr); - end; -if (not a_open_in(cur_aux_file)) then -@y -name_of_file[name_ptr] := 0; -if (not a_open_in(cur_aux_file, no_file_path)) then -@z - -% [151] This goto gets turned into a setjmp/longjmp by ./convert -- -% unfortunately, it is a nonlocal goto. ekrell@ulysses.att.com -% implemented the conversion. -@x -buf_ptr2 := last; {to get the first input line} -loop - begin - if (not eat_bst_white_space) then {the end of the \.{.bst} file} - goto bst_done; - get_bst_command_and_process; - end; -bst_done: a_close (bst_file); -@y -buf_ptr2 := last; {to get the first input line} -hack1; - begin - if (not eat_bst_white_space) then {the end of the \.{.bst} file} - hack2; - get_bst_command_and_process; - end; -bst_done: a_close (bst_file); -@z - -% max_ent_ints, max_ent_strs, max_fields are no longer const. -@x [160] quote_next_fn and end_of_def are Pascal consts, instead of web macros. -@d quote_next_fn = hash_base - 1 {special marker used in defining functions} -@d end_of_def = hash_max + 1 {another such special marker} - -@= -@!fn_class = 0..last_fn_class; {the \.{.bst} function classes} -@!wiz_fn_loc = 0..wiz_fn_space; {|wiz_defined|-function storage locations} -@!int_ent_loc = 0..max_ent_ints; {|int_entry_var| storage locations} -@!str_ent_loc = 0..max_ent_strs; {|str_entry_var| storage locations} -@!str_glob_loc = 0..max_glb_str_minus_1; {|str_global_var| storage locations} -@!field_loc = 0..max_fields; {individual field storage locations} -@y -@= -@!fn_class = 0..last_fn_class; {the \.{.bst} function classes} -@!wiz_fn_loc = integer; {|wiz_defined|-function storage locations} -@!int_ent_loc = integer; {|int_entry_var| storage locations} -@!str_ent_loc = integer; {|str_entry_var| storage locations} -@!str_glob_loc = 0..max_glb_str_minus_1; {|str_global_var| storage locations} -@!field_loc = integer; {individual field storage locations} -@z - -@x Dynamically allocate wiz_functions. -@!wiz_functions : packed array[wiz_fn_loc] of hash_ptr2; -@y -@!wiz_functions : ^hash_ptr2; -@z - -% [still 161] Convert entry_ints and entry_strs to dynamically-allocated -% one-dimensional arrays; too bad C and Pascal lag Fortran in supporting -% run-time dimensioning of multidimensional arrays. Other changes that -% follow this one will convert every reference to entry_strs[p][q] to -% x_entry_strs(p)(q), the equivalent of entry_strs[p*(ent_str_size+1) + -% q], but hidden inside a macro to mask the addressing computation. -% Although WEB does not have multi-argument macros, webman.tex shows how -% to get the equivalent effect. -@x -@!entry_ints : array[int_ent_loc] of integer; -@!num_ent_ints : int_ent_loc; {the number of distinct |int_entry_var| names} -@!str_ent_ptr : str_ent_loc; {general |str_entry_var| location} -@!entry_strs : array[str_ent_loc] of - packed array[0..ent_str_size] of ASCII_code; -@y -@!entry_ints : ^integer; {dynamically-allocated array} -@!num_ent_ints : int_ent_loc; {the number of distinct |int_entry_var| names} -@!str_ent_ptr : str_ent_loc; {general |str_entry_var| location} -@!entry_strs : ^ASCII_code; {dynamically-allocated array} -@z - -@x [still 161] Dynamically allocate field_info. -@!field_info : packed array[field_loc] of str_number; -@y -@!field_info : ^str_number; -@z - -@x [198] A variable named `int' is no good in C. -@= -@y -@d int == the_int -@= -@z - -@x [200] Reallocate if out of wizard space. -if (single_ptr + wiz_def_ptr > wiz_fn_space) then - begin - print (single_ptr + wiz_def_ptr : 0,': '); - overflow('wizard-defined function space ',wiz_fn_space); - end; -@y -if (single_ptr + wiz_def_ptr > wiz_fn_space) then - begin - BIB_XRETALLOC ('wiz_functions', wiz_functions, hash_ptr2, - wiz_fn_space, wiz_fn_space + WIZ_FN_SPACE); - end; -@z - -@x [220] undefined is now a Pascal const, instead of a web macro -@d undefined = hash_max + 1 {a special marker used for |type_list|} -@y -@z - -@x [223] Be silent unless verbose. - print ('Database file #',bib_ptr+1:0,': '); - print_bib_name;@/ -@y - if verbose then begin - print ('Database file #',bib_ptr+1:0,': '); - print_bib_name; - end; -@z - -@x [226] Reallocate if out of fields. -procedure check_field_overflow (@!total_fields : integer); -begin -if (total_fields > max_fields) then - begin - print_ln (total_fields:0,' fields:'); - overflow('total number of fields ',max_fields); -@y -procedure check_field_overflow (@!total_fields : integer); -var @!f_ptr: field_loc; - @!start_fields: field_loc; -begin -if (total_fields > max_fields) then - begin - start_fields := max_fields; - BIB_XRETALLOC ('field_info', field_info, str_number, max_fields, - total_fields + MAX_FIELDS); - {Initialize to |missing|.} - for f_ptr := start_fields to max_fields do begin - field_info[f_ptr] := missing; - end; -@z - -@x [242] Reallocate when we run out of s_preamble's. - bib_err ('You''ve exceeded ',max_bib_files:0,' preamble commands'); -@y -begin - BIB_XRETALLOC ('bib_list', bib_list, str_number, max_bib_files, - max_bib_files + MAX_BIB_FILES); - {Already increased |max_bib_files|, so don't need to do it again.} - BIB_XRETALLOC ('bib_file', bib_file, alpha_file, max_bib_files, - max_bib_files); - BIB_XRETALLOC ('s_preamble', s_preamble, str_number, max_bib_files, - max_bib_files); -end; -@z - -@x [264] Add check for fieldinfo[] overflow. -field_ptr := entry_cite_ptr * num_fields + fn_info[field_name_loc]; -@y -field_ptr := entry_cite_ptr * num_fields + fn_info[field_name_loc]; -check_field_overflow(field_ptr); -@z - -@x [278] Add check for fieldinfo[] overflow. -@= -begin -@y -@= -begin -check_field_overflow((num_cites - 1) * num_fields + crossref_num); -@z - -@x [280] Add check for fieldinfo[] overflow. -@= -begin -@y -@= -begin -check_field_overflow((num_cites - 1) * num_fields + crossref_num); -@z - -@x [286] Add check for fieldinfo[] overflow. -@= -begin -@y -@= -begin -check_field_overflow((cite_xptr + 1) * num_fields); -@z - -@x [287] Reallocate on overflow. -if (num_ent_ints*num_cites > max_ent_ints) then - begin - print (num_ent_ints*num_cites,': '); - overflow('total number of integer entry-variables ',max_ent_ints); - end; -@y -if (num_ent_ints*num_cites > max_ent_ints) then - BIB_XRETALLOC ('entry_ints', entry_ints, integer, max_ent_ints, - (num_ent_ints + 1) * (num_cites + 1)); -@z - -@x [288] Reallocate entry_strs. -if (num_ent_strs*num_cites > max_ent_strs) then - begin - print (num_ent_strs*num_cites,': '); - overflow('total number of string entry-variables ',max_ent_strs); - end; -@y -{Have to include the maximum size of each string in the reallocation, - unfortunately, since we're faking a two-dimensional array. And then - decrease |max_ent_strs| again, because it's the number of strings, not - the number of characters (which is what we're allocating.)} -if (num_ent_strs * num_cites > max_ent_strs) then begin - BIB_XRETALLOC ('entry_strs', entry_strs, ASCII_code, max_ent_strs, - (num_ent_strs + 1) * (num_cites + 1) * (ent_str_size + 1)); - max_ent_strs := num_ent_strs * num_cites; - {The new values are initialized in the next few statements from - \.{bibtex.web}.} -end; -@z - -@x [289] Macroize entry_strs[][]. - entry_strs[str_ent_ptr][0] := end_of_string; -@y - x_entry_strs(str_ent_ptr)(0) := end_of_string; -@z - -@x [302] Macroize entry_strs[][]. - char1 := entry_strs[ptr1][char_ptr]; - char2 := entry_strs[ptr2][char_ptr]; -@y - char1 := x_entry_strs(ptr1)(char_ptr); - char2 := x_entry_strs(ptr2)(char_ptr); -@z - -@x Changes for JBibTeX by Shouichi Matsui [322] -procedure add_out_pool (@!p_str : str_number); -var break_ptr : buf_pointer; {the first character following the line break} -@!end_ptr : buf_pointer; {temporary end-of-buffer pointer} -@y -procedure add_out_pool (@!p_str : str_number); -var break_ptr : buf_pointer; {the first character following the line break} -@!end_ptr : buf_pointer; {temporary end-of-buffer pointer} -@!in_mid_kanji:boolean; {flag if |max_print_line|-1 is in mid kanji} -@!last_char_ptr : buf_pointer; -@!t : buf_pointer; -@z - -@x Changes for JBibTeX by Shouichi Matsui [324] -@= -begin -out_buf[end_ptr] := out_buf[max_print_line-1]; {save this character} -out_buf[max_print_line-1] := comment; {so \TeX\ does the thing right} -out_buf_length := max_print_line; -break_ptr := out_buf_length - 1; {the `|-1|' allows for the restoration} -output_bbl_line; {output what we can,} -out_buf[max_print_line-1] := out_buf[end_ptr]; {restore this character} -out_buf_ptr := 0; -tmp_ptr := break_ptr; -while (tmp_ptr < end_ptr) do {and slide the rest down} - begin - out_buf[out_buf_ptr] := out_buf[tmp_ptr]; - incr(out_buf_ptr); - incr(tmp_ptr); - end; -out_buf_length := end_ptr - break_ptr; -end -@y -@= -begin -@; -if in_mid_kanji then last_char_ptr:=max_print_line-1 - else last_char_ptr:=max_print_line; -out_buf[end_ptr] := out_buf[last_char_ptr-1]; {save this character} -out_buf[last_char_ptr-1] := comment; {so \TeX\ does the thing right} -out_buf_length := last_char_ptr; -break_ptr := out_buf_length - 1; {the `|-1|' allows for the restoration} -output_bbl_line; {output what we can,} -out_buf[last_char_ptr-1] := out_buf[end_ptr]; {restore this character} -out_buf_ptr := 0; -tmp_ptr := break_ptr; -while (tmp_ptr < end_ptr) do {and slide the rest down} - begin - out_buf[out_buf_ptr] := out_buf[tmp_ptr]; - incr(out_buf_ptr); - incr(tmp_ptr); - end; -out_buf_length := end_ptr - break_ptr; -end -@z - -@x [328] Add check for fieldinfo[] overflow. - field_ptr := cite_ptr*num_fields + fn_info[ex_fn_loc]; -@y - field_ptr := cite_ptr*num_fields + fn_info[ex_fn_loc]; - check_field_overflow(field_ptr); -@z - -@x [330] Macroize entry_strs[][] - while (entry_strs[str_ent_ptr][ex_buf_ptr] <> end_of_string) do - {copy characters into the buffer} - append_ex_buf_char (entry_strs[str_ent_ptr][ex_buf_ptr]); -@y - while (x_entry_strs(str_ent_ptr)(ex_buf_ptr) <> end_of_string) do - {copy characters into the buffer} - append_ex_buf_char (x_entry_strs(str_ent_ptr)(ex_buf_ptr)); -@z - -@x Changes for JBibTeX by Shouichi Matsui [332] -@!b_while : hash_loc; {\.{while\$}} -@!b_width : hash_loc; {\.{width\$}} -@!b_write : hash_loc; {\.{write\$}} -@!b_default : hash_loc; {either \.{skip\$} or \.{default.type}} -@y -@!b_while : hash_loc; {\.{while\$}} -@!b_width : hash_loc; {\.{width\$}} -@!b_write : hash_loc; {\.{write\$}} -@!b_default : hash_loc; {either \.{skip\$} or \.{default.type}} -@!b_is_kanji_str : hash_loc; {\.{is.kanji.str\$}} -@z - -@x Changes for JBibTeX by Shouichi Matsui [334] -@d n_while = 34 {\.{while\$}} -@d n_width = 35 {\.{width\$}} -@d n_write = 36 {\.{write\$}} - -@= -@!num_blt_in_fns = 37; {one more than the previous number} -@y -@d n_while = 34 {\.{while\$}} -@d n_width = 35 {\.{width\$}} -@d n_write = 36 {\.{write\$}} -@d n_is_kanji_str = 37 {\.{is.kanji.str\$}} - -@= -@!num_blt_in_fns = 38; {one more than the previous number} -@z - -@x Changes for JBibTeX by Shouichi Matsui [335] -build_in('width$ ',6,b_width,n_width); -build_in('while$ ',6,b_while,n_while); -build_in('width$ ',6,b_width,n_width); -build_in('write$ ',6,b_write,n_write); -@y -build_in('while$ ',6,b_while,n_while); -build_in('width$ ',6,b_width,n_width); -build_in('write$ ',6,b_write,n_write); -build_in('is.kanji.str$',13,b_is_kanji_str,n_is_kanji_str); -@z - -@x [337] s_preamble is dynamically allocated. -@!s_preamble : array[bib_number] of str_number; -@y -@!s_preamble : ^str_number; -@z - -@x Changes for JBibTeX by Shouichi Matsui [342] - n_width : x_width; - n_write : x_write; - othercases confusion ('Unknown built-in function') -endcases; -end -@y - n_width : x_width; - n_write : x_write; - n_is_kanji_str: x_is_kanji_str; - othercases confusion ('Unknown built-in function') -endcases; -end -@z - -@x Changes for JBibTeX by Shouichi Matsui [343] -@<|execute_fn|({\.{width\$}})@>@; -@<|execute_fn|({\.{write\$}})@>@; -@<|execute_fn| itself@> -@y -@<|execute_fn|({\.{width\$}})@>@; -@<|execute_fn|({\.{write\$}})@>@; -@<|execute_fn|({\.{is.kanji.str\$}})@>@; -@<|execute_fn| itself@> -@z - -@x [358] Macroize entry_strs[][]. - while (sp_ptr < sp_xptr1) do - begin {copy characters into |entry_strs|} - entry_strs[str_ent_ptr][ent_chr_ptr] := str_pool[sp_ptr]; - incr(ent_chr_ptr); - incr(sp_ptr); - end; - entry_strs[str_ent_ptr][ent_chr_ptr] := end_of_string; -@y - while (sp_ptr < sp_xptr1) do - begin {copy characters into |entry_strs|} - x_entry_strs(str_ent_ptr)(ent_chr_ptr) := str_pool[sp_ptr]; - incr(ent_chr_ptr); - incr(sp_ptr); - end; - x_entry_strs(str_ent_ptr)(ent_chr_ptr) := end_of_string; -@z - -@x Changes for JBibTeX by Shouichi Matsui --- add.period$ for ver. 0.30 -case (str_pool[sp_ptr]) of - period, - question_mark, - exclamation_mark : - repush_string; - othercases - @ -@y -case (str_pool[sp_ptr]) of - period, - question_mark, - exclamation_mark : - repush_string; - zen_ten, - zen_period, - zen_question, - zen_exclamation: - if( str_pool[sp_ptr-1] = zen_pun_first ) then - repush_string - else - @; - othercases - @ -@z - -@x Changes for JBibTeX by Shouichi Matsui [377] -else if (length(pop_lit1) <> 1) then - begin - print ('"'); - print_pool_str (pop_lit1); - bst_ex_warn ('" isn''t a single character'); - push_lit_stk (0, stk_int); - end -@y -else if (length(pop_lit1) <> 1) then - if(str_pool[str_start[pop_lit1]]>127) then { a KANJI char is 2byte long } - push_lit_stk(str_pool[str_start[pop_lit1]],stk_int) - else begin - print ('"'); - print_pool_str (pop_lit1); - bst_ex_warn ('" isn''t a single character'); - push_lit_stk (0, stk_int); - end -@z - - -@x by Shouichi Matsui for Zenkaku comma -if (ex_buf_ptr < ex_buf_length) then {remove the ``and''} - ex_buf_ptr := ex_buf_ptr - 4; -@y -if (ex_buf_ptr < ex_buf_length) then {remove the ``and'', or Zenkau comma} - begin - if( (ex_buf[ex_buf_ptr-1]=zen_comma) or (ex_buf[ex_buf_ptr-1]=zen_kuten) ) - then ex_buf_ptr := ex_buf_ptr - 2 - else ex_buf_ptr := ex_buf_ptr - 4; - end; -@z - -@x Changes for JBibTeX by Shouichi Matsui for Zenkaku comma - "a", "A" : - begin - incr(ex_buf_ptr); - if (preceding_white) then - @; {if so, |and_found := true|} - preceding_white := false; - end; -@y - "a", "A" : - begin - incr(ex_buf_ptr); - if (preceding_white) then - @; {if so, |and_found := true|} - preceding_white := false; - end; - zen_pun_first: - begin - if((ex_buf[ex_buf_ptr+1]=zen_comma) or - (ex_buf[ex_buf_ptr+1]=zen_kuten) ) then - begin - preceding_white := false; - and_found := true - end - else if(ex_buf[ex_buf_ptr+1]=zen_space) then - begin - ex_buf[ex_buf_ptr] := space; - ex_buf[ex_buf_ptr+1] := space; - preceding_white := true; - end; - ex_buf_ptr := ex_buf_ptr + 2; - end; -@z -@x Changes for JBibTeX by Shouichi Matsui for Zenkaku comma[385] - othercases - if (lex_class[ex_buf[ex_buf_ptr]] = white_space) then - begin - incr(ex_buf_ptr); - preceding_white := true; - end - else - begin - incr(ex_buf_ptr); - preceding_white := false; - end - endcases; -check_brace_level (pop_lit_var); -end; -@y - othercases - if (lex_class[ex_buf[ex_buf_ptr]] = white_space) then - begin - incr(ex_buf_ptr); - preceding_white := true; - end - else - begin - if( ex_buf[ex_buf_ptr] > 127 ) then - ex_buf_ptr := ex_buf_ptr +2 - else - incr(ex_buf_ptr); - preceding_white := false; - end - endcases; -check_brace_level (pop_lit_var); -end; -@z - -% [388] bibtex.web has mutually exclusive tests here; Oren said he -% doesn't want to fix it until 1.0, since it's obviously of no practical -% import (or someone would have found it before GCC 2 did). Changing -% the second `and' to an `or' makes all but the last of multiple authors -% be omitted in the bbl file, so I simply removed the statement. -@x -while ((ex_buf_xptr < ex_buf_ptr) and - (lex_class[ex_buf[ex_buf_ptr]] = white_space) and - (lex_class[ex_buf[ex_buf_ptr]] = sep_char)) do - incr(ex_buf_xptr); {this removes leading stuff} -@y -@z - -@x Changes for JBibTeX by Shouichi Matsui [415] - if (lex_class[name_buf[name_bf_ptr]] = alpha) then - begin - append_ex_buf_char_and_check (name_buf[name_bf_ptr]); - goto loop_exit; - end - else if ((name_buf[name_bf_ptr] = left_brace) and -@y - if (lex_class[name_buf[name_bf_ptr]] = alpha) then - begin - if name_buf[name_bf_ptr]>127 then begin - append_ex_buf_char_and_check (name_buf[name_bf_ptr]); - incr(name_bf_ptr); - append_ex_buf_char_and_check (name_buf[name_bf_ptr]); - end - else - append_ex_buf_char_and_check (name_buf[name_bf_ptr]); - goto loop_exit; - end - else if ((name_buf[name_bf_ptr] = left_brace) and -@z - -@x Changes for JBibTeX by Shouichi Matsui [437] -@<|execute_fn|({\.{substring\$}})@>= -procedure x_substring; -label exit; -begin -@y -@<|execute_fn|({\.{substring\$}})@>= -procedure x_substring; -label exit; -var tps,tpe:pool_pointer; {temporary pointer} -begin -@z - -@x Changes for JBibTeX by Shouichi Matsui [438] -while (sp_ptr < sp_end) do {shift the substring} - begin - append_char (str_pool[sp_ptr]); - incr(sp_ptr); - end; -@y -{ 2 bytes Kanji code break check } -tps:=str_start[pop_lit3]; -while (tps < sp_ptr ) do - if str_pool[tps] > 127 - then tps := tps + 2 - else incr(tps); -tpe:=tps; -while (tpe < sp_end ) do begin - if str_pool[tpe] > 127 - then tpe := tpe+2 - else incr(tpe); -end; -if tps<>sp_ptr then begin - if tps>str_start[pop_lit3] - then decr(sp_ptr) - else incr(sp_ptr); -end; -if tpe<>sp_end then begin - if tpe127 then begin - append_char (str_pool[sp_ptr]); incr(sp_ptr); - append_char (str_pool[sp_ptr]); incr(sp_ptr); - end - else begin - append_char (str_pool[sp_ptr]); incr(sp_ptr); end; - end; -@z - -@x Changes for JBibTeX by Shouichi Matsui [445] - else if (str_pool[sp_xptr1-1] = right_brace) then - begin - if (sp_brace_level > 0) then - decr(sp_brace_level); - end - else - incr(num_text_chars); - end; -@y - else if (str_pool[sp_xptr1-1] = right_brace) then - begin - if (sp_brace_level > 0) then - decr(sp_brace_level); - end - else if (str_pool[sp_xptr1-1]>127) then begin {kanji char} - incr(sp_xptr1); num_text_chars:=num_text_chars+2; - end - else - incr(num_text_chars); - end; -@z - -% [460] Eliminate unreferenced statement label, because `undefined' is -% now a constant expression that is not evaluated at the Web level. If -% this label were ever required, it could be replaced by the constant -% 9997, which is not used as a statement label in BibTeX. -@x - undefined : trace_pr ('unknown') -@y - trace_pr ('unknown') -@z - -@x [461] Macroize entry_strs[][]. - while (entry_strs[str_ent_ptr][ent_chr_ptr] <> end_of_string) do - begin - trace_pr (xchr[entry_strs[str_ent_ptr][ent_chr_ptr]]); - incr(ent_chr_ptr); - end; -@y - while (x_entry_strs(str_ent_ptr)(ent_chr_ptr) <> end_of_string) do - begin - trace_pr (xchr[x_entry_strs(str_ent_ptr)(ent_chr_ptr)]); - incr(ent_chr_ptr); - end; -@z - -@x [463] Add check for fieldinfo[] overflow. -@= -begin -if (not read_performed) then - trace_pr_ln (' uninitialized') - else - begin - field_ptr := cite_ptr * num_fields; - field_end_ptr := field_ptr + num_fields; -@y -@= -begin -if (not read_performed) then - trace_pr_ln (' uninitialized') - else - begin - field_ptr := cite_ptr * num_fields; - field_end_ptr := field_ptr + num_fields; - check_field_overflow(field_end_ptr); -@z - -@x [467] System-dependent changes. -This section should be replaced, if necessary, by changes to the program -that are necessary to make \BibTeX\ work at a particular installation. -It is usually best to design your change file so that all changes to -previous sections preserve the section numbering; then everybody's version -will be consistent with the printed program. More extensive changes, -which introduce new sections, can be inserted here; then only the index -itself will get a new section number. -@y -@d argument_is (#) == (strcmp (long_options[option_index].name, #) = 0) - -@ = -procedure parse_arguments; -const n_options = 5; {Pascal won't count array lengths for us.} -var @!long_options: array[0..n_options] of getopt_struct; - @!getopt_return_val: integer; - @!option_index: c_int_type; - @!current_option: 0..n_options; -begin - @; - @; - repeat - getopt_return_val := getopt_long_only (argc, argv, '', long_options, - address_of (option_index)); - if getopt_return_val = -1 then begin - {End of arguments; we exit the loop below.} ; - - end else if getopt_return_val = "?" then begin - usage ('jbibtex'); - - end else if argument_is ('min-crossrefs') then begin - min_crossrefs := atoi (optarg); - - end else if argument_is ('help') then begin - usage_help (JBIBTEX_HELP, nil); - - end else if argument_is ('version') then begin - print_version_and_exit (banner, 'Oren Patashnik', nil); - - end else if argument_is ('kanji') then begin - @; - - end; {Else it was a flag; |getopt| has already done the assignment.} - until getopt_return_val = -1; - - {Now |optind| is the index of first non-option on the command line. - We must have one remaining argument.} - if (optind + 1 <> argc) then begin - write_ln (stderr, 'jbibtex: Need exactly one file argument.'); - usage ('jbibtex'); - end; -end; - -@ Here is the first of the options we allow. -@.-terse@> - -@ = -current_option := 0; -long_options[0].name := 'terse'; -long_options[0].has_arg := 0; -long_options[0].flag := address_of (verbose); -long_options[0].val := 0; -incr (current_option); - -@ The global variable |verbose| determines whether or not we print -progress information. - -@ = -@!verbose: c_int_type; - -@ Start off |true|, to match the default behavior. - -@ = -verbose := true; - -@ Here is an option to change the minimum number of cross-refs required -for automatic |cite_list| inclusion. -@.-min-crossrefs@> - -@ = -long_options[current_option].name := 'min-crossrefs'; -long_options[current_option].has_arg := 1; -long_options[current_option].flag := 0; -long_options[current_option].val := 0; -incr (current_option); - -@ -@ = -@!min_crossrefs: integer; - -@ Set |min_crossrefs| to two by default, so we match the -documentation (\.{btxdoc.tex}). - -@ = -min_crossrefs := 2; - -@ One of the standard options. -@.-help@> - -@ = -long_options[current_option].name := 'help'; -long_options[current_option].has_arg := 0; -long_options[current_option].flag := 0; -long_options[current_option].val := 0; -incr (current_option); - -@ Another of the standard options. -@.-version@> - -@ = -long_options[current_option].name := 'version'; -long_options[current_option].has_arg := 0; -long_options[current_option].flag := 0; -long_options[current_option].val := 0; -incr (current_option); - -@ Kanji option. -@.-kanji@> - -@ = -long_options[current_option].name := 'kanji'; -long_options[current_option].has_arg := 1; -long_options[current_option].flag := 0; -long_options[current_option].val := 0; -incr(current_option); - -@ An element with all zeros always ends the list. - -@ = -long_options[current_option].name := 0; -long_options[current_option].has_arg := 0; -long_options[current_option].flag := 0; -long_options[current_option].val := 0; - - -@ -@= -t:=0; -while(t127 then t:=t+2 else t:=t+1; -in_mid_kanji:= t>=max_print_line; - -@ -@<|execute_fn|({\.{is.kanji.str\$}})@>= -procedure x_is_kanji_str; -label exit; -begin - pop_lit_stk(pop_lit1, pop_typ1); - if pop_typ1<> stk_str then - begin print_wrong_stk_lit(pop_lit1,pop_typ1,stk_str); - push_lit_stk(0,stk_int); - end else begin - sp_ptr := str_start[pop_lit1]; - sp_end := str_start[pop_lit1+1]; - while sp_ptr127 then begin - push_lit_stk(1,stk_int); - return; - end else begin - incr(sp_ptr); - end; - end; - push_lit_stk(0,stk_int); - end; -exit:end; - -@ kanji code. - -@d jis_enc==0 -@d euc_enc==1 -@d sjis_enc==2 - -@ @= -@!proc_kanji_code:jis_enc..sjis_enc; - -@ @ = -ifdef('OUTJIS') proc_kanji_code:=jis_enc; endif('OUTJIS')@/ -ifdef('OUTEUC') proc_kanji_code:=euc_enc; endif('OUTEUC')@/ -ifdef('OUTSJIS') proc_kanji_code:=sjis_enc; endif('OUTSJIS')@/ - -@ @= - if strcmp(optarg, 'jis') = 0 then - proc_kanji_code:=jis_enc - else if strcmp(optarg, 'euc') = 0 then - proc_kanji_code:=euc_enc - else if strcmp(optarg, 'sjis') = 0 then - proc_kanji_code:=sjis_enc - else - print_ln('Bad kanjicode encoding', optarg, '.'); -@z diff --git a/language/japanese/ptex/jbibtex.defines b/language/japanese/ptex/jbibtex.defines deleted file mode 100644 index c99c1c74d7..0000000000 --- a/language/japanese/ptex/jbibtex.defines +++ /dev/null @@ -1,3 +0,0 @@ -@define function inputline(); -@define procedure initkanji; -@define const JBIBTEXHELP; diff --git a/language/japanese/ptex/kanji.c b/language/japanese/ptex/kanji.c deleted file mode 100644 index c14562fb44..0000000000 --- a/language/japanese/ptex/kanji.c +++ /dev/null @@ -1,233 +0,0 @@ -/* - * KANJI Code conversion routines. - */ - -#define KANJI_C -#include "kanji.h" - -boolean iskanji1(c) - unsigned char c; -{ - c &= 0xff; - if (prockanjicode == SJIS) - return((c>=0x81 && c<=0x9f) || (c>=0xe0 && c<=0xfc)); - else - return(c>=0xa1 && c<=0xfe); -} - -boolean iskanji2(c) - unsigned char c; -{ - c &= 0xff; - if (prockanjicode == SJIS) - return(c>=0x40 && c<=0xfc && c!=0x7f); - else - return(c>=0xa1 && c<=0xfe); -} - -boolean checkkanji(c) - integer c; -{ - if(c<0 || c>256) - return(iskanji1(c>>8) && iskanji2(c & 0xff)); - return(-1); -} - -#ifdef OLDSTYLE -integer calcpos(c) -{ - register int c1, c2; - - if(c<256) return(c<<1); - c1 = c>>8; - c2 = c & 0xff; - if(c1) { - if (prockanjicode == SJIS) - return((c2+(c2<<(c1-0x81)) & 0xff)<<1); - else - return((c2+(c2<<(c1-0xa1)) & 0xff)<<1); - } else - return(((c2+c2+1) & 0xff)<<1); -} -#else /* OLDSTYLE */ -integer calcpos(c) - integer c; -{ - register unsigned char c1, c2; - integer ret; - - if(c>=0 && c<=255) return(c); - c1 = (c >> 8) & 0xff; - c2 = c & 0xff; - if(iskanji1(c1)) { - if (prockanjicode == SJIS) { - c1 = ((c1 - 0x81) % 4) * 64; /* c1 = 0, 64, 128, 192 */ - c2 = c2 % 64; /* c2 = 0..63 */ - } else { - c1 = ((c1 - 0xa1) % 4) * 64; /* c1 = 0, 64, 128, 192 */ - c2 = c2 % 64; /* c2 = 0..63 */ - } - return(c1 + c2); /* ret = 0..255 */ - } else - return(c2); -} -#endif /* OLDSTYLE */ - -/* - * EUC to JIS X0208 code conversion - */ -integer EUCtoJIS(kcode) - integer kcode; -{ - return(kcode & 0x7f7f); -} - -/* - * JIS X0208 to EUC code conversion - */ -integer JIStoEUC(kcode) - integer kcode; -{ - return(kcode | 0x8080); -} - -/* - * SJIStoJIS : Shift JIS to JIS Kanji code conversion - */ -integer SJIStoJIS(kcode) - integer kcode; -{ - register short byte1, byte2; - - byte1 = (kcode>>8) & 0xff; - byte2 = kcode & 0xff; - byte1 -= ( byte1>=0xa0 ) ? 0xc1 : 0x81; - kcode = ((byte1<<1) + 0x21)<<8; - if( byte2>=0x9f ) { - kcode += 0x0100; - kcode |= (byte2 - 0x7e) & 0xff; - } else { - kcode |= (byte2 - ((byte2<=0x7e) ? 0x1f : 0x20 )) & 0xff; - } - return(kcode); -} - -/* - * JIS X0208 to Shift JIS code conversion - */ -integer JIStoSJIS(kcode) - integer kcode; -{ - register integer high, low; - register integer nh, nl; - - high = (kcode>>8) & 0xff; - low = kcode & 0xff; - nh = ((high-0x21)>>1) + 0x81; - if (nh>0x9f) nh += 0x40; - if (high & 1) { - nl = low + 0x1f; - if (low>0x5f) nl++; - } else - nl = low + 0x7e; - if(iskanji1(nh) && iskanji2(nl)) - return((nh<<8) | nl); - else - return(0x813f); -} - -/* - * Shift JIS to EUC Kanji code conversion - */ -integer SJIStoEUC(kcode) - integer kcode; -{ - return(SJIStoJIS(kcode) | 0x8080 ); -} - -/* - * EUC to SJIS Kanji code conversion - */ -integer EUCtoSJIS(kcode) - integer kcode; -{ - return(JIStoSJIS(kcode & 0x7f7f)); -} - -/* - * KUTEN to JIS kanji code conversion - */ -integer kuten2jis(kcode) - integer kcode; -{ - register short byte1, byte2; - - byte1 = (kcode>>8) & 0xff; - byte2 = kcode & 0xff; - - /* in case of undefined in kuten code table */ - if (byte1 == 0 || byte1 > 95 || byte2 == 0 || byte2 > 95) - return(-1); - - byte1 += 0x20; - byte2 += 0x20; - - return (byte1<<8 | byte2); -} - -/* - * KUTEN to EUC Kanji code conversion - */ -integer KUTENtoEUC(kcode) - integer kcode; -{ - return(JIStoEUC(kuten2jis(kcode))); -} - -/* - * KUTENtoSJIS Kanji code conversion - */ -integer KUTENtoSJIS(kcode) - integer kcode; -{ - return(JIStoSJIS(kuten2jis(kcode))); -} - -void putc2(c, fp) - unsigned char c; - FILE *fp; -{ - static integer kanji[NOFILE]; - static unsigned char c1[NOFILE]; - integer jc; - register fd; - - fd = fileno(fp); - if (kanji[fd] == 1) { - jc = (c1[fd] << 8) | c; - if (prockanjicode == JIS) jc = EUCtoJIS(jc); - (void) putc(jc >> 8, fp); - (void) putc(jc & 0xff, fp); - kanji[fd] = 2; - } else if (iskanji1(c)) { - if (kanji[fd] == 0) { - if (prockanjicode == JIS) { - (void) putc('\033', fp); - (void) putc('$', fp); - (void) putc('B', fp); - } - } - c1[fd] = c; - kanji[fd] = 1; - } else { - if (kanji[fd] == 2) { - if (prockanjicode == JIS) { - (void) putc('\033', fp); - (void) putc('(', fp); - (void) putc('B', fp); - } - kanji[fd] = 0; - } - (void) putc(c, fp); - } -} diff --git a/language/japanese/ptex/kanji.defines b/language/japanese/ptex/kanji.defines deleted file mode 100644 index eb9e273be2..0000000000 --- a/language/japanese/ptex/kanji.defines +++ /dev/null @@ -1,23 +0,0 @@ -{ defined at kanji.c, kanji.h } -@define function Hi (); -@define function Lo (); -@define procedure PutHi (); -@define procedure PutLo (); - -@define function iskanji1 (); -@define function iskanji2 (); -@define function checkkanji (); -@define function calcpos (); -@define function EUCtoJIS (); -@define function JIStoEUC (); -@define function SJIStoEUC (); -@define function KUTENtoEUC (); -@define function SJIStoJIS (); -@define function JIStoSJIS (); -@define function EUCtoSJIS (); -@define function KUTENtoSJIS (); -@define function putc2 (); - -@define const PTEXTFTOPLHELP; -@define const PTEXPLTOTFHELP; -@define const PDVITYPEHELP; diff --git a/language/japanese/ptex/kanji.h.in b/language/japanese/ptex/kanji.h.in deleted file mode 100644 index 922761c048..0000000000 --- a/language/japanese/ptex/kanji.h.in +++ /dev/null @@ -1,76 +0,0 @@ -/* - kanji.h: Handling 2byte char, and so on. -*/ -#ifndef KANJI_H -#define KANJI_H -#include "cpascal.h" -#include "ptexhelp.h" - -#define KANJI -#define JIS 0 -#define EUC 1 -#define SJIS 2 - -/* üËö¤Ë½ÐÎϤ¹¤ë´Á»ú¥³¡¼¥É¤ò EUC, JIS, SJIS ¤Î¤¤¤º¤ì¤«¤Ç»ØÄꤹ¤ë¡£*/ -#define TERM_CODE @TERMCODE@ - -/* OUTJIS, OUTSJIS, OUTEUC ¤ÏüËö¤È¥í¥°¥Õ¥¡¥¤¥ë¤Ø¤Î½ÐÎÏ¥³¡¼¥É¤ò¼¨¤¹¡£*/ -#if TERM_CODE == JIS -#define OUTJIS -#elif TERM_CODE == SJIS -#define OUTSJIS -#else -#define OUTEUC -#endif - -/* functions */ -#define Hi(X) ((X >> 8) & 0xff) -#define Lo(X) (X & 0xff) -#define PutHi(X,Y) X &= 0xff; (X |= (Y << 8)) -#define PutLo(X,Y) X &= 0xff00; (X |= (Y & 0xff)) - -extern char prockanjicode; -extern boolean iskanji1(unsigned char); -extern boolean iskanji2(unsigned char); -extern boolean checkkanji(integer); -extern integer calcpos(integer); - -extern integer EUCtoJIS(integer); -extern integer JIStoEUC(integer); -extern integer SJIStoJIS(integer); -extern integer JIStoSJIS(integer); -extern integer SJIStoEUC(integer); -extern integer EUCtoSJIS(integer); -extern integer KUTENtoEUC(integer); -extern integer KUTENtoSJIS(integer); - -/* kanji.c *°Ê³°* ¤ò¥³¥ó¥Ñ¥¤¥ë¤¹¤ë¤È¤­¡¢putc ¤ÎÄêµÁ¤òÊѤ¨¤ë */ -#if !defined(KANJI_C) -#undef putc -#define putc(c,fp) putc2(c,fp) -#endif /* *not* KANJI_C */ - -#ifdef TeX -#undef TEXMFPOOLNAME -#undef TEXMFENGINENAME -#define TEXMFPOOLNAME "ptex.pool" -#define TEXMFENGINENAME "ptex" -#endif /* TeX */ - -#ifdef MP -#undef TEXMFPOOLNAME -#undef TEXMFENGINENAME -#define TEXMFPOOLNAME "jmp.pool" -#define TEXMFENGINENAME "jmpost" -#endif /* MP */ - -#ifdef HAVE_SYS_PARAM_H -# include -#else -# include -#endif -#ifndef NOFILE -# define NOFILE OPEN_MAX -#endif - -#endif /* not KANJI_H */ diff --git a/language/japanese/ptex/mkconf b/language/japanese/ptex/mkconf deleted file mode 100644 index 86cb37adfa..0000000000 --- a/language/japanese/ptex/mkconf +++ /dev/null @@ -1,53 +0,0 @@ -#!/bin/sh - -if [ -z "$1" ]; then - echo "Usage: mkconf texmf.cnf" - exit 2 -fi - -cnffile="$1" -if [ ! -f "$cnffile" ]; then - echo "Error: $cnffile is not found" - exit 2 -fi - -sed -e '/^% ptex, platex, platex209 macros paths./d -/^% pTeX./d -/^platex209_inputs *=/d -/^platex2e_inputs *=/d -/^ptex_inputs *=/d -/^TEXINPUTS.platex209 *=/d -/^TEXINPUTS.platex2e *=/d -/^TEXINPUTS.platex-sjis *=/d -/^TEXINPUTS.platex-euc *=/d -/^TEXINPUTS.platex-jis *=/d -/^TEXINPUTS.platex *=/d -/^TEXINPUTS.ptex-sjis *=/d -/^TEXINPUTS.ptex-euc *=/d -/^TEXINPUTS.ptex-jis *=/d -/^TEXINPUTS.ptex *=/d -/^TEXINPUTS.iniptex *=/d -/^BIBINPUTS.jbibtex *=/d -/^BSTINPUTS.jbibtex *=/d' ${cnffile} | \ -sed -e '/^TEXINPUTS.xetex *=/ a\ -\ -% pTeX.\ -ptex_inputs = .;$TEXMF/{ptex/{plain,generic},tex/{plain,generic,}}//\ -platex209_inputs = .;$TEXMF/{ptex/{platex209,plain,platex,},tex/{plain,latex,}}//\ -platex2e_inputs = .;$TEXMF/{ptex/{platex,generic,},tex/{latex,generic,}}//\ -TEXINPUTS.platex209 = $platex209_inputs\ -TEXINPUTS.platex-sjis = $platex2e_inputs\ -TEXINPUTS.platex-euc = $platex2e_inputs\ -TEXINPUTS.platex-jis = $platex2e_inputs\ -TEXINPUTS.platex = $platex2e_inputs\ -TEXINPUTS.ptex-sjis = $ptex_inputs\ -TEXINPUTS.ptex-euc = $ptex_inputs\ -TEXINPUTS.ptex-jis = $ptex_inputs\ -TEXINPUTS.ptex = $ptex_inputs\ - -/^% BibTeX bibliographies and style files./ a\ -BIBINPUTS.jbibtex = .;$TEXMF/{jbibtex,bibtex}/bib//\ -BSTINPUTS.jbibtex = .;$TEXMF/{jbibtex,bibtex}/bst//\ -' | uniq - -### EOT ### diff --git a/language/japanese/ptex/pconvert b/language/japanese/ptex/pconvert deleted file mode 100644 index 94c6d9c95d..0000000000 --- a/language/japanese/ptex/pconvert +++ /dev/null @@ -1,73 +0,0 @@ -#!/bin/sh -# Convert WEB programs not needing special treatment to C. -# $1 is the Pascal file to be converted. -# -web2cdir=../web2c -target=$1 - -usage () { - echo "" - echo "Usage: $0 " - echo " = ptex|pltotf|tftopl|pdvitype|jbibtex" - echo "" -} - -convert_ptex () { - cat $web2cdir/common.defines $web2cdir/texmf.defines \ - ./kanji.defines ./$target.p \ - | $web2cdir/web2c -t -h../texmfmp.h -ctexcoerce \ - | $web2cdir/fixwrites tex \ - | $web2cdir/splitup -i -l 10000 tex - sleep 2 - cat texcoerce.h $web2cdir/coerce.h > xtexcoerce.h - echo '#include "kanji.h"' >> xtexcoerce.h - mv xtexcoerce.h texcoerce.h - touch texd.h -} - -convert_tool () { - cat $web2cdir/common.defines ./kanji.defines ./$target.p \ - | $web2cdir/web2c -hkanji.h -c$target \ - | $web2cdir/fixwrites $target > $target.c -} - -convert_jbibtex() { - cat $web2cdir/common.defines ./jbibtex.defines ./$target.p \ - | $web2cdir/web2c -hjbibextra.h -c$target \ - | sed -f $web2cdir/cvtbib.sed \ - | $web2cdir/fixwrites $target > $target.c - sed -e 's/(buftype)//g' -e 's/(pdstype)//g' < $target.h >x$target.h - mv x$target.h $target.h - sed -f jbibd.sed $target.c > jbibd.h -} - - -case $target in - ptex) convert_ptex - cfile=tex2.c # last output file, or thereabouts - output_files="tex[0-9]*.c texini.c texd.h texcoerce.h" - ;; - pltotf|tftopl|pdvitype) convert_tool - cfile=$target.c - output_files="$target.c $target.h" - ;; - jbibtex) convert_jbibtex - cfile=$target.c - output_files="$target.c $target.h jbibd.h" - ;; - *) usage; -esac - -if test ! -s $cfile || grep @error@ $output_files >/dev/null; then - : ${TMPDIR=./failure} - # Don't just delete it, since it may be useful for debugging. - echo "$0: conversion of $pascalfile failed, moving dregs:" >&2 - cmd="mv $output_files $TMPDIR" - test -d $TMPDIR || mkdir $TMPDIR - (cd $TMPDIR && rm -f $output_files) - echo "$0: $cmd" >&2 - $cmd - exit 1 -fi - -exit 0 diff --git a/language/japanese/ptex/pdvitype.ch b/language/japanese/ptex/pdvitype.ch deleted file mode 100644 index 2f43fb6c08..0000000000 --- a/language/japanese/ptex/pdvitype.ch +++ /dev/null @@ -1,1181 +0,0 @@ -% dvitype.ch for C compilation with web2c. -% -% 04/04/83 (PC) Merged with Pavel's change file and made to work with the -% version 1.0 of DVItype released with version 0.95 of TeX in -% February, 1983. -% 04/18/83 (PC) Added changes to module 47 so that it would work the same -% when input was a file (or pipe) as with a terminal. -% 06/29/83 (HWT) Brought up to version 1.1 as released with version 0.99 of -% TeX, with new change file format -% 07/28/83 (HWT) Brought up to version 2 as released with version 0.999. -% Only the banner changes. -% 11/21/83 (HWT) Brought up to version 2.2 as released with version 1.0. -% 02/19/84 (HWT) Made it use the TEXFONTS environment variable. -% 03/23/84 (HWT) Brought up to version 2.3. -% 07/11/84 (HWT) Brought up to version 2.6 as released with version 1.1. -% 11/07/84 (ETM) Brought up to version 2.7 as released with version 1.2. -% 03/09/88 (ETM) Brought up to version 2.9 -% 03/16/88 (ETM) Converted for use with WEB to C. -% 11/30/89 (KB) To version 3. -% 01/16/90 (SR) To version 3.2. -% 09/27/95 (KA) Supporting ASCII pTeX -% (more recent changes in the ChangeLog) - -@x [0] WEAVE: print changes only. -\pageno=\contentspagenumber \advance\pageno by 1 -@y -\pageno=\contentspagenumber \advance\pageno by 1 -\let\maybe=\iffalse -\def\title{DVI$\,$\lowercase{type} changes for C} -@z - -@x -@d banner=='This is DVItype, Version 3.6' {printed when the program starts} -@y -@d banner=='This is PDVItype, Version 3.6-p0.4' - {printed when the program starts} -@z - -% [3] Specify the output file to simplify web2c, and don't print the -% banner until later. -@x -@d print(#)==write(#) -@d print_ln(#)==write_ln(#) -@y -@d print(#)==write(stdout, #) -@d print_ln(#)==write_ln(stdout, #) -@z - -@x -procedure initialize; {this procedure gets things started properly} - var i:integer; {loop index for initializations} - begin print_ln(banner);@/ -@y -@ -procedure initialize; {this procedure gets things started properly} - var i:integer; {loop index for initializations} - begin - kpse_set_progname (argv[0]); - parse_arguments; - print (banner); - print_ln (version_string); -@z - -@x [5] Allow more fonts, more widths, no arbitrary filename length. -@!max_fonts=100; {maximum number of distinct fonts per \.{DVI} file} -@!max_widths=10000; {maximum number of different characters among all fonts} -@y -@!max_fonts=500; {maximum number of distinct fonts per \.{DVI} file} -@!max_widths=25000; {maximum number of different characters among all fonts} -@z -@x -@!name_size=1000; {total length of all font file names} -@!name_length=50; {a file name shouldn't be longer than this} -@y -@!name_size=10000; {total length of all font file names} -@z - -@x [7] Remove non-local goto. -@d abort(#)==begin print(' ',#); jump_out; - end -@d bad_dvi(#)==abort('Bad DVI file: ',#,'!') -@.Bad DVI file@> - -@p procedure jump_out; -begin goto final_end; -end; -@y -@d jump_out==uexit(1) -@d abort(#)==begin write_ln(stderr,#); jump_out; end -@d bad_dvi(#)==abort('Bad DVI file: ',#,'!') -@.Bad DVI file@> -@z - -@x [8] Permissive input. -@!ASCII_code=" ".."~"; {a subrange of the integers} -@y -@!ASCII_code=0..255; {a subrange of the integers} -@z - -% [9] The text_char type is used as an array index into `xord'. The -% default type `char' produces signed integers, which are bad array -% indices in C. -@x -@d text_char == char {the data type of characters in text files} -@d first_text_char=0 {ordinal number of the smallest element of |text_char|} -@d last_text_char=127 {ordinal number of the largest element of |text_char|} -@y -@d text_char == ASCII_code {the data type of characters in text files} -@d first_text_char=0 {ordinal number of the smallest element of |text_char|} -@d last_text_char=255 {ordinal number of the largest element of |text_char|} -@z - -@x -for i:=@'177 to 255 do xchr[i]:='?'; -@y -for i:=@'177 to 255 do xchr[i]:=i; -@z - -%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%% -% pTeX -%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%% -@x -@d undefined_commands==250,251,252,253,254,255 -@y -@d dir=255 {pTeX direction} -@d undefined_commands==250,251,252,253,254 -@z - -@x -@d id_byte=2 {identifies the kind of \.{DVI} files described here} -@y -@d id_byte=2 {identifies the kind of \.{DVI} files described here} -@d ptex_id_byte=3 {identifies the kind of pTeX \.{DVI} files described here} -@z - -@x [23] Fix up opening the files. -@p procedure open_dvi_file; {prepares to read packed bytes in |dvi_file|} -begin reset(dvi_file); -cur_loc:=0; -end; -@# -procedure open_tfm_file; {prepares to read packed bytes in |tfm_file|} -begin reset(tfm_file,cur_name); -end; -@y -@p procedure open_dvi_file; {prepares to read packed bytes in |dvi_file|} -begin - cur_name := extend_filename (cmdline (optind), 'dvi'); - resetbin (dvi_file, cur_name); - cur_loc := 0; -end; -@# -procedure open_tfm_file; {prepares to read packed bytes in |tfm_file|} -var full_name: ^char; -begin - full_name := kpse_find_tfm (cur_name); - if full_name then begin - tfm_file := fopen (full_name, FOPEN_RBIN_MODE); - end else begin - tfm_file := nil; - end; -end; -@z - -@x [24] No arbitrary limit on filename length. -@!cur_name:packed array[1..name_length] of char; {external name, - with no lower case letters} -@y -@!cur_name:^char; {external name} -@z - -@x [27] Make get_n_bytes routines work with 16-bit math. -get_two_bytes:=a*256+b; -@y -get_two_bytes:=a*intcast(256)+b; -@z -@x -get_three_bytes:=(a*256+b)*256+c; -@y -get_three_bytes:=(a*intcast(256)+b)*256+c; -@z -@x -if a<128 then signed_trio:=(a*256+b)*256+c -else signed_trio:=((a-256)*256+b)*256+c; -@y -if a<128 then signed_trio:=(a*intcast(256)+b)*256+c -else signed_trio:=((a-intcast(256))*256+b)*256+c; -@z -@x -if a<128 then signed_quad:=((a*256+b)*256+c)*256+d -else signed_quad:=(((a-256)*256+b)*256+c)*256+d; -@y -if a<128 then signed_quad:=((a*intcast(256)+b)*256+c)*256+d -else signed_quad:=(((a-256)*intcast(256)+b)*256+c)*256+d; -@z - -@x [28] dvi_length and move_to_byte. -@p function dvi_length:integer; -begin set_pos(dvi_file,-1); dvi_length:=cur_pos(dvi_file); -end; -@# -procedure move_to_byte(n:integer); -begin set_pos(dvi_file,n); cur_loc:=n; -end; -@y -@p function dvi_length:integer; -begin - xfseek (dvi_file, 0, 2, 'dvitype'); - cur_loc := xftell(dvi_file, 'dvitype'); - dvi_length := cur_loc; -end; -@# -procedure move_to_byte(n:integer); -begin - xfseek (dvi_file, n, 0, 'dvitype'); - cur_loc:=n; -end; -@z - -%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%% -% JFM and pTeX -%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%% -@x -@!width_ptr:0..max_widths; {the number of known character widths} -@y -@!width_ptr:0..max_widths; {the number of known character widths} -@!fnt_jfm_p:array [0..max_fonts] of boolean; -@!jfm_char_code:array [0..max_widths] of integer; -@!jfm_char_type:array [0..max_widths] of integer; -@!jfm_char_font:array [0..max_widths] of integer; -@!jfm_char_type_count:integer; -@!cur_jfm_char_type:integer; - -@ @d jfm_hash_size=347 - -@ @= -@!jfm_char_type_hash_value=0..jfm_hash_size-1; - -@ @= -@!jfm_char_type_hash_table:array[jfm_char_type_hash_value] of integer; - { first pointer to character information. 0 means null pointer. } -@!jfm_char_type_hash_link:array[0..max_widths] of integer; - { next pointer to character information. 0 means null pointer. } - -@ @= -for i:=0 to jfm_hash_size-1 do - jfm_char_type_hash_table[i] := 0; -jfm_char_type[0]:=0; -jfm_char_type_count:=1; - -@ Refer char_type table. - -@p function get_jfm_char_type(@!fntn:integer;@!jfmc:integer):integer; - var p:integer; ct:integer; -begin - p:=jfm_char_type_hash_table[(jfmc+fntn) mod jfm_hash_size]; - ct:=0; { default char_type is 0 } - while p <> 0 do - if (jfm_char_code[p] = jfmc) and (jfm_char_font[p] = fntn) then - begin ct:=jfm_char_type[p]; p:=0; end - else - p:=jfm_char_type_hash_link[p]; - get_jfm_char_type:=ct; -end; - -@ @= -@!ptex_p:boolean; -@!dd:eight_bits; -@!ddstack:array [0..stack_size] of eight_bits; -@z - -@x -@!lh:integer; {length of the header data, in four-byte words} -@y -@!lh:integer; {length of the header data, in four-byte words} -@!nt:integer; -@!jfm_h:integer; -@z - -@x [35] Make 16-bit TFM calculations work. and JFM by K.A. -read_tfm_word; lh:=b2*256+b3; -read_tfm_word; font_bc[nf]:=b0*256+b1; font_ec[nf]:=b2*256+b3; -@y -read_tfm_word; lh:=b0*intcast(256)+b1; -if (lh = 11) or (lh = 9) then - begin - print(' (JFM'); - fnt_jfm_p[nf] := true; - if lh = 9 then print(' tate'); - print(')'); - nt:=b2*intcast(256)+b3; - read_tfm_word; - end -else - begin - nt:=0; - fnt_jfm_p[nf] := false; - end; -lh:=b2*intcast(256)+b3; -read_tfm_word; font_bc[nf]:=b0*intcast(256)+b1; font_ec[nf]:=b2*intcast(256)+b3; -@z -@x - if b0<128 then tfm_check_sum:=((b0*256+b1)*256+b2)*256+b3 - else tfm_check_sum:=(((b0-256)*256+b1)*256+b2)*256+b3 -@y - if b0<128 then tfm_check_sum:=((b0*intcast(256)+b1)*256+b2)*256+b3 - else tfm_check_sum:=(((b0-256)*intcast(256)+b1)*256+b2)*256+b3 -@z -@x JFM - tfm_design_size:=round(tfm_conv*(((b0*256+b1)*256+b2)*256+b3)) - else goto 9997; - end; -@y - tfm_design_size:=round(tfm_conv*(((b0*256+b1)*256+b2)*256+b3)) - else goto 9997; - end; -for k:=1 to nt do - begin - read_tfm_word; - jfm_char_code[jfm_char_type_count]:=b0*intcast(256)+b1; - jfm_char_type[jfm_char_type_count]:=b2*intcast(256)+b3; - jfm_char_font[jfm_char_type_count]:=nf; - jfm_h:= { hash value } - (jfm_char_code[jfm_char_type_count]+nf) mod jfm_hash_size; - jfm_char_type_hash_link[jfm_char_type_count]:= - jfm_char_type_hash_table[jfm_h]; - jfm_char_type_hash_table[jfm_h]:=jfm_char_type_count; - jfm_char_type_count := jfm_char_type_count + 1 - end; -@z - -@x [43] Initialize optional variables sooner. -@ @= -out_mode:=the_works; max_pages:=1000000; start_vals:=0; start_there[0]:=false; -@y -@ Initializations are done sooner now. -@z - -@x [45] No dialog. -@ The |input_ln| routine waits for the user to type a line at his or her -terminal; then it puts ASCII-code equivalents for the characters on that line -into the |buffer| array. The |term_in| file is used for terminal input, -and |term_out| for terminal output. -@^system dependencies@> - -@= -@!buffer:array[0..terminal_line_length] of ASCII_code; -@!term_in:text_file; {the terminal, considered as an input file} -@!term_out:text_file; {the terminal, considered as an output file} -@y -@ No dialog. -@z - -@x [47] No input_ln. -@p procedure input_ln; {inputs a line from the terminal} -var k:0..terminal_line_length; -begin update_terminal; reset(term_in); -if eoln(term_in) then read_ln(term_in); -k:=0; -while (k= -@!buf_ptr:0..terminal_line_length; {the number of characters read} -@y -@ No dialog. -@z - -@x [49] No dialog. -@ Here is a routine that scans a (possibly signed) integer and computes -the decimal value. If no decimal integer starts at |buf_ptr|, the -value 0 is returned. The integer should be less than $2^{31}$ in -absolute value. - -@p function get_integer:integer; -var x:integer; {accumulates the value} -@!negative:boolean; {should the value be negated?} -begin if buffer[buf_ptr]="-" then - begin negative:=true; incr(buf_ptr); - end -else negative:=false; -x:=0; -while (buffer[buf_ptr]>="0")and(buffer[buf_ptr]<="9") do - begin x:=10*x+buffer[buf_ptr]-"0"; incr(buf_ptr); - end; -if negative then get_integer:=-x @+ else get_integer:=x; -end; - -@y -@ No dialog. -@z - -@x [50-55] No dialog. -@ The selected options are put into global variables by the |dialog| -procedure, which is called just as \.{DVItype} begins. -@^system dependencies@> - -@p procedure dialog; -label 1,2,3,4,5; -var k:integer; {loop variable} -begin rewrite(term_out); {prepare the terminal for output} -write_ln(term_out,banner); -@; -@; -@; -@; -@; -@; -end; - -@ @= -1: write(term_out,'Output level (default=4, ? for help): '); -out_mode:=the_works; input_ln; -if buffer[0]<>" " then - if (buffer[0]>="0")and(buffer[0]<="4") then out_mode:=buffer[0]-"0" - else begin write(term_out,'Type 4 for complete listing,'); - write(term_out,' 0 for errors and fonts only,'); - write_ln(term_out,' 1 or 2 or 3 for something in between.'); - goto 1; - end - -@ @= -2: write(term_out,'Starting page (default=*): '); -start_vals:=0; start_there[0]:=false; -input_ln; buf_ptr:=0; k:=0; -if buffer[0]<>" " then - repeat if buffer[buf_ptr]="*" then - begin start_there[k]:=false; incr(buf_ptr); - end - else begin start_there[k]:=true; start_count[k]:=get_integer; - end; - if (k<9)and(buffer[buf_ptr]=".") then - begin incr(k); incr(buf_ptr); - end - else if buffer[buf_ptr]=" " then start_vals:=k - else begin write(term_out,'Type, e.g., 1.*.-5 to specify the '); - write_ln(term_out,'first page with \count0=1, \count2=-5.'); - goto 2; - end; - until start_vals=k - -@ @= -3: write(term_out,'Maximum number of pages (default=1000000): '); -max_pages:=1000000; input_ln; buf_ptr:=0; -if buffer[0]<>" " then - begin max_pages:=get_integer; - if max_pages<=0 then - begin write_ln(term_out,'Please type a positive number.'); - goto 3; - end; - end - -@ @= -4: write(term_out,'Assumed device resolution'); -write(term_out,' in pixels per inch (default=300/1): '); -resolution:=300.0; input_ln; buf_ptr:=0; -if buffer[0]<>" " then - begin k:=get_integer; - if (k>0)and(buffer[buf_ptr]="/")and - (buffer[buf_ptr+1]>"0")and(buffer[buf_ptr+1]<="9") then - begin incr(buf_ptr); resolution:=k/get_integer; - end - else begin write(term_out,'Type a ratio of positive integers;'); - write_ln(term_out,' (1 pixel per mm would be 254/10).'); - goto 4; - end; - end - -@ @= -5: write(term_out,'New magnification (default=0 to keep the old one): '); -new_mag:=0; input_ln; buf_ptr:=0; -if buffer[0]<>" " then - if (buffer[0]>="0")and(buffer[0]<="9") then new_mag:=get_integer - else begin write(term_out,'Type a positive integer to override '); - write_ln(term_out,'the magnification in the DVI file.'); - goto 5; - end -@y -@ No dialog (50). -@ No dialog (51). -@ No dialog (52). -@ No dialog (53). -@ No dialog (54). -@ No dialog (55). -@z - -@x [56] Fix printing of floating point number. -print_ln(' Resolution = ',resolution:12:8,' pixels per inch'); -if new_mag>0 then print_ln(' New magnification factor = ',new_mag/1000:8:3) -@y -print (' Resolution = '); -print_real (resolution, 12, 8); -print_ln (' pixels per inch'); -if new_mag > 0 -then begin - print (' New magnification factor = '); - print_real (new_mag / 1000.0, 8, 3); - print_ln('') -end -@z - -@x [59] We use r for something else. -@!r:0..name_length; {index into |cur_name|} -@y -@!r:0..name_size; {current filename length} -@z - -@x [62] close the file when we're done -if out_mode=errors_only then print_ln(' '); -@y -if out_mode=errors_only then print_ln(' '); -if tfm_file then - xfclose (tfm_file, cur_name); {should be the |kpse_find_tfm| result} -free (cur_name); {We |xmalloc|'d this before we got called.} -@z - -@x [64] Don't set default_directory_name. -@d default_directory_name=='TeXfonts:' {change this to the correct name} -@d default_directory_name_length=9 {change this to the correct length} - -@= -@!default_directory:packed array[1..default_directory_name_length] of char; -@y -Under Unix, users have a path searched for fonts, there's no single -default directory. -@z - -@x [65] Remove initialization of default_directory. -@ @= -default_directory:=default_directory_name; -@y -@ (No initialization needs to be done. Keep this module to preserve -numbering.) -@z - -@x [66] Don't append `.tfm' here, and keep lowercase. -@ The string |cur_name| is supposed to be set to the external name of the -\.{TFM} file for the current font. This usually means that we need to -prepend the name of the default directory, and -to append the suffix `\.{.TFM}'. Furthermore, we change lower case letters -to upper case, since |cur_name| is a \PASCAL\ string. -@^system dependencies@> - -@= -for k:=1 to name_length do cur_name[k]:=' '; -if p=0 then - begin for k:=1 to default_directory_name_length do - cur_name[k]:=default_directory[k]; - r:=default_directory_name_length; - end -else r:=0; -for k:=font_name[nf] to font_name[nf+1]-1 do - begin incr(r); - if r+4>name_length then - abort('DVItype capacity exceeded (max font name length=', - name_length:1,')!'); -@.DVItype capacity exceeded...@> - if (names[k]>="a")and(names[k]<="z") then - cur_name[r]:=xchr[names[k]-@'40] - else cur_name[r]:=xchr[names[k]]; - end; -cur_name[r+1]:='.'; cur_name[r+2]:='T'; cur_name[r+3]:='F'; cur_name[r+4]:='M' -@y -@ The string |cur_name| is supposed to be set to the external name of the -\.{TFM} file for the current font. We do not impose a maximum limit -here. It's too bad there is a limit on the total length of all -filenames, but it doesn't seem worth reprogramming all that. -@^system dependencies@> - -@d name_start == font_name[nf] -@d name_end == font_name[nf+1] - -@= -r := name_end - name_start; -cur_name := xmalloc_array (char, r); -{|strncpy| might be faster, but it's probably a good idea to keep the - |xchr| translation.} -for k := name_start to name_end do begin - cur_name[k - name_start] := xchr[names[k]]; -end; -cur_name[r] := 0; {Append null byte for C.} -@z - -%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%% -% JFM -%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%% -@x Not use fprintf() for JIS - for k:=1 to text_ptr do print(xchr[text_buf[k]]); - print_ln(']'); -@y - for k:=1 to text_ptr do print(xchr[text_buf[k]]); - print(']'); print_ln(''); -@z - -@x -@p procedure out_text(c:ASCII_code); -begin if text_ptr=line_length-2 then flush_text; -incr(text_ptr); text_buf[text_ptr]:=c; -end; -@y -@p procedure out_text(c:ASCII_code); -begin if text_ptr=line_length-2 then flush_text; -incr(text_ptr); -if c>=177 then text_buf[text_ptr]:=@'77 else text_buf[text_ptr]:=c; -end; - -@ declare kanji conversion function - -@d jis_enc==0 -@d euc_enc==1 -@d sjis_enc==2 - -@ @ = -@!proc_kanji_code:jis_enc..sjis_enc; - -@ @ = -ifdef('OUTJIS') proc_kanji_code:=jis_enc; endif('OUTJIS'); -ifdef('OUTEUC') proc_kanji_code:=euc_enc; endif('OUTEUC'); -ifdef('OUTSJIS') proc_kanji_code:=sjis_enc; endif('OUTSJIS'); - -@ @p procedure out_kanji(c:integer); -begin - if text_ptr>=line_length-3 then flush_text; - if (proc_kanji_code=sjis_enc) then begin - c := JIStoSJIS(c); - incr(text_ptr); text_buf[text_ptr]:= c div 256; - incr(text_ptr); text_buf[text_ptr]:= c mod 256; - end else begin - incr(text_ptr); text_buf[text_ptr]:= c div 256 + 128; - incr(text_ptr); text_buf[text_ptr]:= c mod 256 + 128; - end; -end; - -@ output hexdecimal / octal character code. - -@d print_hex_digit(#)==if # <= 9 then print((#):1) - else case # of - 10: print(xchr['A']); - 11: print(xchr['B']); - 12: print(xchr['C']); - 13: print(xchr['D']); - 14: print(xchr['E']); - 15: print(xchr['F']); { no more cases } - end - -@p -ifdef('HEX_CHAR_CODE') -procedure print_hex_number(c:integer); -var n:integer; - b:array[1..8] of integer; -begin - n:=1; - while (n<8) and (c<>0) do - begin b[n]:=c mod 16; c:=c div 16; n:=n+1 end; - print('"'); - if n=1 then print(xchr['0']) - else - begin - n:=n-1; - while n>0 do - begin print_hex_digit(b[n]); n:=n-1 end - end -end; -endif('HEX_CHAR_CODE') -@z - -%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%% -% pTeX -%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%% -@x -z0: first_par:=z; -@y -z0: first_par:=z; -dir: first_par:=get_byte; -@z - -%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%% -% pTeX -%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%% -@x -s:=0; h:=0; v:=0; w:=0; x:=0; y:=0; z:=0; hh:=0; vv:=0; -@y -s:=0; h:=0; v:=0; w:=0; x:=0; y:=0; z:=0; hh:=0; vv:=0; dd:=0; -@z -%%%%%%%%%%%%%%%%%%%%%%%%% End of pTeX%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%% - -@x [80] (major,minor) optionally show opcode -@d show(#)==begin flush_text; showing:=true; print(a:1,': ',#); - end -@d major(#)==if out_mode>errors_only then show(#) -@d minor(#)==if out_mode>terse then - begin showing:=true; print(a:1,': ',#); -@y -@d show(#)==begin flush_text; showing:=true; print(a:1,': ',#); - if show_opcodes and (o >= 128) then print (' {', o:1, '}'); - end -@d major(#)==if out_mode>errors_only then show(#) -@d minor(#)==if out_mode>terse then - begin showing:=true; print(a:1,': ',#); - if show_opcodes and (o >= 128) then print (' {', o:1, '}'); -@z - -%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%% -% pTeX -%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%% -@x - four_cases(set1): begin major('set',o-set1+1:1,' ',p:1); goto fin_set; -@y - four_cases(set1): - begin - if fnt_jfm_p[cur_font]=true then - begin - cur_jfm_char_type:=get_jfm_char_type(cur_font,p); - out_kanji(p); - minor('set',o-set1+1:1,' ',p:1); -ifdef('HEX_CHAR_CODE') - print('('); - print_hex_number(p); - print(')'); -endif('HEX_CHAR_CODE') - print(' type=',cur_jfm_char_type); - p:=cur_jfm_char_type - end - else begin - major('set',o-set1+1:1,' ',p:1); -ifdef('HEX_CHAR_CODE') - print('('); - print_hex_number(p); - print(')'); -endif('HEX_CHAR_CODE') - end; - goto fin_set; -@z - -@x - put_rule: begin major('putrule'); goto fin_rule; - end; -@y - put_rule: begin major('putrule'); goto fin_rule; - end; - dir: begin major('dir ',p:1); dd:=p; goto done; - end; -@z - -%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%% -% pTeX -%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%% -@x - hstack[s]:=h; vstack[s]:=v; wstack[s]:=w; -@y - ddstack[s]:=dd; - hstack[s]:=h; vstack[s]:=v; wstack[s]:=w; -@z - -@x - h:=hstack[s]; v:=vstack[s]; w:=wstack[s]; -@y - dd:=ddstack[s]; - h:=hstack[s]; v:=vstack[s]; w:=wstack[s]; -@z - -@x -@d out_space(#)==if (p>=font_space[cur_font])or(p<=-4*font_space[cur_font]) then - begin out_text(" "); hh:=pixel_round(h+p); - end - else hh:=hh+pixel_round(p); -@y -@d out_space(#)==if (p>=font_space[cur_font])or(p<=-4*font_space[cur_font]) then - begin out_text(" "); - if dd=0 then hh:=pixel_round(h+p) else vv:=pixel_round(v+p); - end - else if dd=0 then hh:=hh+pixel_round(p) else vv:=vv+pixel_round(p); -@z - -@x -@d out_vmove(#)==if abs(p)>=5*font_space[cur_font] then vv:=pixel_round(v+p) - else vv:=vv+pixel_round(p); -@y -@d out_vmove(#)==if abs(p)>=5*font_space[cur_font] then - begin if dd=0 then vv:=pixel_round(v+p) else hh:=pixel_round(h-p) end - else if dd=0 then vv:=vv+pixel_round(p) else hh:=hh-pixel_round(p); -@z - -%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%% -% Hexadecimal code -%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%% -@x -@ @= -begin if (o>" ")and(o<="~") then - begin out_text(p); minor('setchar',p:1); - end -else major('setchar',p:1); -@y -@ @= -begin if (o>" ")and(o<="~") then - begin out_text(p); minor('setchar',p:1); - end -else major('setchar',p:1); -ifdef('HEX_CHAR_CODE') - print(' ('); - print_hex_number(p); - print(')'); -endif('HEX_CHAR_CODE') -@z - -%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%% -% pTeX -%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%% -@x -else hh:=hh+char_pixel_width(cur_font)(p); -@y -else if dd=0 then hh:=hh+char_pixel_width(cur_font)(p) - else vv:=vv+char_pixel_width(cur_font)(p); -@z - -@x -hh:=hh+rule_pixels(q); goto move_right -@y -if dd=0 then hh:=hh+rule_pixels(q) else vv:=vv+rule_pixels(q); -goto move_right -@z - -%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%% -% pTeX -%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%% -@x -@= -@y -@= -if dd=0 then begin -@z - -@x -goto done -@y -goto done end -else begin -if (v>0)and(q>0) then if v>infinity-q then - begin error('arithmetic overflow! parameter changed from ', -@.arithmetic overflow...@> - q:1,' to ',infinity-q:1); - q:=infinity-v; - end; -if (v<0)and(q<0) then if -v>q+infinity then - begin error('arithmetic overflow! parameter changed from ', - q:1, ' to ',(-v)-infinity:1); - q:=(-v)-infinity; - end; -hhh:=pixel_round(v+q); -if abs(hhh-vv)>max_drift then - if hhh>vv then vv:=hhh-max_drift - else vv:=hhh+max_drift; -if showing then if out_mode>mnemonics_only then - begin print(' v:=',v:1); - if q>=0 then print('+'); - print(q:1,'=',v+q:1,', vv:=',vv:1); - end; -v:=v+q; -if abs(v)>max_v_so_far then - begin if abs(v)>max_v+99 then - begin error('warning: |v|>',max_v:1,'!'); -@.warning: |v|...@> - max_v:=abs(v); - end; - max_v_so_far:=abs(v); - end; -goto done -end -@z - -@x -@ @= -@y -@ @= -if dd=0 then begin -@z - -@x -goto done -@y -goto done end -else begin -p:=-p; -if (h>0)and(p>0) then if h>infinity-p then - begin error('arithmetic overflow! parameter changed from ', -@.arithmetic overflow...@> - p:1,' to ',infinity-h:1); - p:=infinity-h; - end; -if (h<0)and(p<0) then if -h>p+infinity then - begin error('arithmetic overflow! parameter changed from ', - p:1, ' to ',(-h)-infinity:1); - p:=(-h)-infinity; - end; -vvv:=pixel_round(h+p); -if abs(vvv-hh)>max_drift then - if vvv>hh then hh:=vvv-max_drift - else hh:=vvv+max_drift; -if showing then if out_mode>mnemonics_only then - begin print(' h:=',h:1); - if p>=0 then print('+'); - print(p:1,'=',h+p:1,', hh:=',hh:1); - end; -h:=h+p; -if abs(h)>max_h_so_far then - begin if abs(h)>max_h+99 then - begin error('warning: |h|>',max_h:1,'!'); -@.warning: |h|...@> - max_h:=abs(h); - end; - max_h_so_far:=abs(h); - end; -goto done -end -@z - -%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%% -% pTeX -%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%% -@x - print('level ',ss:1,':(h=',h:1,',v=',v:1, - ',w=',w:1,',x=',x:1,',y=',y:1,',z=',z:1, - ',hh=',hh:1,',vv=',vv:1,')'); -@y - begin - print('level ',ss:1,':(h=',h:1,',v=',v:1, - ',w=',w:1,',x=',x:1,',y=',y:1,',z=',z:1); - if ptex_p then print(',d=',dd:1); - print(',hh=',hh:1,',vv=',vv:1,')'); - end; -@z - -@x -if k<>id_byte then bad_dvi('ID byte is ',k:1); -@y -ptex_p:=(k=ptex_id_byte); -if (k<>id_byte) and (not ptex_p) then bad_dvi('ID byte is ',k:1); -@z - -@x -print_ln(', maxstackdepth=',max_s:1,', totalpages=',total_pages:1); -@y -print_ln(', maxstackdepth=',max_s:1,', totalpages=',total_pages:1); -if ptex_p then print_ln('pTeX DVI (id=',ptex_id_byte:1,')'); -@z - -@x -if m<>id_byte then print_ln('identification in byte ',cur_loc-1:1, -@.identification...should be n@> - ' should be ',id_byte:1,'!'); -@y -if (m<>id_byte) and (m<>ptex_id_byte) then - print_ln('identification in byte ',cur_loc-1:1, -@.identification...should be n@> - ' should be ',id_byte:1,' or ',ptex_id_byte:1,'!'); -@z - -@x [106] (main) No dialog; remove unused label. -dialog; {set up all the options} -@y -@; -@z - -@x -final_end:end. -@y -end. -@z - -@x [109] Fix another floating point print. -print_ln('magnification=',mag:1,'; ',conv:16:8,' pixels per DVI unit') -@y -print ('magnification=', mag:1, '; '); -print_real (conv, 16, 8); -print_ln (' pixels per DVI unit') -@z - -@x [111] System-dependent changes. -This section should be replaced, if necessary, by changes to the program -that are necessary to make \.{DVItype} work at a particular installation. -It is usually best to design your change file so that all changes to -previous sections preserve the section numbering; then everybody's version -will be consistent with the printed program. More extensive changes, -which introduce new sections, can be inserted here; then only the index -itself will get a new section number. -@^system dependencies@> -@y -Parse a Unix-style command line. - -@d argument_is (#) == (strcmp (long_options[option_index].name, #) = 0) - -@ = -procedure parse_arguments; -const n_options = 9; {Pascal won't count array lengths for us.} -var @!long_options: array[0..n_options] of getopt_struct; - @!getopt_return_val: integer; - @!option_index: c_int_type; - @!current_option: 0..n_options; - @!end_num:^char; {for \.{page-start}} -begin - @; - repeat - getopt_return_val := getopt_long_only (argc, argv, '', long_options, - address_of (option_index)); - if getopt_return_val = -1 then begin - {End of arguments; we exit the loop below.} ; - - end else if getopt_return_val = "?" then begin - usage ('pdvitype'); - - end else if argument_is ('help') then begin - usage_help (PDVITYPE_HELP, nil); - - end else if argument_is ('version') then begin - print_version_and_exit (banner, nil, 'D.E. Knuth'); - - end else if argument_is ('output-level') then begin - out_mode := atou (optarg); - if (out_mode = 0) or (out_mode > 4) then begin - write_ln (stderr, 'Value for --output-level must be >= 1 and <= 4.'); - uexit (1); - end; - - end else if argument_is ('page-start') then begin - @; - - end else if argument_is ('max-pages') then begin - max_pages := atou (optarg); - - end else if argument_is ('dpi') then begin - resolution := atof (optarg); - - end else if argument_is ('magnification') then begin - new_mag := atou (optarg); - - end; {Else it was a flag; |getopt| has already done the assignment.} - until getopt_return_val = -1; - - {Now |optind| is the index of first non-option on the command line.} - if (optind + 1 <> argc) then begin - write_ln (stderr, 'pdvitype: Need exactly one file argument.'); - usage ('pdvitype'); - end; -end; - -@ Here are the options we allow. The first is one of the standard GNU options. -@.-help@> - -@ = -current_option := 0; -long_options[current_option].name := 'help'; -long_options[current_option].has_arg := 0; -long_options[current_option].flag := 0; -long_options[current_option].val := 0; -incr (current_option); - -@ Another of the standard options. -@.-version@> - -@ = -long_options[current_option].name := 'version'; -long_options[current_option].has_arg := 0; -long_options[current_option].flag := 0; -long_options[current_option].val := 0; -incr (current_option); - -@ How verbose to be. -@.-output-level@> - -@ = -long_options[current_option].name := 'output-level'; -long_options[current_option].has_arg := 1; -long_options[current_option].flag := 0; -long_options[current_option].val := 0; -incr (current_option); -out_mode := the_works; {default} - -@ What page to start at. -@.-page-start@> - -@ = -long_options[current_option].name := 'page-start'; -long_options[current_option].has_arg := 1; -long_options[current_option].flag := 0; -long_options[current_option].val := 0; -incr (current_option); - -@ Parsing the starting page specification is a bit complicated. - -@ = -k := 0; {which \.{\\count} register we're on} -m := 0; {position in |optarg|} -while optarg[m] do begin - if optarg[m] = "*" then begin - start_there[k] := false; - incr (m); - - end else if optarg[m] = "." then begin - incr (k); - if k >= 10 then begin - write_ln (stderr, 'dvitype: More than ten count registers specified.'); - uexit (1); - end; - incr (m); - - end else begin - start_count[k] := strtol (optarg + m, address_of (end_num), 10); - if end_num = optarg + m then begin - write_ln (stderr, 'dvitype: -page-start values must be numeric or *.'); - uexit (1); - end; - start_there[k] := true; - m := m + end_num - (optarg + m); - end; -end; -start_vals := k; - -@ How many pages to do. -@.-max-pages@> - -@ = -long_options[current_option].name := 'max-pages'; -long_options[current_option].has_arg := 1; -long_options[current_option].flag := 0; -long_options[current_option].val := 0; -incr (current_option); -max_pages := 1000000; {default} - -@ Resolution, in pixels per inch. -@.-dpi@> - -@ = -long_options[current_option].name := 'dpi'; -long_options[current_option].has_arg := 1; -long_options[current_option].flag := 0; -long_options[current_option].val := 0; -incr (current_option); -resolution := 300.0; {default} - -@ Magnification to apply. -@.-magnification@> - -@ = -long_options[current_option].name := 'magnification'; -long_options[current_option].has_arg := 1; -long_options[current_option].flag := 0; -long_options[current_option].val := 0; -incr (current_option); -new_mag := 0; {default is to keep the old one} - -@ Whether to show numeric opcodes. -@.-show-opcodes@> - -@ = -long_options[current_option].name := 'show-opcodes'; -long_options[current_option].has_arg := 0; -long_options[current_option].flag := address_of (show_opcodes); -long_options[current_option].val := 1; -incr (current_option); -new_mag := 0; {default is to keep the old one} - -@ @ = -@!show_opcodes: c_int_type; - -@ An element with all zeros always ends the list. - -@ = -long_options[current_option].name := 0; -long_options[current_option].has_arg := 0; -long_options[current_option].flag := 0; -long_options[current_option].val := 0; -@z diff --git a/language/japanese/ptex/pltotf.ch b/language/japanese/ptex/pltotf.ch deleted file mode 100644 index c066e57361..0000000000 --- a/language/japanese/ptex/pltotf.ch +++ /dev/null @@ -1,780 +0,0 @@ -% This is a change file for TFtoPL -% -% (11/13/2000) KN PLtoTF p1.4 (3.5, Web2c 7.2) -% (03/27/1998) KN PLtoTF p1.3 (3.5, Web2c 7.2) -% -@x [0] l.52 - pTeX: -\def\title{PL$\,$\lowercase{to}$\,$TF changes for C} -@y -\def\title{PL$\,$\lowercase{to}$\,$TF changes for C, and for KANJI} -@z - -@x [2] l.69 - pTeX: -@d banner=='This is PLtoTF, Version 3.5' {printed when the program starts} -@y -@d banner=='This is Nihongo PLtoTF, Version 3.5-p1.6' - {printed when the program starts} -@d jis_enc==0 -@d euc_enc==1 -@d sjis_enc==2 -@z - -@x [6] l.140 - pTeX: - print_ln (version_string); -@y - print_ln (version_string); - print ('process kanji code is '); - case proc_kanji_code of - jis_enc: print('jis'); - euc_enc: print('euc'); - sjis_enc: print('sjis'); - end; - print_ln ('.'); -@z - -@x [18] l.495 - pTeX: -@!xord:array[char] of ASCII_code; {conversion table} -@y -@!xord:array[char] of ASCII_code; {conversion table} -@!xchr:array[char] of byte; {specifiles conversion of output character} -@z - -@x [19] l.506 - pTeX: -for k:=first_ord to last_ord do xord[chr(k)]:=invalid_code; -@y -for k:=0 to @'37 do xchr[k]:='?'; -for k:=@'40 to 255 do xchr[k]:=k; -for k:=first_ord to last_ord do xord[chr(k)]:=invalid_code; -@z - -@x [27] l.587 - pTeX: to convert putc of web2c -for k:=1 to loc do print(buffer[k]); {print the characters already scanned} -@y -for k:=1 to loc do print(xchr[buffer[k]]); - {print the characters already scanned} -@z - -@x [27] l.591 - pTeX: to convert putc of web2c -for k:=loc+1 to limit do print(buffer[k]); {print the characters yet unseen} -@y -for k:=loc+1 to limit do print(xchr[buffer[k]]); - {print the characters yet unseen} -@z - -@x [28] l.610 - pTeX: Read JIS kanji code. -@p procedure fill_buffer; -begin left_ln:=right_ln; limit:=0; loc:=0; -@y -@p procedure fill_buffer; -var @!c_a,@!c_b:byte; -@!cx:integer; -@!kmode:0..1; {|1| denotes in JIS kanji strings} -begin left_ln:=right_ln; limit:=0; loc:=0; kmode:=0; -@z - -@x [28] l.619 - pTeX: -else begin while (limit - else - begin if kmode=0 then - begin incr(limit); buffer[limit]:=c_a; - end - else begin read(pl_file,c_b); - if (proc_kanji_code=sjis_enc) then cx:=JIStoSJIS(c_a*@'400+c_b) - else cx:=JIStoEUC(c_a*@'400+c_b); - incr(limit); buffer[limit]:=cx div @'400; - incr(limit); buffer[limit]:=cx mod @'400; - end; - end; - end; -@z - -%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%% -% [28] This fixes a bug in the original. If get_byte is reading a -% number at the end of a line and the next line has a number -% at the beginning (possibly preceded by some spaces!!) these -% two numbers are run together. -% This bug may be found in other routines so... -% Fix: add some (more?) space at the end of each line, in fill_buffer. -%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%% -@x [28] l.622 - pTeX: - buffer[limit+1]:=' '; right_ln:=eoln(pl_file); - if left_ln then @; - end; -end; -@y - buffer[limit+1]:=' '; right_ln:=eoln(pl_file); - if right_ln then begin incr(limit); buffer[limit+1]:=' '; - end; - if left_ln then @; - end; -end; - -@ @= -begin read(pl_file,c_a); -if c_a='$' then begin read(pl_file,c_a); - if (c_a='@@')or(c_a='B') then kmode:=1 { Kanji in } - else begin incr(limit); buffer[limit]:=@'33; - incr(limit); buffer[limit]:='$'; - incr(limit); buffer[limit]:=c_a; - end; - end -else if c_a='(' then begin read(pl_file,c_a); - if (c_a='J')or(c_a='B')or(c_a='H') then kmode:=0 { Kanji out } - else begin incr(limit); buffer[limit]:=@'33; - incr(limit); buffer[limit]:='('; - incr(limit); buffer[limit]:=c_a; - end; - end -else begin - incr(limit); buffer[limit]:=@'33; - incr(limit); buffer[limit]:=c_a; - end; -end -@z - -@x [36] l.754 - pTeX: May have to increase some numbers to fit new commands -@d max_name_index=88 {upper bound on the number of keywords} -@d max_letters=600 {upper bound on the total length of all keywords} -@y -@d max_name_index=97 {upper bound on the number of keywords} -@d max_letters=700 {upper bound on the total length of all keywords} -@z - -@x [44] l.839 - pTeX: Add kanji related codes -@d character_code=12 -@y -@d character_code=12 -@d type_code=13 {|TYPE| property} -@d glue_kern_code=14 {|GLUEKRN| property} -@d chars_in_type_code=15 {|CHARSINTYPE| property} -@d dir_code=16 {|DIRECTION| property} -@z - -@x [44] l.856 - pTeX: -@d lig_code=74 -@y -@d lig_code=74 -@d glue_code=75 {|GLUE| property} -@# -@d undefined=0 {not decided file format yet} -@d tfm_format=1 {\.{TFM} file format} -@d jfm_or_vfm=2 {Yoko or Tate \.{JFM} file format} -@d jfm_format=3 {Yoko-kumi \.{JFM} file format} -@d vfm_format=4 {Tate-kumi \.{JFM} file format} -@z - -@x [84] l.1542 - pTeX: Change valid property code. -if cur_code=comment_code then skip_to_end_of_item -else if cur_code>character_code then - flush_error('This property name doesn''t belong on the outer level') -@.This property name doesn't belong...@> -@y -if cur_code=comment_code then skip_to_end_of_item -else if (cur_code>dir_code)or - ((file_format=tfm_format)and(cur_code>character_code)) then - flush_error('This property name doesn''t belong on the outer level') -@.This property name doesn't belong...@> -@z - -@x [85] l.1565 - pTeX: Added some property codes. -character_code: read_char_info; -@y -character_code: read_char_info; -type_code: read_kanji_info; -glue_kern_code: read_glue_kern; -chars_in_type_code: read_chars_in_type; -dir_code: read_direction; -@z - -@x [110] l.1915 - pTeX: there are no charlists in kanji format files. -for c:=0 to 255 do - @; -@y -if file_format=tfm_format then - for c:=0 to 255 do - @; -@z - -@x [120] l.2037 - pTeX: when checking glue_kern prog check glues as well - begin if lig_exam<>bchar then - check_existence(lig_exam)('LIG character examined by'); -@.LIG character examined...@> - check_existence(lig_gen)('LIG character generated by'); -@.LIG character generated...@> - if lig_gen>=128 then if(c<128)or(c=256) then - if(lig_exam<128)or(lig_exam=bchar) then seven_unsafe:=true; - end -@y - begin if file_format=tfm_format then - begin if lig_exam<>bchar then - check_existence(lig_exam)('LIG character examined by'); -@.LIG character examined...@> - check_existence(lig_gen)('LIG character generated by'); -@.LIG character generated...@> - if lig_gen>=128 then if(c<128)or(c=256) then - if(lig_exam<128)or(lig_exam=bchar) then seven_unsafe:=true; - end - else check_existence(lig_exam)('GLUE character generated by'); - end -@z - -@x [126] l.2178 - pTeX: Fix up output of bytes. -@= -if nl>0 then for lig_ptr:=0 to nl-1 do - if lig_kern[lig_ptr].b2= -@z - -@x [128] l.2207 - pTeX: Decide the |file_format|. -@= -@y -@= -case file_format of -tfm_format: do_nothing; -undefined,jfm_or_vfm: begin file_format:=jfm_format; - print_ln('Input file is in kanji YOKO-kumi format.'); - end; -jfm_format: print_ln('Input file is in kanji YOKO-kumi format.'); -vfm_format: print_ln('Input file is in kanji TATE-kumi format.'); -end; -@z - -@x [128] l.2211 - pTeX: Output kanji character -@; -@y -if file_format<>tfm_format then @; -@; -@z - -@x [128] l.2213 - pTeX: Output glue/kern programs -@; -@y -@; -if (file_format<>tfm_format)and(ng>0) then - for krn_ptr:=0 to ng-1 do - begin out_scaled(glue[3*krn_ptr+0]); - out_scaled(glue[3*krn_ptr+1]); - out_scaled(glue[3*krn_ptr+2]); - end; -@z - -@x [130] l.2238 - pTeX: -not_found:=true; bc:=0; -while not_found do - if (char_wd[bc]>0)or(bc=255) then not_found:=false - else incr(bc); -not_found:=true; ec:=255; -while not_found do - if (char_wd[ec]>0)or(ec=0) then not_found:=false - else decr(ec); -if bc>ec then bc:=1; -@y -if file_format<>tfm_format then - begin bc:=0; ec:=0; nt:=1; - for kanji_type_index:=0 to max_kanji do - begin if kanji_type[kanji_type_index]>0 then incr(nt); - if kanji_type[kanji_type_index]>ec then ec:=kanji_type[kanji_type_index]; - end; - end -else begin not_found:=true; bc:=0; - while not_found do - if (char_wd[bc]>0)or(bc=255) then not_found:=false - else incr(bc); - not_found:=true; ec:=255; - while not_found do - if (char_wd[ec]>0)or(ec=0) then not_found:=false - else decr(ec); - if bc>ec then bc:=1; - end; -@z - -@x [130] l.2250 - pTeX: -lf:=6+lh+(ec-bc+1)+memory[width]+memory[height]+memory[depth]+ -memory[italic]+nl+lk_offset+nk+ne+np; -@y -if file_format<>tfm_format then - lf:=7+nt+lh+(ec-bc+1)+memory[width]+memory[height]+memory[depth]+ - memory[italic]+nl+lk_offset+nk+3*ng+np -else - lf:=6+lh+(ec-bc+1)+memory[width]+memory[height]+memory[depth]+ - memory[italic]+nl+lk_offset+nk+ne+np; -@z - -@x [131] l.2256 - pTeX: -out_size(lf); out_size(lh); out_size(bc); out_size(ec); -out_size(memory[width]); out_size(memory[height]); -out_size(memory[depth]); out_size(memory[italic]); -out_size(nl+lk_offset); out_size(nk); out_size(ne); out_size(np); -@y -if file_format=jfm_format then - begin out_size(yoko_id_number); out_size(nt); - end -else if file_format=vfm_format then - begin out_size(tate_id_number); out_size(nt); - end; -out_size(lf); out_size(lh); out_size(bc); out_size(ec); -out_size(memory[width]); out_size(memory[height]); -out_size(memory[depth]); out_size(memory[italic]); -out_size(nl+lk_offset); out_size(nk); -if file_format<>tfm_format then begin out_size(ng*3) - end -else begin out_size(ne); - end; -out_size(np); -@z - -@x [146] l.2476 - pTeX: -@p procedure param_enter; -@y -@p -@@/ -procedure param_enter; -@z - -@x [146] l.2488 - pTeX: LIGTABLE command can not be used in JPL. -begin @; -end; -@y -begin @; -@; -end; -@z - -@x [146] l.2493 - pTeX: CHARACTER command can not be used in JPL. -begin @; -end; -@y -begin @; -@; -end; -@z - -@x [146] l.2506 - pTeX: -begin @ -end; -@y -begin @ -end; -@# -procedure read_kanji_info; {TYPE command} -var @!c:byte; {the char} -begin @; -@; -end; -@# -procedure read_glue_kern; {GLUEKERN command} -var krn_ptr:0..max_kerns; {an index into |kern|} -@!c:byte; {runs through all character codes} -begin @; -@; -end; -@# -procedure read_chars_in_type; {CHARSINTYPE command} -var @!type_num:byte; {kanji character type number} -@!jis_code:integer; {sixteen bits Kanji character code} -begin @; -@; -end; -@# -procedure read_direction; {DIRECTION command} -begin @; -@; -end; -@z - -@x -const n_options = 3; {Pascal won't count array lengths for us.} -@y -const n_options = 4; {Pascal won't count array lengths for us.} -@z -@x - usage_help (PLTOTF_HELP, nil); -@y - usage_help (PTEX_PLTOTF_HELP, nil); -@z -@x - end else if argument_is ('version') then begin - print_version_and_exit (banner, nil, 'D.E. Knuth'); -@y - end else if argument_is ('version') then begin - print_version_and_exit (banner, nil, 'D.E. Knuth'); - - end else if argument_is ('kanji') then begin - @; -@z - -@x -@ An element with all zeros always ends the list. -@y -@ kanji option. - -@ = -long_options[current_option].name := 'kanji'; -long_options[current_option].has_arg := 1; -long_options[current_option].flag := 0; -long_options[current_option].val := 0; -incr(current_option); - -@ An element with all zeros always ends the list. -@z - -@x [148] l.2620 - pTeX: -@* Index. -@y -@* For Japanese Font Metric routines. -We need to include some routines for handling kanji characters. - -@= -max_kanji=7237; { maximam number of 2byte characters } -yoko_id_number=11; { is identifier for YOKO-kumi font} -tate_id_number=9; { is identifier for TATE-kumi font} - -@ @= -file_format:undefined..vfm_format; {the format of the input file} -kanji_type:array[0..max_kanji] of -1..256; {the type of every kanji char } -kanji_type_index:0..max_kanji; { index into above } -nt:integer; {number of entries in character type table} -glue:array[0..768] of fix_word; {the distinct glue amounts} -ng:integer; {number of 3-word entries in glue table} - -@ @= -file_format:=undefined; -for kanji_type_index:=0 to max_kanji do kanji_type[kanji_type_index]:=-1; -ng:=0; - -@ @= -if (file_format>tfm_format) then - err_print('This is an illegal command for kanji format files.') -else if (file_format=undefined) then file_format:=tfm_format - -@ @= -if (file_format=tfm_format) then - err_print('You can use this command only for kanji format files.') -else if (file_format=undefined) then file_format:=jfm_or_vfm - -@ These are extended propaties for \.{JFM}. - -@= -load4("T")("Y")("P")("E")(type_code);@/ -load8("G")("L")("U")("E")("K")("E")("R")("N")(glue_kern_code);@/ -load11("C")("H")("A")("R")("S")("I")("N")("T")("Y")("P")("E") - (chars_in_type_code);@/ -load9("D")("I")("R")("E")("C")("T")("I")("O")("N")(dir_code);@/ -load4("G")("L")("U")("E")(glue_code);@/ - -@ @= -load10("E")("X")("T")("R")("A")("S")("P")("A")("C")("E")(parameter_code+7);@/ -load12("E")("X")("T")("R")("A")("S")("T")("R")("E")("T")("C")("H") - (parameter_code+8);@/ -load11("E")("X")("T")("R")("A")("S")("H")("R")("I")("N")("K") - (parameter_code+9);@/ - - -@ Here, we declare kanji related routines and package gluekern stuff. -There routines a bit similar reading ligature/kern programs. - -@= -begin while level=1 do - begin while cur_char=" " do get_next; - if cur_char="(" then @ - else if cur_char=")" then skip_to_end_of_item - else junk_error; - end; -finish_inner_property_list; -end; - -@ @= -begin get_name; -if cur_code=comment_code then skip_to_end_of_item -else begin case cur_code of - label_code:@; - stop_code:@; - krn_code:@; - glue_code:@; - others: - flush_error('This property name doesn''t belong in a GLUEKERN list'); -@.This property name doesn't belong...@> - end; - finish_the_property; - end; -end - -@ When a character is about to be tagged, we use the following -so that an error message is given in case of multiple tags. - -@= -begin c:=get_byte; -case char_tag[c] of - no_tag: do_nothing; - lig_tag: err_print('This character already appeared in a GLUEKERN LABEL'); - @.This character already...@> - list_tag: err_print('Impossible: a list tag in a kanji format file?'); - ext_tag: err_print('Impossible: an extensible tag in a kanji format file?'); -end; -if nl>255 then - err_print('GLUEKERN with more than 255 commands cannot have further labels') -@.GLUEKERN with more than 255...@> -else begin char_tag[c]:=lig_tag; char_remainder[c]:=nl; - lk_step_ended:=false; - end; -end - -@ @= -begin lig_kern[nl].b0:=0; lig_kern[nl].b1:=get_byte;@/ -lig_kern[nl].b2:=kern_flag; kern[nk]:=get_fix; krn_ptr:=0; -while kern[krn_ptr]<>kern[nk] do incr(krn_ptr); -if krn_ptr=nk then - begin if nk<256 then incr(nk) - else begin err_print('At most 256 different kerns are allowed'); -@.At most 256 different kerns...@> - krn_ptr:=255; - end; - end; -lig_kern[nl].b3:=krn_ptr; -if nl=511 then - err_print('GLUEKERN table should never exceed 511 LIG/KRN commands') -@.GLUEKERN table should never...@> -else incr(nl); -lk_step_ended:=true; -end - -@ @= -begin lig_kern[nl].b0:=0; lig_kern[nl].b1:=get_byte; lig_kern[nl].b2:=0;@/ -glue[3*ng+0]:=get_fix; glue[3*ng+1]:=get_fix; glue[3*ng+2]:=get_fix; -krn_ptr:=0; -while (glue[3*krn_ptr+0]<>glue[3*ng+0])or - (glue[3*krn_ptr+1]<>glue[3*ng+1])or - (glue[3*krn_ptr+2]<>glue[3*ng+2]) do incr(krn_ptr); -if krn_ptr=ng then - begin if ng<256 then incr(ng) - else begin err_print('At most 256 different glues are allowed'); - krn_ptr:=255; - end; - end; -lig_kern[nl].b3:=krn_ptr; -if nl=511 then - err_print('GLUEKERN table should never exceed 511 GLUE/KRN commands') -@.GLUEKERN table should never...@> -else incr(nl); -lk_step_ended:=true; -end - -@ The |TYPE| command like |CHARACTER| command, but |TYPE| only use -|CHARWD|, |CHARHT|, |CHARDP| and |CHARIT| - -@= -begin c:=get_byte; {read the character type that is begin specified} -if verbose then @; -while level=1 do - begin while cur_char=" " do get_next; - if cur_char="(" then @ - else if cur_char=")" then skip_to_end_of_item - else junk_error; - end; -if char_wd[c]=0 then char_wd[c]:=sort_in(width,0); {legitimatize c} -finish_inner_property_list; -end; - -@ @= -begin get_name; -if cur_code=comment_code then skip_to_end_of_item -else if (cur_codechar_ic_code) then - flush_error('This property name doesn''t belong in a TYPE list') -else begin case cur_code of - char_wd_code: char_wd[c]:=sort_in(width,get_fix); - char_ht_code: char_ht[c]:=sort_in(height,get_fix); - char_dp_code: char_dp[c]:=sort_in(depth,get_fix); - char_ic_code: char_ic[c]:=sort_in(italic,get_fix); - end;@/ - finish_the_property; - end; -end - -@ Next codes used to get KANJI codes from \.{JPL} file. - -@= -begin type_num:=get_byte; -if type_num=0 then - skip_error('You cannot list the chars in type 0. It is the default type') -else begin repeat jis_code:=get_kanji; - if jis_code<0 then - err_print('Illegal characters. I was expecting a jis code or character') - else if jis_code=0 then { 0 signals |end_of_list| } - do_nothing - else if kanji_type[jis_to_index(jis_code)]>=0 then - err_print('jis code ', jis_code:1, ' is already in type ', - kanji_type[jis_to_index(jis_code)]) - else - kanji_type[jis_to_index(jis_code)]:=type_num; - until jis_code=0; - skip_to_paren; - end -end - -@ Next codes read and check direction. We can not decide |file_format| of -metric file whether for yoko-kumi or tate-kumi, until have scan |DIRECTION| -property (|dir_code| command). - -@= -begin while cur_char=" " do get_next; -if cur_char="T" then - begin if verbose then err_print('This is tatekumi format'); - file_format:=vfm_format; - end -else if cur_char="Y" then - begin if verbose then err_print('This is yokokumi format'); - file_format:=jfm_format; - end -else err_print('The dir value should be "TATE" or "YOKO"'); -skip_to_paren; -end - -@ Next codes used to write |kanji_type| to \.{JFM}. - -@= -begin out_size(0); out_size(0); { the default } -for kanji_type_index:=0 to max_kanji do - begin if kanji_type[kanji_type_index]>0 then - begin out_size(index_to_jis(kanji_type_index)); - out_size(kanji_type[kanji_type_index]); - if verbose then begin - print('char index = ', kanji_type_index); - print(' (jis '); - print_jis_hex(index_to_jis(kanji_type_index)); - print(') is type '); - print_octal(kanji_type[kanji_type_index]); - write_ln(''); - end; - end; - end; -end; - -@ We also need to define some routines which handling 2bytes characters. -These routine is called from only |read_chars_in_type| command. - -The kanji jis code is taken from the |char_ext| and |char_code| values -set by the user. The index into the |kanji_type| array is based on the -kuten codes, with all unused codes removed and beginning at 0, not 0101. -The |jis_to_index| is called from |chars_in_type| command. - -@= -function get_next_raw:byte; {get next rawdata in buffer} -begin while loc=limit do fill_buffer; -incr(loc); get_next_raw:=buffer[loc]; -if iskanji1(buffer[loc]) then cur_char:=" " -else cur_char:=xord[buffer[loc]]; -end; -@# -function todig(@!ch:char):byte; {convert character to number} -begin if (ch>="A")and(ch<="F") then todig:=ch-"A"+10 -else if (ch>="0")and(ch<="9") then todig:=ch-"0" -else skip_error('This expression is out of JIS-code encoding.'); -end; -@# -procedure print_jis_hex(jis_code:integer); {prints jiscode as four digits} -var dig:array[0..4] of byte; {holds jis hex codes} -i:byte; {index of array} -begin dig[0]:=Hi(jis_code) div 16; dig[1]:=Hi(jis_code) mod 16; -dig[2]:=Lo(jis_code) div 16; dig[3]:=Lo(jis_code) mod 16; -for i:=0 to 3 do - if dig[i]<10 then print(dig[i]) else - case dig[i] of - 10: print('A'); 11: print('B'); 12: print('C'); - 13: print('D'); 14: print('E'); 15: print('F'); - end; -end; -@# -function valid_jis_code(jis:integer):boolean; -var @!first_byte,@!second_byte:integer; { jis code bytes } -begin valid_jis_code:=true; -first_byte:=jis div @'400; second_byte:=jis mod @'400; -if (first_byte<@"21) - or((first_byte>@"28)and(first_byte<@"30)) - or(first_byte>@"74) then valid_jis_code:=false; -if (second_byte<@"21)or(second_byte>@"7E) then valid_jis_code:=false; -end; -@# -function jis_to_index(jis:integer):integer; -var @!first_byte,@!second_byte:integer; { jis code bytes } -begin -first_byte:=jis div @'400 -@"21; -second_byte:=jis mod @'400 -@"21; -if first_byte<=8 then - jis_to_index:=first_byte*94+second_byte -else { next |first_byte| start 16 } - jis_to_index:=(first_byte-7)*94+second_byte; -end; -@# -function index_to_jis(ix:integer):integer; -begin if ix<=8*94+94-1 then - index_to_jis:=(ix div 94 +@"21)*@'400+(ix mod 94 +@"21) -else - index_to_jis:=((ix+7*94) div 94 +@"21)*@'400+((ix+7*94) mod 94 +@"21) -end; -@# -function get_kanji:integer; {get kanji character code} -var @!ch:byte; -@!cx,@!jis_code:integer; {sixteen bits kanji character code} -begin repeat ch:=get_next_raw; {|ch| is rawdata in buffer} -until ch<>' '; {skip the blanks before the kanji code} -if ch=')' then - begin decr(loc); jis_code:=0; - end -else if (ch='J')or(ch='j') then - begin repeat ch:=get_next_raw; until ch<>' '; - cx:=todig(xord[ch])*@"1000; - incr(loc); ch:=xord[buffer[loc]]; cx:=cx+todig(ch)*@"100; - incr(loc); ch:=xord[buffer[loc]]; cx:=cx+todig(ch)*@"10; - incr(loc); ch:=xord[buffer[loc]]; cx:=cx+todig(ch); - jis_code:=cx; cur_char:=ch; - if not valid_jis_code(jis_code) then - err_print('jis code ', jis_code:1, ' is invalid'); - end -else if iskanji1(ch) then - begin incr(loc); cx:=Lo(ch)*@'400+Lo(buffer[loc]); cur_char:=" "; - if (proc_kanji_code=sjis_enc) then jis_code:=SJIStoJIS(cx) - else jis_code:=EUCtoJIS(cx); - if not valid_jis_code(jis_code) then - err_print('jis code ', jis_code:1, ' is invalid'); - end -else jis_code:=-1; -get_kanji:=jis_code; -end; - -@ input kanji code. - -@ = -@!proc_kanji_code:jis_enc..sjis_enc; - -@ @ = -ifdef('OUTJIS') proc_kanji_code:=jis_enc; endif('OUTJIS'); -ifdef('OUTEUC') proc_kanji_code:=euc_enc; endif('OUTEUC'); -ifdef('OUTSJIS') proc_kanji_code:=sjis_enc; endif('OUTSJIS'); - -@ @= - if strcmp(optarg, 'jis') = 0 then - proc_kanji_code:=jis_enc - else if strcmp(optarg, 'euc') = 0 then - proc_kanji_code:=euc_enc - else if strcmp(optarg, 'sjis') = 0 then - proc_kanji_code:=sjis_enc - else - print_ln('Bad kanjicode encoding', optarg, '.'); - -@* Index. -@z diff --git a/language/japanese/ptex/ptex-base.ch b/language/japanese/ptex/ptex-base.ch deleted file mode 100644 index 9ce788dacd..0000000000 --- a/language/japanese/ptex/ptex-base.ch +++ /dev/null @@ -1,7679 +0,0 @@ -% This is a change file for pTeX 3.1.9 -% By Sadayuki Tanaka (sada-t@ascii.co.jp), Ken Nakano (ken-na@ascii.co.jp) -% and ASCII Corporation. -% -% Thanks for : -% Ryoichi Kurasawa (us009185@interramp.com), -% Hisato Hamano, -% Hiroto Kagotani (kagotani@in.it.okayama-u.ac.jp), -% Takashi Kakiuchi (kakiuchi@sy6.isl.mei.co.jp), -% Yoichi Kawabata (kawabata@canon.co.jp), -% Makoto Kobayashi (makoto@lloem.fujidenki.co.jp), -% Yoshihiro Aoki (aoki@tokyo-shoseki-ptg.co.jp), -% Akira Kakuto (kakuto@fsci.fuk.kindai.ac.jp). -% Koich Inoue (inoue@ma.ns.musashi-tech.ac.jp). -% -% (??/??/87) RKS jTeX 2.9 -- j1.0 -% (??/??/89) RKS jTeX 2.93 -- j1.3 -% (12/ 9/89) H_2 pTeX 2.93 j1.3 p1.0.1 -% (12/??/89) RKS jTeX 2.95 -- j1.5 -% (12/??/89) RKS jTeX 2.99 -- j1.5 -% (02/02/90) RKS jTeX 2.99 -- j1.6 -% (04/16/90) H_2 pTeX 2.99 j1.6 p1.0.3 -% (09/14/90) H_2 pTeX 2.99 j1.6 p1.0.9 -- pre-release -% (10/29/90) H_2 Bug fix (p1.0.9a) -% (01/21/92) H_2 jTeX 2.99 - j1.7 -% (01/21/92) H_2 pTeX 2.99 j1.7 p1.0.9F -% (03/09/92) H_2 pTeX 2.99 j1.7 p1.0.9G jflag BUG -% (03/20/95) KN pTeX p2.0 (based on 3.1415) -% (09/08/95) KN pTeX p2.1 -% (09/20/95) KN pTeX p2.1.1 -% (11/21/95) KN pTeX p2.1.4 -% (08/27/97) KN pTeX p2.1.5 (based on 3.14159) -% (02/26/98) KN pTeX p2.1.6 -% (03/19/98) KN pTeX p2.1.7 -% (03/26/98) KN pTeX p2.1.8 (Web2c 7.2) -% (02/21/2000) KN pTeX p2.1.9 (Web2c 7.3.1) -% (11/13/2000) KN pTeX p2.1.10 -% (05/22/2001) KN pTeX p2.1.11 -% (03/10/2001) KN pTeX p3.0 (modified BSD licence) -% (09/02/2004) ST pTeX p3.1.4 -% (11/29/2004) KN pTeX p3.1.5 -% (12/13/2004) KN pTeX p3.1.8 -% (10/17/2005) ST pTeX p3.1.9 -% -@x [1.2] l.195 - pTeX: -@d TeX_banner_k=='This is TeXk, Version 3.141592' {printed when \TeX\ starts} -@d TeX_banner=='This is TeX, Version 3.141592' {printed when \TeX\ starts} -@y -@d TeX_banner_k=='This is pTeXk, Version 3.141592-p3.1.9' {printed when p\TeX\ starts} -@d TeX_banner=='This is pTeX, Version 3.141592-p3.1.9' {printed when p\TeX\ starts} -@z - -@x [2.??] l.586 - pTeX: -@!ASCII_code=0..255; {eight-bit numbers} -@y -@!ASCII_code=0..255; {eight-bit numbers} -@!KANJI_code=0..65535; {sixteen-bit numbers} -@z - -@x l.632 - pTeX -mubyte_read: array [ASCII_code] of pointer; - { non zero iff character begins the multi byte code } -mubyte_write: array [ASCII_code] of str_number; - { non zero iff character expands to multi bytes in log and write files } -mubyte_cswrite: array [0..127] of pointer; - { non null iff cs mod 128 expands to multi bytes in log and write files } -mubyte_skip: integer; { the number of bytes to skip in |buffer| } -mubyte_keep: integer; { the number of chars we need to keep unchanged } -mubyte_skeep: integer; { saved |mubyte_keep| } -mubyte_prefix: integer; { the type of mubyte prefix } -mubyte_tablein: boolean; { the input side of table will be updated } -mubyte_tableout: boolean; { the output side of table will be updated } -mubyte_relax: boolean; { the relax prefix is used } -mubyte_start: boolean; { we are making the token at the start of the line } -mubyte_sstart: boolean; { saved |mubyte_start| } -mubyte_token: pointer; { the token returned by |read_buffer| } -mubyte_stoken: pointer; { saved first token in mubyte primitive } -mubyte_sout: integer; { saved value of |mubyte_out| } -mubyte_slog: integer; { saved value of |mubyte_log| } -spec_sout: integer; { saved value of |spec_out| } -no_convert: boolean; { conversion supressed by noconvert primitive } -active_noconvert: boolean; { true if noconvert primitive is active } -write_noexpanding: boolean; { true only if we need not write expansion } -cs_converting: boolean; { true only if we need csname converting } -special_printing: boolean; { true only if we need converting in special } -message_printing: boolean; { true if message or errmessage prints to string } -@y -@z - -@x l.803 - pTeX -{Initialize enc\TeX\ data.} -for i:=0 to 255 do mubyte_read[i]:=null; -for i:=0 to 255 do mubyte_write[i]:=0; -for i:=0 to 128 do mubyte_cswrite[i]:=null; -mubyte_keep := 0; mubyte_start := false; -write_noexpanding := false; cs_converting := false; -special_printing := false; message_printing := false; -no_convert := false; active_noconvert := false; -@y -@z - - -@x [4.??] l.870 - pTeX: -@!eight_bits=0..255; {unsigned one-byte quantity} -@y -@!eight_bits=0..255; {unsigned one-byte quantity} -@!sixteen_bits=0..65535; {unsigned two-bytes quantity} -@z - -@x [3.??] l.891 - pTeX: -@ All of the file opening functions are defined in C. -@y -@ All of the file opening functions are defined in C. - -@ Kanji code handling. - -@d jis_enc=0 {denotes JIS X 2022 kanji encoding} -@d euc_enc=1 {denotes EUC kanji encoding} -@d sjis_enc=2 {denotes Shift JIS kanji encoding} - -@= -@!proc_kanji_code:jis_enc..sjis_enc; -@z - -@x [4.47] l.1325 - pTeX: -@!init function get_strings_started:boolean; {initializes the string pool, - but returns |false| if something goes wrong} -label done,exit; -var k,@!l:0..255; {small indices or counters} -@y -@!init function get_strings_started:boolean; {initializes the string pool, - but returns |false| if something goes wrong} -label done,exit; -var k,@!l:KANJI_code; {small indices or counters} -@z - -@x [4.49] l.1384 - pTeX: -@= - (k<" ")or(k>"~") -@y -@= - not (iskanji1(k) or iskanji2(k) or xprn[k]) -@z - -@x [5.54] l.1514 - pTeX: Global variables -@!trick_buf:array[0..ssup_error_line] of ASCII_code; {circular buffer for - pseudoprinting} -@y -@!trick_buf:array[0..ssup_error_line] of ASCII_code; {circular buffer for - pseudoprinting} -@!trick_buf2:array[0..ssup_error_line] of 0..2; {pTeX: buffer for KANJI} -@!kcode_pos: 0..2; {pTeX: denotes whether first byte or second byte of KANJI} -@z - -@x [5.55] l.1519 - pTeX: Initialize the kcode_pos -@ @= -selector:=term_only; tally:=0; term_offset:=0; file_offset:=0; -@y -@ @= -selector:=term_only; tally:=0; term_offset:=0; file_offset:=0; -kcode_pos:=0; -@z - -@x [5.57] l.1538 - pTeX: kcode_pos -procedure print_ln; {prints an end-of-line} -begin case selector of -term_and_log: begin wterm_cr; wlog_cr; - term_offset:=0; file_offset:=0; - end; -log_only: begin wlog_cr; file_offset:=0; - end; -term_only: begin wterm_cr; term_offset:=0; - end; -no_print,pseudo,new_string: do_nothing; -othercases write_ln(write_file[selector]) -endcases;@/ -@y -procedure print_ln; {prints an end-of-line} -begin case selector of -term_and_log: begin - if kcode_pos=1 then begin wterm(' '); wlog(' '); end; - wterm_cr; wlog_cr; term_offset:=0; file_offset:=0; - end; -log_only: begin if kcode_pos=1 then wlog(' '); - wlog_cr; file_offset:=0; - end; -term_only: begin if kcode_pos=1 then wterm(' '); - wterm_cr; term_offset:=0; - end; -no_print,pseudo,new_string: do_nothing; -othercases write_ln(write_file[selector]) -endcases;@/ -kcode_pos:=0; -@z - -@x [5.58] l.1557 - pTeX: kcode_pos, trick_buf2 -procedure print_char(@!s:ASCII_code); {prints a single character} -label exit; -begin if @ then - if selector then - if selector=max_print_line-1 then - begin wlog_cr; file_offset:=0; - end; - if (selector=term_and_log)or(selector=term_only) then - if term_offset>=max_print_line-1 then - begin wterm_cr; term_offset:=0; - end; - end -else kcode_pos:=0; -case selector of -term_and_log: begin wterm(xchr[s]); incr(term_offset); - if term_offset=max_print_line then - begin wterm_cr; term_offset:=0; - end; - wlog(xchr[s]); incr(file_offset); - if file_offset=max_print_line then - begin wlog_cr; file_offset:=0; - end; - end; -log_only: begin wlog(xchr[s]); incr(file_offset); - if file_offset=max_print_line then print_ln; - end; -term_only: begin wterm(xchr[s]); incr(term_offset); - if term_offset=max_print_line then print_ln; - end; -no_print: do_nothing; -pseudo: if tally=str_ptr then s:="???" {this can't happen} -@.???@> -else if s<256 then - if s<0 then s:="???" {can't happen} - else begin if (selector>pseudo) and (not special_printing) - and (not message_printing) then - begin print_char(s); return; {internal strings are not expanded} - end; - if (@) then - if selector0) and (not no_convert) and (mubyte_write[s]>0) then - s := mubyte_write[s] - else if xprn[s] or special_printing then - begin print_char(s); no_convert := false; return; end; - no_convert := false; - nl:=new_line_char; new_line_char:=-1; - {temporarily disable new-line character} - j:=str_start[s]; - while j=str_ptr then s:="???" {this can't happen} -@.???@> -else if s<256 then - if s<0 then s:="???" {can't happen} - else begin if selector>pseudo then - begin print_char(s); return; {internal strings are not expanded} - end; - if (@) then - if selector= -if src_specials_p or file_line_error_style_p or parse_first_line_p then - wterm(banner_k) -else - wterm(banner); -@y -@= -if src_specials_p or file_line_error_style_p or parse_first_line_p then - wterm(banner_k) -else - wterm(banner); -wterm(' ('); -case proc_kanji_code of - jis_enc: wterm('jis'); - euc_enc: wterm('euc'); - sjis_enc: wterm('sjis'); - othercases wterm('?'); -endcases; -wterm(')'); -@z - -@x l.1820 - pTeX -k:=first; while k < last do begin print_buffer(k) end; -@y -if last<>first then for k:=first to last-1 do print(buffer[k]); -@z - -@x [8.112] l.2588 - pTeX: -@d ho(#)==# {to take a sixteen-bit item from a halfword} -@y -@d ho(#)==# {to take a sixteen-bit item from a halfword} -@d KANJI(#)==# {pTeX: to output an KANJI code into a halfword} -@d tokanji(#)==# {pTeX: to take an KANJI code into a halfword} -@d tonum(#)==# {pTeX: to put an KANJI code into a halfword} -@z - -@x [10.135] l.3008 - pTeX: box_dir, space_ptr, xspace_ptr -@d hlist_node=0 {|type| of hlist nodes} -@d box_node_size=7 {number of words to allocate for a box node} -@d width_offset=1 {position of |width| field in a box node} -@d depth_offset=2 {position of |depth| field in a box node} -@d height_offset=3 {position of |height| field in a box node} -@d width(#) == mem[#+width_offset].sc {width of the box, in sp} -@d depth(#) == mem[#+depth_offset].sc {depth of the box, in sp} -@d height(#) == mem[#+height_offset].sc {height of the box, in sp} -@d shift_amount(#) == mem[#+4].sc {repositioning distance, in sp} -@d list_offset=5 {position of |list_ptr| field in a box node} -@d list_ptr(#) == link(#+list_offset) {beginning of the list inside the box} -@d glue_order(#) == subtype(#+list_offset) {applicable order of infinity} -@d glue_sign(#) == type(#+list_offset) {stretching or shrinking} -@d normal=0 {the most common case when several cases are named} -@d stretching = 1 {glue setting applies to the stretch components} -@d shrinking = 2 {glue setting applies to the shrink components} -@d glue_offset = 6 {position of |glue_set| in a box node} -@d glue_set(#) == mem[#+glue_offset].gr - {a word of type |glue_ratio| for glue setting} -@y -@d hlist_node=0 {|type| of hlist nodes} -@d box_node_size=8 {number of words to allocate for a box node} -@# -@d box_dir(#) == subtype(#) {direction mode of a box} -@d dir_default == qi(0) {direction of the box, default Left to Right} -@d dir_dtou == qi(1) {direction of the box, Bottom to Top} -@d dir_tate == qi(3) {direction of the box, Top to Bottom} -@d dir_yoko == qi(4) {direction of the box, equal default} -@d any_dir == dir_yoko,dir_tate,dir_dtou -@# -@d width_offset=1 {position of |width| field in a box node} -@d depth_offset=2 {position of |depth| field in a box node} -@d height_offset=3 {position of |height| field in a box node} -@d width(#) == mem[#+width_offset].sc {width of the box, in sp} -@d depth(#) == mem[#+depth_offset].sc {depth of the box, in sp} -@d height(#) == mem[#+height_offset].sc {height of the box, in sp} -@d shift_amount(#) == mem[#+4].sc {repositioning distance, in sp} -@d list_offset=5 {position of |list_ptr| field in a box node} -@d list_ptr(#) == link(#+list_offset) {beginning of the list inside the box} -@d glue_order(#) == subtype(#+list_offset) {applicable order of infinity} -@d glue_sign(#) == type(#+list_offset) {stretching or shrinking} -@d normal=0 {the most common case when several cases are named} -@d stretching = 1 {glue setting applies to the stretch components} -@d shrinking = 2 {glue setting applies to the shrink components} -@d glue_offset = 6 {position of |glue_set| in a box node} -@d glue_set(#) == mem[#+glue_offset].gr - {a word of type |glue_ratio| for glue setting} -@d space_offset = 7 {position of |glue_set| in a box node} -@d space_ptr(#) == link(#+space_offset) -@d xspace_ptr(#) == info(#+space_offset) -@z - -@x [10.136] l.3037 - pTeX: space_ptr, xspace_ptr -width(p):=0; depth(p):=0; height(p):=0; shift_amount(p):=0; list_ptr(p):=null; -glue_sign(p):=normal; glue_order(p):=normal; set_glue_ratio_zero(glue_set(p)); -@y -width(p):=0; depth(p):=0; height(p):=0; shift_amount(p):=0; list_ptr(p):=null; -glue_sign(p):=normal; glue_order(p):=normal; set_glue_ratio_zero(glue_set(p)); -space_ptr(p):=zero_glue; xspace_ptr(p):=zero_glue; -add_glue_ref(zero_glue); add_glue_ref(zero_glue); -@z - -@x [10.137] l.3045 - pTeX: direction change node -@d vlist_node=1 {|type| of vlist nodes} -@y -@d vlist_node=1 {|type| of vlist nodes} - -@ A |dir_node| stands for direction change. - -@d dir_node=2 {|type| of dir nodes} - -@p function new_dir_node(b:pointer; dir:eight_bits):pointer; -var p:pointer; {the new node} -begin if type(b)>vlist_node then confusion("new_dir_node:not box"); -p:=new_null_box; type(p):=dir_node; box_dir(p):=dir; -case box_dir(b) of - dir_yoko: @; - dir_tate: @; - dir_dtou: @; - othercases confusion("new_dir_node:illegal dir"); -endcases; -link(b):=null; list_ptr(p):=b; -new_dir_node:=p; -end; - -@ @= - case dir of - dir_tate: begin width(p):=height(b)+depth(b); - depth(p):=width(b)/2; height(p):=width(b)-depth(p); - end; - dir_dtou: begin width(p):=height(b)+depth(b); - depth(p):=0; height(p):=width(b); - end; - othercases confusion("new_dir_node:y->?"); - endcases - -@ @= - case dir of - dir_yoko: begin width(p):=height(b)+depth(b); - depth(p):=0; height(p):=width(b); - end; - dir_dtou: begin width(p):=width(b); - depth(p):=height(b); height(p):=depth(b); - end; - othercases confusion("new_dir_node:t->?"); - endcases - -@ @= - case dir of - dir_yoko: begin width(p):=height(b)+depth(b); - depth(p):=0; height(p):=width(b); - end; - dir_tate: begin width(p):=width(b); - depth(p):=height(b); height(p):=depth(b); - end; - othercases confusion("new_dir_node:d->?"); - endcases -@z - -@x [10.138] l.3054 - pTeX: renumber rule_node -@d rule_node=2 {|type| of rule nodes} -@y -@d rule_node=3 {|type| of rule nodes} -@z - -@x [10.140] l.3083 - pTeX: renumber ins_node, add ins_dir field -@d ins_node=3 {|type| of insertion nodes} -@d ins_node_size=5 {number of words to allocate for an insertion} -@d float_cost(#)==mem[#+1].int {the |floating_penalty| to be used} -@d ins_ptr(#)==info(#+4) {the vertical list to be inserted} -@d split_top_ptr(#)==link(#+4) {the |split_top_skip| to be used} -@y -@d ins_node=4 {|type| of insertion nodes} -@d ins_node_size=6 {number of words to allocate for an insertion} -@d float_cost(#)==mem[#+1].int {the |floating_penalty| to be used} -@d ins_ptr(#)==info(#+4) {the vertical list to be inserted} -@d split_top_ptr(#)==link(#+4) {the |split_top_skip| to be used} -@d ins_dir(#)==subtype(#+5) {direction of |ins_node|} -@z - -@x [10.141] l.3089 - pTeX: disp_node -@ A |mark_node| has a |mark_ptr| field that points to the reference count -@y -@ A |disp_node| has a |disp_dimen| field that points to the displacement -distance of the baselineshift between Latin characters and Kanji chatacters. - -@d disp_node=5 {|type| of a displace node} -@d disp_dimen(#)==mem[#+1].sc - -@ A |mark_node| has a |mark_ptr| field that points to the reference count -@z - -@x [10.140] l.3095 - pTeX: renumber nodes -@d mark_node=4 {|type| of a mark node} -@y -@d mark_node=6 {|type| of a mark node} -@z - -@x [10.141] l.3105 - pTeX: renumber nodes -@d adjust_node=5 {|type| of an adjust node} -@y -@d adjust_node=7 {|type| of an adjust node} -@z - -@x [10.142] l.3122 - pTeX: renumber nodes -@d ligature_node=6 {|type| of a ligature node} -@y -@d ligature_node=8 {|type| of a ligature node} -@z - -@x [10.145] l.3163 - pTeX: renumber nodes -@d disc_node=7 {|type| of a discretionary node} -@y -@d disc_node=9 {|type| of a discretionary node} -@z - -@x [10.146] l.3191 - pTeX: renumber nodes -@d whatsit_node=8 {|type| of special extension nodes} -@y -@d whatsit_node=10 {|type| of special extension nodes} -@z - -@x [10.147] l.3198 - pTeX: renumber nodes -@d math_node=9 {|type| of a math node} -@y -@d math_node=11 {|type| of a math node} -@z - -@x [10.150] l.3244 - pTeX: renumber nodes -@d glue_node=10 {|type| of node that points to a glue specification} -@y -@d glue_node=12 {|type| of node that points to a glue specification} -@z - -@x [10.155] l.3342 - pTeX: renumber nodes -@d kern_node=11 {|type| of a kern node} -@d explicit=1 {|subtype| of kern nodes from \.{\\kern} and \.{\\/}} -@d acc_kern=2 {|subtype| of kern nodes from accents} -@y -@d kern_node=13 {|type| of a kern node} -@d explicit=1 {|subtype| of kern nodes from \.{\\kern}} -@d acc_kern=2 {|subtype| of kern nodes from accents} -@d ita_kern=3 {|subtype| of kern nodes from \.{\\/}} -@z - -@x [10.157] l.3363 - pTeX: renumber nodes -@d penalty_node=12 {|type| of a penalty node} -@y -@d penalty_node=14 {|type| of a penalty node} -@d widow_pena=1 {|subtype| of penalty nodes from \.{\\jchrwidowpenalty}} -@d kinsoku_pena=2 {|subtype| of penalty nodes from kinsoku} -@z - -@x [10.159] l.3392 - pTeX: renumber nodes -@d unset_node=13 {|type| for an unset node} -@y -@d unset_node=15 {|type| for an unset node} -@z - -@x [10.160] l.3397 - pTeX: renumber nodes -@ In fact, there are still more types coming. When we get to math formula -processing we will see that a |style_node| has |type=14|; and a number -of larger type codes will also be defined, for use in math mode only. -@y -@ In fact, there are still more types coming. When we get to math formula -processing we will see that a |style_node| has |type=16|; and a number -of larger type codes will also be defined, for use in math mode only. -@z - -@x [12.174] l.3662 - pTeX: print KANJI - print_ASCII(qo(character(p))); -@y - if font_dir[font(p)]<>dir_default then - begin p:=link(p); print_kanji(info(p)); - end - else print_ASCII(qo(character(p))); -@z - -@x [12.175] l.3672 - pTeX: Print a short indication of dir_nodes. -hlist_node,vlist_node,ins_node,whatsit_node,mark_node,adjust_node, - unset_node: print("[]"); -@y -hlist_node,vlist_node,dir_node,ins_node,whatsit_node, - mark_node,adjust_node,unset_node: print("[]"); -@z - -@x [12.176] l.3698 - pTeX: print KANJI. - print_char(" "); print_ASCII(qo(character(p))); -@y - print_char(" "); - if font_dir[font(p)]<>dir_default then - begin p:=link(p); print_kanji(info(p)); - end - else print_ASCII(qo(character(p))); -@z - -@x [12.183] l.3815 - pTeX: display char_node and disp_node. -if is_char_node(p) then print_font_and_char(p) -else case type(p) of - hlist_node,vlist_node,unset_node: @; - rule_node: @; - ins_node: @; - whatsit_node: @; -@y -if is_char_node(p) then - begin print_font_and_char(p); - if font_dir[font(p)]<>dir_default then p:=link(p) - end -else case type(p) of - hlist_node,vlist_node,dir_node,unset_node: @; - rule_node: @; - ins_node: @; - whatsit_node: @; - disp_node: begin print_esc("displace "); print_scaled(disp_dimen(p)); - end; -@z - -@x [12.184] l.3833 - pTeX: display dir_node. -@ @= -begin if type(p)=hlist_node then print_esc("h") -else if type(p)=vlist_node then print_esc("v") -else print_esc("unset"); -@y -@ @= -begin case type(p) of - hlist_node: print_esc("h"); - vlist_node: print_esc("v"); - dir_node: print_esc("dir"); - othercases print_esc("unset") - endcases@/; -@z -@x [12.184] l.3842 - pTeX: display dir_node. - if shift_amount(p)<>0 then - begin print(", shifted "); print_scaled(shift_amount(p)); - end; -@y - if shift_amount(p)<>0 then - begin print(", shifted "); print_scaled(shift_amount(p)); - end; - if box_dir(p)<>dir_default then - begin print(", "); print_direction(box_dir(p)); - end; -@z - -@x [12.188] l.3896 - pTeX: Display insertion and ins_dir. -@ @= -begin print_esc("insert"); print_int(qo(subtype(p))); -print(", natural size "); print_scaled(height(p)); -@y -@ @= -begin print_esc("insert"); print_int(qo(subtype(p))); -print_dir(ins_dir(p)); -print(", natural size "); print_scaled(height(p)); -@z - -@x [12.194] l.3961 - pTeX: Display penalty usage -@ @= -begin print_esc("penalty "); print_int(penalty(p)); -end -@y -@ @= -begin print_esc("penalty "); print_int(penalty(p)); -if subtype(p)=widow_pena then print("(for \jchrwidowpenalty)") -else if subtype(p)=kinsoku_pena then print("(for kinsoku)"); -end -@z - -@x [13.202] l.4043 - pTeX: dir_node, disp_node - hlist_node,vlist_node,unset_node: begin flush_node_list(list_ptr(p)); - free_node(p,box_node_size); goto done; - end; -@y - hlist_node,vlist_node,dir_node,unset_node: - begin flush_node_list(list_ptr(p)); - fast_delete_glue_ref(space_ptr(p)); - fast_delete_glue_ref(xspace_ptr(p)); - free_node(p,box_node_size); goto done; - end; -@z - -@x [13.202] l.4056 - pTeX: - kern_node,math_node,penalty_node: do_nothing; -@y - kern_node,disp_node,math_node,penalty_node: do_nothing; -@z - -@x [14.206] l.4121 - pTeX: space_ptr, xspace_ptr, dir_node, disp_node -@ @= -case type(p) of -hlist_node,vlist_node,unset_node: begin r:=get_node(box_node_size); - mem[r+6]:=mem[p+6]; mem[r+5]:=mem[p+5]; {copy the last two words} - list_ptr(r):=copy_node_list(list_ptr(p)); {this affects |mem[r+5]|} - words:=5; - end; -rule_node: begin r:=get_node(rule_node_size); words:=rule_node_size; - end; -ins_node: begin r:=get_node(ins_node_size); mem[r+4]:=mem[p+4]; - add_glue_ref(split_top_ptr(p)); - ins_ptr(r):=copy_node_list(ins_ptr(p)); {this affects |mem[r+4]|} - words:=ins_node_size-1; - end; -@y -@ @= -case type(p) of -hlist_node,vlist_node,dir_node,unset_node: - begin r:=get_node(box_node_size); - mem[r+7]:=mem[p+7]; - mem[r+6]:=mem[p+6]; mem[r+5]:=mem[p+5]; {copy the last three words} - add_glue_ref(space_ptr(r)); add_glue_ref(xspace_ptr(r)); - list_ptr(r):=copy_node_list(list_ptr(p)); {this affects |mem[r+5]|} - words:=5; - end; -rule_node: begin r:=get_node(rule_node_size); words:=rule_node_size; - end; -ins_node: begin r:=get_node(ins_node_size); - mem[r+5]:=mem[p+5]; mem[r+4]:=mem[p+4]; - add_glue_ref(split_top_ptr(p)); - ins_ptr(r):=copy_node_list(ins_ptr(p)); {this affects |mem[r+4]|} - words:=ins_node_size-2; - end; -@z - -@x [14.206] l.4140 - pTeX: disp_node -kern_node,math_node,penalty_node: begin r:=get_node(small_node_size); - words:=small_node_size; - end; -@y -kern_node,disp_node,math_node,penalty_node: - begin r:=get_node(small_node_size); words:=small_node_size; - end; -@z - -@x [15.207] l.4201 - pTeX: Add kanji, kana, other_kchar category codes. -@d max_char_code=15 {largest catcode for individual characters} -@y -@d kanji=16 {kanji} -@d kana=17 {hiragana, katakana, alphabet} -@d other_kchar=18 {kanji codes} -@d max_char_code=18 {largest catcode for individual characters} -@z - -@x [15.208] l.4207 - pTeX: Add inhibit_glue, chg_dir. -@d char_num=16 {character specified numerically ( \.{\\char} )} -@d math_char_num=17 {explicit math code ( \.{\\mathchar} )} -@d mark=18 {mark definition ( \.{\\mark} )} -@d xray=19 {peek inside of \TeX\ ( \.{\\show}, \.{\\showbox}, etc.~)} -@d make_box=20 {make a box ( \.{\\box}, \.{\\copy}, \.{\\hbox}, etc.~)} -@d hmove=21 {horizontal motion ( \.{\\moveleft}, \.{\\moveright} )} -@d vmove=22 {vertical motion ( \.{\\raise}, \.{\\lower} )} -@d un_hbox=23 {unglue a box ( \.{\\unhbox}, \.{\\unhcopy} )} -@d un_vbox=24 {unglue a box ( \.{\\unvbox}, \.{\\unvcopy} )} -@d remove_item=25 {nullify last item ( \.{\\unpenalty}, - \.{\\unkern}, \.{\\unskip} )} -@d hskip=26 {horizontal glue ( \.{\\hskip}, \.{\\hfil}, etc.~)} -@d vskip=27 {vertical glue ( \.{\\vskip}, \.{\\vfil}, etc.~)} -@d mskip=28 {math glue ( \.{\\mskip} )} -@d kern=29 {fixed space ( \.{\\kern})} -@d mkern=30 {math kern ( \.{\\mkern} )} -@d leader_ship=31 {use a box ( \.{\\shipout}, \.{\\leaders}, etc.~)} -@d halign=32 {horizontal table alignment ( \.{\\halign} )} -@d valign=33 {vertical table alignment ( \.{\\valign} )} -@d no_align=34 {temporary escape from alignment ( \.{\\noalign} )} -@d vrule=35 {vertical rule ( \.{\\vrule} )} -@d hrule=36 {horizontal rule ( \.{\\hrule} )} -@d insert=37 {vlist inserted in box ( \.{\\insert} )} -@d vadjust=38 {vlist inserted in enclosing paragraph ( \.{\\vadjust} )} -@d ignore_spaces=39 {gobble |spacer| tokens ( \.{\\ignorespaces} )} -@d after_assignment=40 {save till assignment is done ( \.{\\afterassignment} )} -@d after_group=41 {save till group is done ( \.{\\aftergroup} )} -@d break_penalty=42 {additional badness ( \.{\\penalty} )} -@d start_par=43 {begin paragraph ( \.{\\indent}, \.{\\noindent} )} -@d ital_corr=44 {italic correction ( \.{\\/} )} -@d accent=45 {attach accent in text ( \.{\\accent} )} -@d math_accent=46 {attach accent in math ( \.{\\mathaccent} )} -@d discretionary=47 {discretionary texts ( \.{\\-}, \.{\\discretionary} )} -@d eq_no=48 {equation number ( \.{\\eqno}, \.{\\leqno} )} -@d left_right=49 {variable delimiter ( \.{\\left}, \.{\\right} )} -@d math_comp=50 {component of formula ( \.{\\mathbin}, etc.~)} -@d limit_switch=51 {diddle limit conventions ( \.{\\displaylimits}, etc.~)} -@d above=52 {generalized fraction ( \.{\\above}, \.{\\atop}, etc.~)} -@d math_style=53 {style specification ( \.{\\displaystyle}, etc.~)} -@d math_choice=54 {choice specification ( \.{\\mathchoice} )} -@d non_script=55 {conditional math glue ( \.{\\nonscript} )} -@d vcenter=56 {vertically center a vbox ( \.{\\vcenter} )} -@d case_shift=57 {force specific case ( \.{\\lowercase}, \.{\\uppercase}~)} -@d message=58 {send to user ( \.{\\message}, \.{\\errmessage} )} -@d extension=59 {extensions to \TeX\ ( \.{\\write}, \.{\\special}, etc.~)} -@d in_stream=60 {files for reading ( \.{\\openin}, \.{\\closein} )} -@d begin_group=61 {begin local grouping ( \.{\\begingroup} )} -@d end_group=62 {end local grouping ( \.{\\endgroup} )} -@d omit=63 {omit alignment template ( \.{\\omit} )} -@d ex_space=64 {explicit space ( \.{\\\ } )} -@d no_boundary=65 {suppress boundary ligatures ( \.{\\noboundary} )} -@d radical=66 {square root and similar signs ( \.{\\radical} )} -@d end_cs_name=67 {end control sequence ( \.{\\endcsname} )} -@d min_internal=68 {the smallest code that can follow \.{\\the}} -@d char_given=68 {character code defined by \.{\\chardef}} -@d math_given=69 {math code defined by \.{\\mathchardef}} -@d last_item=70 {most recent item ( \.{\\lastpenalty}, - \.{\\lastkern}, \.{\\lastskip} )} -@d max_non_prefixed_command=70 {largest command code that can't be \.{\\global}} -@y -@d char_num=max_char_code+1 {character specified numerically ( \.{\\char} )} -@d math_char_num=char_num+1 {explicit math code ( \.{\\mathchar} )} -@d mark=math_char_num+1 {mark definition ( \.{\\mark} )} -@d xray=mark+1 {peek inside of \TeX\ ( \.{\\show}, \.{\\showbox}, etc.~)} -@d make_box=xray+1 {make a box ( \.{\\box}, \.{\\copy}, \.{\\hbox}, etc.~)} -@d hmove=make_box+1 {horizontal motion ( \.{\\moveleft}, \.{\\moveright} )} -@d vmove=hmove+1 {vertical motion ( \.{\\raise}, \.{\\lower} )} -@d un_hbox=vmove+1 {unglue a box ( \.{\\unhbox}, \.{\\unhcopy} )} -@d un_vbox=un_hbox+1 {unglue a box ( \.{\\unvbox}, \.{\\unvcopy} )} -@d remove_item=un_vbox+1 {nullify last item ( \.{\\unpenalty}, - \.{\\unkern}, \.{\\unskip} )} -@d hskip=remove_item+1 {horizontal glue ( \.{\\hskip}, \.{\\hfil}, etc.~)} -@d vskip=hskip+1 {vertical glue ( \.{\\vskip}, \.{\\vfil}, etc.~)} -@d mskip=vskip+1 {math glue ( \.{\\mskip} )} -@d kern=mskip+1 {fixed space ( \.{\\kern})} -@d mkern=kern+1 {math kern ( \.{\\mkern} )} -@d leader_ship=mkern+1 {use a box ( \.{\\shipout}, \.{\\leaders}, etc.~)} -@d halign=leader_ship+1 {horizontal table alignment ( \.{\\halign} )} -@d valign=halign+1 {vertical table alignment ( \.{\\valign} )} -@d no_align=valign+1 {temporary escape from alignment ( \.{\\noalign} )} -@d vrule=no_align+1 {vertical rule ( \.{\\vrule} )} -@d hrule=vrule+1 {horizontal rule ( \.{\\hrule} )} -@d insert=hrule+1 {vlist inserted in box ( \.{\\insert} )} -@d vadjust=insert+1 {vlist inserted in enclosing paragraph ( \.{\\vadjust} )} -@d ignore_spaces=vadjust+1 {gobble |spacer| tokens ( \.{\\ignorespaces} )} -@d after_assignment=ignore_spaces+1 {save till assignment is done ( \.{\\afterassignment} )} -@d after_group=after_assignment+1 {save till group is done ( \.{\\aftergroup} )} -@d break_penalty=after_group+1 {additional badness ( \.{\\penalty} )} -@d start_par=break_penalty+1 {begin paragraph ( \.{\\indent}, \.{\\noindent} )} -@d ital_corr=start_par+1 {italic correction ( \.{\\/} )} -@d accent=ital_corr+1 {attach accent in text ( \.{\\accent} )} -@d math_accent=accent+1 {attach accent in math ( \.{\\mathaccent} )} -@d discretionary=math_accent+1 {discretionary texts ( \.{\\-}, \.{\\discretionary} )} -@d eq_no=discretionary+1 {equation number ( \.{\\eqno}, \.{\\leqno} )} -@d left_right=eq_no+1 {variable delimiter ( \.{\\left}, \.{\\right} )} -@d math_comp=left_right+1 {component of formula ( \.{\\mathbin}, etc.~)} -@d limit_switch=math_comp+1 {diddle limit conventions ( \.{\\displaylimits}, etc.~)} -@d above=limit_switch+1 {generalized fraction ( \.{\\above}, \.{\\atop}, etc.~)} -@d math_style=above+1 {style specification ( \.{\\displaystyle}, etc.~)} -@d math_choice=math_style+1 {choice specification ( \.{\\mathchoice} )} -@d non_script=math_choice+1 {conditional math glue ( \.{\\nonscript} )} -@d vcenter=non_script+1 {vertically center a vbox ( \.{\\vcenter} )} -@d case_shift=vcenter+1 {force specific case ( \.{\\lowercase}, \.{\\uppercase}~)} -@d message=case_shift+1 {send to user ( \.{\\message}, \.{\\errmessage} )} -@d extension=message+1 {extensions to \TeX\ ( \.{\\write}, \.{\\special}, etc.~)} -@d in_stream=extension+1 {files for reading ( \.{\\openin}, \.{\\closein} )} -@d begin_group=in_stream+1 {begin local grouping ( \.{\\begingroup} )} -@d end_group=begin_group+1 {end local grouping ( \.{\\endgroup} )} -@d omit=end_group+1 {omit alignment template ( \.{\\omit} )} -@d ex_space=omit+1 {explicit space ( \.{\\\ } )} -@d no_boundary=ex_space+1 {suppress boundary ligatures ( \.{\\noboundary} )} -@d radical=no_boundary+1 {square root and similar signs ( \.{\\radical} )} -@d end_cs_name=radical+1 {end control sequence ( \.{\\endcsname} )} -@d min_internal=end_cs_name+1 {the smallest code that can follow \.{\\the}} -@d char_given=min_internal {character code defined by \.{\\chardef}} -@d math_given=char_given+1 {math code defined by \.{\\mathchardef}} -@d last_item=math_given+1 {most recent item ( \.{\\lastpenalty}, - \.{\\lastkern}, \.{\\lastskip} )} -@d inhibit_glue=last_item+1 {inhibit adjust glue ( \.{\\inhibitglue} )} -@d chg_dir=inhibit_glue+1 {change dir mode by \.{\\tate}, \.{\\yoko}} -@d max_non_prefixed_command=chg_dir {largest command code that can't be \.{\\global}} -@z - -@x [15.209] l.4272 - pTeX: def_jfont, def_tfont, set_auto_spacing -@d toks_register=71 {token list register ( \.{\\toks} )} -@d assign_toks=72 {special token list ( \.{\\output}, \.{\\everypar}, etc.~)} -@d assign_int=73 {user-defined integer ( \.{\\tolerance}, \.{\\day}, etc.~)} -@d assign_dimen=74 {user-defined length ( \.{\\hsize}, etc.~)} -@d assign_glue=75 {user-defined glue ( \.{\\baselineskip}, etc.~)} -@d assign_mu_glue=76 {user-defined muglue ( \.{\\thinmuskip}, etc.~)} -@d assign_font_dimen=77 {user-defined font dimension ( \.{\\fontdimen} )} -@d assign_font_int=78 {user-defined font integer ( \.{\\hyphenchar}, - \.{\\skewchar} )} -@d set_aux=79 {specify state info ( \.{\\spacefactor}, \.{\\prevdepth} )} -@d set_prev_graf=80 {specify state info ( \.{\\prevgraf} )} -@d set_page_dimen=81 {specify state info ( \.{\\pagegoal}, etc.~)} -@d set_page_int=82 {specify state info ( \.{\\deadcycles}, - \.{\\insertpenalties} )} -@d set_box_dimen=83 {change dimension of box ( \.{\\wd}, \.{\\ht}, \.{\\dp} )} -@d set_shape=84 {specify fancy paragraph shape ( \.{\\parshape} )} -@d def_code=85 {define a character code ( \.{\\catcode}, etc.~)} -@d def_family=86 {declare math fonts ( \.{\\textfont}, etc.~)} -@d set_font=87 {set current font ( font identifiers )} -@d def_font=88 {define a font file ( \.{\\font} )} -@d register=89 {internal register ( \.{\\count}, \.{\\dimen}, etc.~)} -@d max_internal=89 {the largest code that can follow \.{\\the}} -@d advance=90 {advance a register or parameter ( \.{\\advance} )} -@d multiply=91 {multiply a register or parameter ( \.{\\multiply} )} -@d divide=92 {divide a register or parameter ( \.{\\divide} )} -@d prefix=93 {qualify a definition ( \.{\\global}, \.{\\long}, \.{\\outer} )} -@d let=94 {assign a command code ( \.{\\let}, \.{\\futurelet} )} -@d shorthand_def=95 {code definition ( \.{\\chardef}, \.{\\countdef}, etc.~)} - {or \.{\\charsubdef}} -@d read_to_cs=96 {read into a control sequence ( \.{\\read} )} -@d def=97 {macro definition ( \.{\\def}, \.{\\gdef}, \.{\\xdef}, \.{\\edef} )} -@d set_box=98 {set a box ( \.{\\setbox} )} -@d hyph_data=99 {hyphenation data ( \.{\\hyphenation}, \.{\\patterns} )} -@d set_interaction=100 {define level of interaction ( \.{\\batchmode}, etc.~)} -@d max_command=100 {the largest command code seen at |big_switch|} -@y -@d toks_register=max_non_prefixed_command+1 {token list register ( \.{\\toks} )} -@d assign_toks=toks_register+1 - {special token list ( \.{\\output}, \.{\\everypar}, etc.~)} -@d assign_int=assign_toks+1 - {user-defined integer ( \.{\\tolerance}, \.{\\day}, etc.~)} -@d assign_dimen=assign_int+1 {user-defined length ( \.{\\hsize}, etc.~)} -@d assign_glue=assign_dimen+1 {user-defined glue ( \.{\\baselineskip}, etc.~)} -@d assign_mu_glue=assign_glue+1 {user-defined muglue ( \.{\\thinmuskip}, etc.~)} -@d assign_font_dimen=assign_mu_glue+1 - {user-defined font dimension ( \.{\\fontdimen} )} -@d assign_font_int=assign_font_dimen+1 - {user-defined font integer ( \.{\\hyphenchar}, \.{\\skewchar} )} -@d assign_kinsoku=assign_font_int+1 - {user-defined kinsoku character ( \.{\\prebreakpenalty}, - \.{\\postbreakpenalty} )} -@d assign_inhibit_xsp_code=assign_kinsoku+1 - {user-defined inhibit xsp character ( \.{\\inhibitxspcode} )} -@d set_kansuji_char=assign_inhibit_xsp_code+1 - {user-defined kansuji character ( \.{\\kansujichar} )} -@d set_aux=set_kansuji_char+1 - {specify state info ( \.{\\spacefactor}, \.{\\prevdepth} )} -@d set_prev_graf=set_aux+1 {specify state info ( \.{\\prevgraf} )} -@d set_page_dimen=set_prev_graf+1 {specify state info ( \.{\\pagegoal}, etc.~)} -@d set_page_int=set_page_dimen+1 {specify state info ( \.{\\deadcycles}, - \.{\\insertpenalties} )} -@d set_box_dimen=set_page_int+1 {change dimension of box ( \.{\\wd}, \.{\\ht}, \.{\\dp} )} -@d set_shape=set_box_dimen+1 {specify fancy paragraph shape ( \.{\\parshape} )} -@d def_code=set_shape+1 {define a character code ( \.{\\catcode}, etc.~)} -@d def_family=def_code+1 {declare math fonts ( \.{\\textfont}, etc.~)} -@d set_font=def_family+1 {set current font ( font identifiers )} -@d def_font=set_font+1 {define a font file ( \.{\\font} )} -@d def_jfont=def_font+1 {define a font file ( \.{\\jfont} )} -@d def_tfont=def_jfont+1 {define a font file ( \.{\\tfont} )} -@d register=def_tfont+1 {internal register ( \.{\\count}, \.{\\dimen}, etc.~)} -@d max_internal=register {the largest code that can follow \.{\\the}} -@d advance=max_internal+1 {advance a register or parameter ( \.{\\advance} )} -@d multiply=advance+1 {multiply a register or parameter ( \.{\\multiply} )} -@d divide=multiply+1 {divide a register or parameter ( \.{\\divide} )} -@d prefix=divide+1 {qualify a definition ( \.{\\global}, \.{\\long}, \.{\\outer} )} -@d let=prefix+1 {assign a command code ( \.{\\let}, \.{\\futurelet} )} -@d shorthand_def=let+1 {code definition ( \.{\\chardef}, \.{\\countdef}, etc.~)} -@d read_to_cs=shorthand_def+1 {read into a control sequence ( \.{\\read} )} -@d def=read_to_cs+1 {macro definition ( \.{\\def}, \.{\\gdef}, \.{\\xdef}, \.{\\edef} )} -@d set_box=def+1 {set a box ( \.{\\setbox} )} -@d hyph_data=set_box+1 {hyphenation data ( \.{\\hyphenation}, \.{\\patterns} )} -@d set_interaction=hyph_data+1 {define level of interaction ( \.{\\batchmode}, etc.~)} -@d set_auto_spacing=set_interaction+1 {set auto spaceing mode - ( \.{\\autospacing}, \.{\\noautospacing}, ( \.{\\autospacing}, \.{\\noautospacing} )} -@d max_command=set_auto_spacing {the largest command code seen at |big_switch|} -@z - -@x [16.212] l.4437 - pTeX: last_jchr, direction, adjust direction -@= -@!list_state_record=record@!mode_field:-mmode..mmode;@+ - @!head_field,@!tail_field: pointer; -@y -@= -@!list_state_record=record@!mode_field:-mmode..mmode;@+ - @!dir_field,@!adj_dir_field: -dir_dtou..dir_dtou; - @!pdisp_field: scaled; - @!head_field,@!tail_field,@!pnode_field,@!last_jchr_field: pointer; -@z - -@x [16.213] l.4445 - pTeX: last_jchr, direction, adjust_dir, prev_{node,disp} -@d head==cur_list.head_field {header node of current list} -@d tail==cur_list.tail_field {final node on current list} -@y -@d direction==cur_list.dir_field {current direction} -@d adjust_dir==cur_list.adj_dir_field {current adjust direction} -@d head==cur_list.head_field {header node of current list} -@d tail==cur_list.tail_field {final node on current list} -@d prev_node==cur_list.pnode_field {previous to last |disp_node|} -@d prev_disp==cur_list.pdisp_field {displacemant at |prev_node|} -@d last_jchr==cur_list.last_jchr_field {final jchar node on current list} -@z - -@x [16.214] l.4464 - pTeX: prev_append: disp_node -@d tail_append(#)==begin link(tail):=#; tail:=link(tail); - end -@y -@d tail_append(#)==begin link(tail):=#; tail:=link(tail); - end -@d prev_append(#)==begin link(prev_node):=#; - link(link(prev_node)):=tail; prev_node:=link(prev_node); - end -@z - -@x [16.215] l.4477 - pTeX: last_jchar, direction, adjust_dir, prev_node -mode:=vmode; head:=contrib_head; tail:=contrib_head; -@y -mode:=vmode; head:=contrib_head; tail:=contrib_head; prev_node:=tail; -direction:=dir_yoko; adjust_dir:=direction; prev_disp:=0; last_jchr:=null; -@z - -@x [16.216] l.4496 - pTeX: last_jchr, displacement. -incr(nest_ptr); head:=get_avail; tail:=head; prev_graf:=0; mode_line:=line; -@y -incr(nest_ptr); head:=new_null_box; tail:=head; prev_node:=tail; -prev_graf:=0; prev_disp:=0; last_jchr:=null; mode_line:=line; -@z - -@x [16.217] l.4504 - pTeX: pop_nest last_jchr -@p procedure pop_nest; {leave a semantic level, re-enter the old} -begin free_avail(head); decr(nest_ptr); cur_list:=nest[nest_ptr]; -end; -@y -@p procedure pop_nest; {leave a semantic level, re-enter the old} -begin -fast_delete_glue_ref(space_ptr(head)); fast_delete_glue_ref(xspace_ptr(head)); -free_node(head,box_node_size); decr(nest_ptr); cur_list:=nest[nest_ptr]; -end; -@z - -@x [16.218] l.4521 - pTeX: show_activities : direction - print_nl("### "); print_mode(m); -@y - print_nl("### "); print_direction(nest[p].dir_field); - print(", "); print_mode(m); -@z - -@x [17.224] l.4711 - pTeX: kanji_skip_code xkanji_skip_code, jfm_skip -@d thin_mu_skip_code=15 {thin space in math formula} -@d med_mu_skip_code=16 {medium space in math formula} -@d thick_mu_skip_code=17 {thick space in math formula} -@d glue_pars=18 {total number of glue parameters} -@y -@d kanji_skip_code=15 {between kanji-kanji space} -@d xkanji_skip_code=16 {between latin-kanji or kanji-latin space} -@d thin_mu_skip_code=17 {thin space in math formula} -@d med_mu_skip_code=18 {medium space in math formula} -@d thick_mu_skip_code=19 {thick space in math formula} -@d jfm_skip=20 {space refer from JFM} -@d glue_pars=21 {total number of glue parameters} -@z - -@x [17.224] l.4739 - kanji_skip, xkanji_skip -@d thick_mu_skip==glue_par(thick_mu_skip_code) -@y -@d thick_mu_skip==glue_par(thick_mu_skip_code) -@d kanji_skip==glue_par(kanji_skip_code) -@d xkanji_skip==glue_par(xkanji_skip_code) -@z - -@x [17.225] l.4767 - pTeX: kanji_skip_code xkanji_skip_code -thick_mu_skip_code: print_esc("thickmuskip"); -othercases print("[unknown glue parameter!]") -@y -thick_mu_skip_code: print_esc("thickmuskip"); -kanji_skip_code: print_esc("kanjiskip"); -xkanji_skip_code: print_esc("xkanjiskip"); -jfm_skip: print("refer from jfm"); -othercases print("[unknown glue parameter!]") -@z - -@x [17.226] l.4813 - pTeX: kanji_skip_code xkanji_skip_code -primitive("thickmuskip",assign_mu_glue,glue_base+thick_mu_skip_code);@/ -@!@:thick_mu_skip_}{\.{\\thickmuskip} primitive@> -@y -primitive("thickmuskip",assign_mu_glue,glue_base+thick_mu_skip_code);@/ -@!@:thick_mu_skip_}{\.{\\thickmuskip} primitive@> -primitive("kanjiskip",assign_glue,glue_base+kanji_skip_code);@/ -@!@:kanji_skip_}{\.{\\kanjiskip} primitive@> -primitive("xkanjiskip",assign_glue,glue_base+xkanji_skip_code);@/ -@!@:xkanji_skip_}{\.{\\xkanjiskip} primitive@> -@z - -@x [17.230] l.4867 - pTeX: cat_code_size, cur_jfont_loc, auto_spacing, auto_xspacing, inhibit_xsp_code, cur_tfont_loc -@d xord_code_base=cur_font_loc+1 -@d xchr_code_base=xord_code_base+1 -@d xprn_code_base=xchr_code_base+1 -@d math_font_base=xprn_code_base+1 -@d cat_code_base=math_font_base+48 - {table of 256 command codes (the ``catcodes'')} -@d lc_code_base=cat_code_base+256 {table of 256 lowercase mappings} -@y -@d math_font_base=cur_font_loc+1 {table of 48 math font numbers} -@d cur_jfont_loc=math_font_base+48 -@d cur_tfont_loc=cur_jfont_loc+1 -@d auto_spacing_code=cur_tfont_loc+1 -@d auto_xspacing_code=auto_spacing_code+1 -@d cat_code_base=auto_xspacing_code+1 - {table of 256 command codes (the ``catcodes'')} -@d kcat_code_base=cat_code_base+256 - {table of 256 command codes for the wchar's catcodes } -@d auto_xsp_code_base=kcat_code_base+256 {table of 256 auto spacer flag} -@d inhibit_xsp_code_base=auto_xsp_code_base+256 -@d kinsoku_base=inhibit_xsp_code_base+256 {table of 256 kinsoku mappings} -@d kansuji_base=kinsoku_base+256 {table of 10 kansuji mappings} -@d lc_code_base=kansuji_base+10 {table of 256 lowercase mappings} -@z - -@x [17.230] l.4900 - pTeX: -@d char_sub_code(#)==equiv(char_sub_code_base+#) - {Note: |char_sub_code(c)| is the true substitution info plus |min_halfword|} -@y -@d char_sub_code(#)==equiv(char_sub_code_base+#) - {Note: |char_sub_code(c)| is the true substitution info plus |min_halfword|} -@# -@d cur_jfont==equiv(cur_jfont_loc) {pTeX: } -@d cur_tfont==equiv(cur_tfont_loc) -@d auto_spacing==equiv(auto_spacing_code) -@d auto_xspacing==equiv(auto_xspacing_code) -@d kcat_code(#)==equiv(kcat_code_base+#) -@d auto_xsp_code(#)==equiv(auto_xsp_code_base+#) -@d inhibit_xsp_type(#)==eq_type(inhibit_xsp_code_base+#) -@d inhibit_xsp_code(#)==equiv(inhibit_xsp_code_base+#) -@d kinsoku_type(#)==eq_type(kinsoku_base+#) -@d kinsoku_code(#)==equiv(kinsoku_base+#) -@d kansuji_char(#)==equiv(kansuji_base+#) -@z - -@x [17.232] l.4959 - pTeX: initialize cat_code, cur_jfont, cur_tfont -cur_font:=null_font; eq_type(cur_font_loc):=data; -eq_level(cur_font_loc):=level_one;@/ -@y -cur_font:=null_font; eq_type(cur_font_loc):=data; -eq_level(cur_font_loc):=level_one;@/ -cur_jfont:=null_font; eq_type(cur_jfont_loc):=data; -eq_level(cur_jfont_loc):=level_one;@/ -cur_tfont:=null_font; eq_type(cur_tfont_loc):=data; -eq_level(cur_tfont_loc):=level_one;@/ -@z - -@x [17.232] l.4965 - pTeX: initialize cat_code, cur_jfont, cur_tfont -for k:=0 to 255 do - begin cat_code(k):=other_char; math_code(k):=hi(k); sf_code(k):=1000; - end; -@y -eqtb[auto_spacing_code]:=eqtb[cat_code_base]; -eqtb[auto_xspacing_code]:=eqtb[cat_code_base]; -for k:=0 to 255 do - begin cat_code(k):=other_char; kcat_code(k):=other_kchar; - math_code(k):=hi(k); sf_code(k):=1000; - auto_xsp_code(k):=0; inhibit_xsp_code(k):=0; inhibit_xsp_type(k):=0; - kinsoku_code(k):=0; kinsoku_type(k):=0; - end; -@z -@x [17.232] l.4971 - pTeX: initialize cat_code, cur_jfont, cur_tfont -for k:="0" to "9" do math_code(k):=hi(k+var_code); -for k:="A" to "Z" do - begin cat_code(k):=letter; cat_code(k+"a"-"A"):=letter;@/ - math_code(k):=hi(k+var_code+@"100); - math_code(k+"a"-"A"):=hi(k+"a"-"A"+var_code+@"100);@/ - lc_code(k):=k+"a"-"A"; lc_code(k+"a"-"A"):=k+"a"-"A";@/ - uc_code(k):=k; uc_code(k+"a"-"A"):=k;@/ - sf_code(k):=999; - end; -@y -for k:="0" to "9" do - begin math_code(k):=hi(k+var_code); - auto_xsp_code(k):=3; - end; -kansuji_char(0):=@"213B; -kansuji_char(1):=@"306C; -kansuji_char(2):=@"4673; -kansuji_char(3):=@"3B30; -kansuji_char(4):=@"3B4D; -kansuji_char(5):=@"385E; -kansuji_char(6):=@"4F3B; -kansuji_char(7):=@"3C37; -kansuji_char(8):=@"482C; -kansuji_char(9):=@"3665; -for k:="A" to "Z" do - begin cat_code(k):=letter; cat_code(k+"a"-"A"):=letter;@/ - math_code(k):=hi(k+var_code+@"100); - math_code(k+"a"-"A"):=hi(k+"a"-"A"+var_code+@"100);@/ - lc_code(k):=k+"a"-"A"; lc_code(k+"a"-"A"):=k+"a"-"A";@/ - uc_code(k):=k; uc_code(k+"a"-"A"):=k;@/ - auto_xsp_code(k):=3; auto_xsp_code(k+"a"-"A"):=3;@/ - sf_code(k):=999; - end; -if (proc_kanji_code=sjis_enc) then begin - @t\hskip10pt@>kcat_code(129):=other_kchar; - @t\hskip10pt@>kcat_code(130):=kana; - @t\hskip10pt@>kcat_code(131):=kana; - @t\hskip10pt@>kcat_code(132):=other_kchar; - @+@t\1@>for k:=136 to 159 do kcat_code(k):=kanji; - @+@t\1@>for k:=224 to 234 do kcat_code(k):=kanji; -end else begin - @t\hskip10pt@>kcat_code(161):=other_kchar; {1 ku} - @t\hskip10pt@>kcat_code(162):=other_kchar; {2 ku} - @t\hskip10pt@>kcat_code(163):=kana; {3 ku} - @t\hskip10pt@>kcat_code(164):=kana; {4 ku} - @t\hskip10pt@>kcat_code(165):=kana; {5 ku} - @t\hskip10pt@>kcat_code(166):=kana; {6 ku} - @t\hskip10pt@>kcat_code(167):=other_kchar; {7 ku} - @t\hskip10pt@>kcat_code(168):=other_kchar; {8 ku} - @+@t\1@>for k:=176 to 244 do kcat_code(k):=kanji; {16 ku ... 84 ku} -end; -@z - -@x [17.236] l.5092 - pTeX: cur_jfam_code, jchr_widow_penalty -@d cur_fam_code=44 {current family} -@d escape_char_code=45 {escape character for token output} -@d default_hyphen_char_code=46 {value of \.{\\hyphenchar} when a font is loaded} -@d default_skew_char_code=47 {value of \.{\\skewchar} when a font is loaded} -@d end_line_char_code=48 {character placed at the right end of the buffer} -@d new_line_char_code=49 {character that prints as |print_ln|} -@d language_code=50 {current hyphenation table} -@d left_hyphen_min_code=51 {minimum left hyphenation fragment size} -@d right_hyphen_min_code=52 {minimum right hyphenation fragment size} -@d holding_inserts_code=53 {do not remove insertion nodes from \.{\\box255}} -@d error_context_lines_code=54 {maximum intermediate line pairs shown} -@d tex_int_pars=55 {total number of \TeX's integer parameters} -@# -@d web2c_int_base=tex_int_pars {base for web2c's integer parameters} -@d char_sub_def_min_code=web2c_int_base {smallest value in the charsubdef list} -@d char_sub_def_max_code=web2c_int_base+1 {largest value in the charsubdef list} -@d tracing_char_sub_def_code=web2c_int_base+2 {traces changes to a charsubdef def} -@d mubyte_in_code=web2c_int_base+3 {if positive then reading mubytes is active} -@d mubyte_out_code=web2c_int_base+4 {if positive then printing mubytes is active} -@d mubyte_log_code=web2c_int_base+5 {if positive then print mubytes to log and terminal} -@d spec_out_code=web2c_int_base+6 {if positive then print specials by mubytes} -@d web2c_int_pars=web2c_int_base+7 {total number of web2c's integer parameters} -@# -@d int_pars=web2c_int_pars {total number of integer parameters} -@d count_base=int_base+int_pars {256 user \.{\\count} registers} -@y -@d cur_fam_code=44 {current family} -@d cur_jfam_code=45 {current kanji family} -@d escape_char_code=46 {escape character for token output} -@d default_hyphen_char_code=47 {value of \.{\\hyphenchar} when a font is loaded} -@d default_skew_char_code=48 {value of \.{\\skewchar} when a font is loaded} -@d end_line_char_code=49 {character placed at the right end of the buffer} -@d new_line_char_code=50 {character that prints as |print_ln|} -@d language_code=51 {current hyphenation table} -@d left_hyphen_min_code=52 {minimum left hyphenation fragment size} -@d right_hyphen_min_code=53 {minimum right hyphenation fragment size} -@d holding_inserts_code=54 {do not remove insertion nodes from \.{\\box255}} -@d error_context_lines_code=55 {maximum intermediate line pairs shown} -@d jchr_widow_penalty_code=56 - {penalty for creating a widow KANJI character line} -@d char_sub_def_min_code=57 {smallest value in the charsubdef list} -@d char_sub_def_max_code=58 {largest value in the charsubdef list} -@d tracing_char_sub_def_code=59 {traces changes to a charsubdef def} -@d int_pars=60 {total number of integer parameters} -@d count_base=int_base+int_pars {256 user \.{\\count} registers} -@z - -@x [17.236] l.5167 - pTeX: cur_jfam, |jchr_widow_penalty| -@d cur_fam==int_par(cur_fam_code) -@d escape_char==int_par(escape_char_code) -@y -@d cur_fam==int_par(cur_fam_code) -@d cur_jfam==int_par(cur_jfam_code) -@d escape_char==int_par(escape_char_code) -@d jchr_widow_penalty==int_par(jchr_widow_penalty_code) -@z - -@x l.5181 - pTeX -@d tracing_char_sub_def==int_par(tracing_char_sub_def_code) -@d mubyte_in==int_par(mubyte_in_code) -@d mubyte_out==int_par(mubyte_out_code) -@d mubyte_log==int_par(mubyte_log_code) -@d spec_out==int_par(spec_out_code) -@y -@d tracing_char_sub_def==int_par(tracing_char_sub_def_code) -@z - -@x [17.237] l.5244 - pTeX: cur_jfam_code, jchr_window_penalty_code -new_line_char_code:print_esc("newlinechar"); -@y -new_line_char_code:print_esc("newlinechar"); -cur_jfam_code:print_esc("jfam"); -jchr_widow_penalty_code:print_esc("jcharwidowpenalty"); -@z - -@x l.5252 - pTeX -tracing_char_sub_def_code:print_esc("tracingcharsubdef"); -mubyte_in_code:print_esc("mubytein"); -mubyte_out_code:print_esc("mubyteout"); -mubyte_log_code:print_esc("mubytelog"); -spec_out_code:print_esc("specialout"); -@y -tracing_char_sub_def_code:print_esc("tracingcharsubdef"); -@z - -@x [17.238] l.5365 - pTeX: cur_jfam_code, jchr_window_penalty_code -primitive("newlinechar",assign_int,int_base+new_line_char_code);@/ -@!@:new_line_char_}{\.{\\newlinechar} primitive@> -@y -primitive("newlinechar",assign_int,int_base+new_line_char_code);@/ -@!@:new_line_char_}{\.{\\newlinechar} primitive@> -primitive("jfam",assign_int,int_base+cur_jfam_code);@/ -@!@:cur_jfam_}{\.{\\jfam} primitive@> -primitive("jcharwidowpenalty",assign_int,int_base+jchr_widow_penalty_code);@/ -@!@:jchr_widow_penalty}{\.{\\jcharwidowpenalty} primitive@> -@z - -@x l.5387 - pTeX -if enctex_p then - begin enctex_enabled_p:=true; - primitive("mubytein",assign_int,int_base+mubyte_in_code);@/ -@!@:mubyte_in_}{\.{\\mubytein} primitive@> - primitive("mubyteout",assign_int,int_base+mubyte_out_code);@/ -@!@:mubyte_out_}{\.{\\mubyteout} primitive@> - primitive("mubytelog",assign_int,int_base+mubyte_log_code);@/ -@!@:mubyte_log_}{\.{\\mubytelog} primitive@> - primitive("specialout",assign_int,int_base+spec_out_code);@/ -@!@:spec_out_}{\.{\\specialout} primitive@> -end; -@y -@z - -@x [17.247] l.5490 - pTeX: kinsoku, t_baseline_shift, y_baseline_shift -@d h_offset_code=18 {amount of horizontal offset when shipping pages out} -@d v_offset_code=19 {amount of vertical offset when shipping pages out} -@d emergency_stretch_code=20 {reduces badnesses on final pass of line-breaking} -@d dimen_pars=21 {total number of dimension parameters} -@d scaled_base=dimen_base+dimen_pars - {table of 256 user-defined \.{\\dimen} registers} -@d eqtb_size=scaled_base+255 {largest subscript of |eqtb|} -@y -@d h_offset_code=18 {amount of horizontal offset when shipping pages out} -@d v_offset_code=19 {amount of vertical offset when shipping pages out} -@d emergency_stretch_code=20 {reduces badnesses on final pass of line-breaking} -@d t_baseline_shift_code=21 {shift amount when mixing TATE-kumi and Alphabet} -@d y_baseline_shift_code=22 {shift amount when mixing YOKO-kumi and Alphabet} -@d dimen_pars=23 {total number of dimension parameters} -@d scaled_base=dimen_base+dimen_pars - {table of 256 user-defined \.{\\dimen} registers} -@d kinsoku_penalty_base=scaled_base+256 {table of 256 kinsoku registers} -@d eqtb_size=kinsoku_penalty_base+255 {largest subscript of |eqtb|} -@z - -@x l.5498 - pTeX: kinsoku, t_baseline_shift, y_baseline_shift -@d dimen(#)==eqtb[scaled_base+#].sc -@d dimen_par(#)==eqtb[dimen_base+#].sc {a scaled quantity} -@y -@d dimen(#)==eqtb[scaled_base+#].sc -@d dimen_par(#)==eqtb[dimen_base+#].sc {a scaled quantity} -@d kinsoku_penalty(#)==eqtb[kinsoku_penalty_base+#].int -@z - -@x l.5518 - pTeX: -@d h_offset==dimen_par(h_offset_code) -@d v_offset==dimen_par(v_offset_code) -@y -@d h_offset==dimen_par(h_offset_code) -@d v_offset==dimen_par(v_offset_code) -@d t_baseline_shift==dimen_par(t_baseline_shift_code) -@d y_baseline_shift==dimen_par(y_baseline_shift_code) -@z - -@x l.5542 - pTeX: -h_offset_code:print_esc("hoffset"); -v_offset_code:print_esc("voffset"); -emergency_stretch_code:print_esc("emergencystretch"); -othercases print("[unknown dimen parameter!]") -@y -h_offset_code:print_esc("hoffset"); -v_offset_code:print_esc("voffset"); -t_baseline_shift_code:print_esc("tbaselineshift"); -y_baseline_shift_code:print_esc("ybaselineshift"); -emergency_stretch_code:print_esc("emergencystretch"); -othercases print("[unknown dimen parameter!]") -@z - -@x [17.248] l.5588 - pTeX: rotate offset -primitive("hoffset",assign_dimen,dimen_base+h_offset_code);@/ -@!@:h_offset_}{\.{\\hoffset} primitive@> -primitive("voffset",assign_dimen,dimen_base+v_offset_code);@/ -@!@:v_offset_}{\.{\\voffset} primitive@> -@y -primitive("hoffset",assign_dimen,dimen_base+h_offset_code);@/ -@!@:h_offset_}{\.{\\hoffset} primitive@> -primitive("voffset",assign_dimen,dimen_base+v_offset_code);@/ -@!@:v_offset_}{\.{\\voffset} primitive@> -primitive("tbaselineshift",assign_dimen,dimen_base+t_baseline_shift_code);@/ -@!@:t_baseline_shift_}{\.{\\tbaselineshift} primitive@> -primitive("ybaselineshift",assign_dimen,dimen_base+y_baseline_shift_code);@/ -@!@:y_baseline_shift_}{\.{\\ybaselineshift} primitive@> -@z - -@x [17.252] l.5622 - pTeX: show eqtb -else if n<=eqtb_size then @ -else print_char("?"); {this can't happen either} -end; -tats -@y -else if n -else if n<=eqtb_size then print("kinsoku") -else print_char("?"); {this can't happen either} -end; -tats -@z - -@x l.5777 - pTeX -The conversion from control sequence to byte sequence for enc\TeX is -implemented here. Of course, the simplest way is to implement an array -of string pointers with |hash_size| length, but we assume that only a -few control sequences will need to be converted. So |mubyte_cswrite|, -an array with only 128 items, is used. The items point to the token -lists. First token includes a csname number and the second points the -string to be output. The third token includes the number of another -csname and fourth token its pointer to the string etc. We need to do -the sequential searching in one of the 128 token lists. - -@y -@z - -@x l.5788 - pTeX -procedure print_cs(@!p:integer); {prints a purported control sequence} -var q: pointer; - s: str_number; -begin - if active_noconvert and (not no_convert) and - (eq_type(p) = let) and (equiv(p) = normal+11) then { noconvert } - begin - no_convert := true; - return; - end; - s := 0; - if cs_converting and (not no_convert) then - begin - q := mubyte_cswrite [p mod 128] ; - while q <> null do - if info (q) = p then - begin - s := info (link(q)); q := null; - end else q := link (link (q)); - end; - no_convert := false; - if s > 0 then print (s) - else if p -end; -@y -@z - -@x [18.265] l.5903 - pTeX: \jfont \tfont -primitive("font",def_font,0);@/ -@!@:font_}{\.{\\font} primitive@> -@y -primitive("font",def_font,0);@/ -@!@:font_}{\.{\\font} primitive@> -primitive("jfont",def_jfont,0);@/ -@!@:jfont_}{\.{\\jfont} primitive@> -primitive("tfont",def_tfont,0);@/ -@!@:tfont_}{\.{\\tfont} primitive@> -@z - -@x [18.266] l.5979 - pTeX: \jfont, \tfont -def_font: print_esc("font"); -@y -def_font: print_esc("font"); -def_jfont: print_esc("jfont"); -def_tfont: print_esc("tfont"); -@z - -@x l.5982 - pTeX -end_cs_name: if chr_code = 10 then print_esc("endmubyte") - else print_esc("endcsname"); -@y -end_cs_name: print_esc("endcsname"); -@z - -@x [20.289] l.6387 - pTeX: cs_token_flag -@d cs_token_flag==@'7777 {amount added to the |eqtb| location in a - token that stands for a control sequence; is a multiple of~256, less~1} -@y -@d cs_token_flag==@"FFFF {amount added to the |eqtb| location in a -token that stands for a control sequence; is a multiple of~256, less~1} -@z - -@x [20.293] l.6496 - pTeX: show_token_list -@ @= -if (pmem_end) then - begin print_esc("CLOBBERED."); return; -@.CLOBBERED@> - end; -if info(p)>=cs_token_flag then print_cs(info(p)-cs_token_flag) -else begin m:=info(p) div @'400; c:=info(p) mod @'400; - if info(p)<0 then print_esc("BAD.") -@.BAD@> - else @; - end -@y -@ @= -if (pmem_end) then - begin print_esc("CLOBBERED."); return; -@.CLOBBERED@> - end; -if info(p)>=cs_token_flag then print_cs(info(p)-cs_token_flag) {wchar_token} -else begin - if check_kanji(info(p)) then {wchar_token} - begin m:=kcat_code(Hi(info(p))); c:=info(p); - end - else begin m:=info(p) div @'400; c:=info(p) mod @'400; - end; - if (m256) then print_esc("BAD.") -@.BAD@> - else @; -end -@z - -@x [20.294] l.6512 - pTeX: show_token_list -@= -case m of -left_brace,right_brace,math_shift,tab_mark,sup_mark,sub_mark,spacer, - letter,other_char: print(c); -@y -@= -case m of -kanji,kana,other_kchar: print_kanji(KANJI(c)); -left_brace,right_brace,math_shift,tab_mark,sup_mark,sub_mark,spacer, - letter,other_char: print(c); -@z - -@x [21.298] l.6632 - pTeX: print KANJI -other_char: chr_cmd("the character "); -@y -other_char: chr_cmd("the character "); -kanji,kana,other_kchar: begin print("kanji character "); - print_kanji(KANJI(chr_code)); end; -@z - -@x [22.303] l.6726 - pTeX: state mid_kanji -1) |state=mid_line| is the normal state.\cr -2) |state=skip_blanks| is like |mid_line|, but blanks are ignored.\cr -3) |state=new_line| is the state at the beginning of a line.\cr}}$$ -@y -1) |state=mid_line| is the normal state.\cr -2) |state=mid_kanji| is like |mid_line|, and internal KANJI string.\cr -3) |state=skip_blanks| is like |mid_line|, but blanks are ignored.\cr -4) |state=new_line| is the state at the beginning of a line.\cr}}$$ -@z - -@x [22.303] l.6736 - pTeX: state mid_kanji -@d mid_line=1 {|state| code when scanning a line of characters} -@d skip_blanks=2+max_char_code {|state| code when ignoring blanks} -@d new_line=3+max_char_code+max_char_code {|state| code at start of line} -@y -@d mid_line=1 {|state| code when scanning a line of characters} -@d mid_kanji=2+max_char_code {|state| code when scanning a line of characters} -@d skip_blanks=3+max_char_code+max_char_code {|state| code when ignoring blanks} -@d new_line=4+max_char_code+max_char_code+max_char_code - {|state| code at start of line} -@z - -@x [22.311] l.6986 - pTeX: label -@p procedure show_context; {prints where the scanner is} -label done; -var old_setting:0..max_selector; {saved |selector| setting} -@y -@p procedure show_context; {prints where the scanner is} -label done, done1; -var old_setting:0..max_selector; {saved |selector| setting} -@!s: pointer; {temporary pointer} -@z - -@x [22.316] l.7110 - pTeX: init kcode_pos -@d begin_pseudoprint== - begin l:=tally; tally:=0; selector:=pseudo; - trick_count:=1000000; - end -@y -@d begin_pseudoprint== - begin l:=tally; tally:=0; selector:=pseudo; kcode_pos:=0; - trick_count:=1000000; - end -@z -@x [22.316] l.7114 - pTeX: kcode_pos -@d set_trick_count== - begin first_count:=tally; - trick_count:=tally+1+error_line-half_error_line; - if trick_count0)and(trick_buf2[(first_count-1)mod error_line]=1) then - incr(first_count); - trick_count:=first_count+1+error_line-half_error_line; - if trick_count= -begin_pseudoprint; -if buffer[limit]=end_line_char then j:=limit -else j:=limit+1; {determine the effective end of the line} -i := start; mubyte_skeep := mubyte_keep; -mubyte_sstart := mubyte_start; mubyte_start := false; -if j>0 then while i < j do -begin - if i=loc then set_trick_count; - print_buffer(i); -end; -mubyte_keep := mubyte_skeep; mubyte_start := mubyte_sstart -@y -@= -begin_pseudoprint; -if buffer[limit]=end_line_char then j:=limit -else j:=limit+1; {determine the effective end of the line} -if j>0 then for i:=start to j-1 do - begin if i=loc then set_trick_count; - print(buffer[i]); - end -@z - -@x [22.319] l.7157 - pTeX: adjust kanji code token -@ @= -begin_pseudoprint; -if token_type= -begin_pseudoprint; -if token_typenull) then - begin if (link(start)=null)and(check_kanji(info(start))) then {wchar_token} - begin cur_input:=input_stack[base_ptr-1]; - s:=get_avail; info(s):=(buffer[loc] mod @'400); - cur_input:=input_stack[base_ptr]; - link(start):=s; - show_token_list(start,loc,100000); - free_avail(s);link(start):=null; - goto done1; - end; - end; - show_token_list(start,loc,100000); - end -else show_token_list(link(start),loc,100000); {avoid reference count} -done1: -@z - -@x l.7354 - pTeX -Some additional routines used by the enc\TeX extension have to be -declared at this point. - -@p @t\4@>@@/ - -@y -@z - -@x l.7476 - pTeX -@!i,@!j: 0..buf_size; {more indexes for encTeX} -@!mubyte_incs: boolean; {control sequence is converted by mubyte} -@!p:pointer; {for encTeX test if noexpanding} -@y -@z - -@x [24.341] l.7479 - pTeX: set last_chr -@!cat:0..15; {|cat_code(cur_chr)|, usually} -@y -@!cat:escape..max_char_code; {|cat_code(cur_chr)|, usually} -@!l:0..buf_size; {temporary index into |buffer|} -@z - -@x [24.343] l.7500 - pTeX: input external file -@ @= -@^inner loop@> -begin switch: if loc<=limit then {current line not yet finished} - begin - { Use |k| instead of |loc| for type correctness. } - k := loc; - cur_chr := read_buffer (k); - loc := k; incr (loc); - if (mubyte_token > 0) then - begin - state := mid_line; - cur_cs := mubyte_token - cs_token_flag; - goto found; - end; - reswitch: cur_cmd:=cat_code(cur_chr); -@y -@ @= -@^inner loop@> -begin switch: if loc<=limit then {current line not yet finished} - begin cur_chr:=buffer[loc]; incr(loc); - if (iskanji1(cur_chr))and(loc<=limit)and(iskanji2(buffer[loc])) then - begin cur_cmd:=kcat_code(cur_chr); cur_chr:=cur_chr*@'400+buffer[loc]; - incr(loc); - end - else reswitch: cur_cmd:=cat_code(cur_chr); -@z - -@x [24.344] l.7535 - pTeX: ASCII-KANJI space handling -@d any_state_plus(#) == mid_line+#,skip_blanks+#,new_line+# -@y -@d any_state_plus(#) == mid_line+#,mid_kanji+#,skip_blanks+#,new_line+# -@z - -@x [24.347] l.7569 - pTeX: scaner -@ @d add_delims_to(#)==#+math_shift,#+tab_mark,#+mac_param, - #+sub_mark,#+letter,#+other_char -@y -@ @d add_delims_to(#)==#+math_shift,#+tab_mark,#+mac_param, - #+sub_mark,#+letter,#+other_char -@d all_jcode(#)==#+kanji,#+kana,#+other_kchar -@z - -@x [24.347] l.7573 - pTeX: scaner -mid_line+spacer:@; -mid_line+car_ret:@; -skip_blanks+car_ret,any_state_plus(comment): - @; -new_line+car_ret:@; -mid_line+left_brace: incr(align_state); -skip_blanks+left_brace,new_line+left_brace: begin - state:=mid_line; incr(align_state); - end; -mid_line+right_brace: decr(align_state); -skip_blanks+right_brace,new_line+right_brace: begin - state:=mid_line; decr(align_state); - end; -add_delims_to(skip_blanks),add_delims_to(new_line): state:=mid_line; -@y -mid_kanji+spacer,mid_line+spacer:@; -mid_line+car_ret:@; -mid_kanji+car_ret: if skip_mode then @ - else @; -skip_blanks+car_ret,any_state_plus(comment): - @; -new_line+car_ret:@; -mid_line+left_brace,mid_kanji+left_brace: incr(align_state); -skip_blanks+left_brace,new_line+left_brace: begin - state:=mid_line; incr(align_state); - end; -mid_line+right_brace,mid_kanji+right_brace: decr(align_state); -skip_blanks+right_brace,new_line+right_brace: begin - state:=mid_line; decr(align_state); - end; -add_delims_to(skip_blanks),add_delims_to(new_line),add_delims_to(mid_kanji): - state:=mid_line; -all_jcode(skip_blanks),all_jcode(new_line),all_jcode(mid_line): - state:=mid_kanji; - -@ @= -skip_mode:boolean; - -@ @= -skip_mode:=true; -@z - -@x [24.354] l.7659 - pTeX: scan control sequence -@= -begin if loc>limit then cur_cs:=null_cs {|state| is irrelevant in this case} -else begin start_cs: - mubyte_incs := false; k := loc; mubyte_skeep := mubyte_keep; - cur_chr := read_buffer (k); cat := cat_code (cur_chr); - if (mubyte_in>0) and (not mubyte_incs) and - ((mubyte_skip>0) or (cur_chr<>buffer[k])) then mubyte_incs := true; - incr (k); - if mubyte_token > 0 then - begin - state := mid_line; - cur_cs := mubyte_token - cs_token_flag; - goto found; - end; - if cat=letter then state:=skip_blanks - else if cat=spacer then state:=skip_blanks - else state:=mid_line; - if (cat=letter)and(k<=limit) then - @ - else @; - mubyte_keep := mubyte_skeep; - cur_cs:=single_base + read_buffer(loc); incr(loc); - end; -found: cur_cmd:=eq_type(cur_cs); cur_chr:=equiv(cur_cs); -if cur_cmd>=outer_call then check_outer_validity; -if write_noexpanding then -begin - p := mubyte_cswrite [cur_cs mod 128]; - while p <> null do - if info (p) = cur_cs then - begin - cur_cmd := relax; cur_chr := 256; p := null; - end else p := link (link (p)); -end; -end -@y -@= -begin if loc>limit then cur_cs:=null_cs {|state| is irrelevant in this case} -else begin k:=loc; cur_chr:=buffer[k]; incr(k); - if (iskanji1(cur_chr))and(k<=limit)and(iskanji2(buffer[k])) then - begin cat:=kcat_code(cur_chr); incr(k); - end - else cat:=cat_code(cur_chr); -start_cs: - if (cat=letter)or(cat=kanji)or(cat=kana) then state:=skip_blanks - else if cat=spacer then state:=skip_blanks - else state:=mid_line; - if cat=other_kchar then - begin cur_cs:=id_lookup(loc,k-loc); loc:=k; goto found; - end - else if ((cat=letter)or(cat=kanji)or(cat=kana))and(k<=limit) then - @ - else @; - cur_cs:=single_base+buffer[loc]; incr(loc); - end; -found: cur_cmd:=eq_type(cur_cs); cur_chr:=equiv(cur_cs); -if cur_cmd>=outer_call then check_outer_validity; -end -@z - -@x -@= -begin if buffer[k]=cur_chr then @+if cat=sup_mark then @+if k2 then - begin hex_to_cur_chr; buffer[k-1]:=cur_chr; - end - else if c<@'100 then buffer[k-1]:=c+@'100 - else buffer[k-1]:=c-@'100; - limit:=limit-d; first:=first-d; - while k<=limit do - begin buffer[k]:=buffer[k+d]; incr(k); - end; - goto start_cs; - end; - end; -end -@y -@= -begin if buffer[k]=cur_chr then @+if cat=sup_mark then @+if k2 then - begin hex_to_cur_chr; buffer[k-1]:=cur_chr; - end - else if c<@'100 then buffer[k-1]:=c+@'100 - else buffer[k-1]:=c-@'100; - limit:=limit-d; first:=first-d; - l:=k; cur_chr:=buffer[k-1]; cat:=cat_code(cur_chr); - while l<=limit do - begin buffer[l]:=buffer[l+d]; incr(l); - end; - goto start_cs; - end; - end; -end -@z - -@x [24.356] l.7727 - pTeX: scan control sequence (cont) -@ @= -begin - repeat cur_chr := read_buffer (k); cat := cat_code (cur_chr); - if mubyte_token>0 then cat := escape; - if (mubyte_in>0) and (not mubyte_incs) and (cat=letter) and - ((mubyte_skip>0) or (cur_chr<>buffer[k])) then mubyte_incs := true; - incr (k); - until (cat <> letter) or (k > limit); - @; - if cat <> letter then - begin - decr (k); k := k - mubyte_skip; - end; - if k > loc + 1 then { multiletter control sequence has been scanned } - begin - if mubyte_incs then { multibyte in csname occurrs } - begin - i := loc; j := first; mubyte_keep := mubyte_skeep; - if j - loc + k > max_buf_stack then - begin - max_buf_stack := j - loc + k; - if max_buf_stack >= buf_size then - begin - max_buf_stack := buf_size; - overflow ("buffer size", buf_size); - end; - end; - while i < k do - begin - buffer [j] := read_buffer (i); - incr (i); incr (j); - end; - if j = first+1 then - cur_cs := single_base + buffer [first] - else - cur_cs := id_lookup (first, j-first); - end else cur_cs := id_lookup (loc, k-loc) ; - loc := k; - goto found; - end; -end -@y -@ @= -begin repeat cur_chr:=buffer[k]; incr(k); - if (iskanji1(cur_chr))and(k<=limit)and(iskanji2(buffer[k])) then - begin cat:=kcat_code(cur_chr); incr(k); - end - else cat:=cat_code(cur_chr); - while (buffer[k]=cur_chr)and(cat=sup_mark)and(k2 then - begin hex_to_cur_chr; - end - else if c<@'100 then cur_chr:=c+@'100 - else cur_chr:=c-@'100; - cat:=cat_code(cur_chr); - if (cat=letter)or(cat=sup_mark) then - begin buffer[k-1]:=cur_chr; - limit:=limit-d; first:=first-d; - l:=k; - while l<=limit do - begin buffer[l]:=buffer[l+d]; incr(l); - end; - end; - end; - end; -until not((cat=letter)or(cat=kanji)or(cat=kana))or(k>limit); -{@@;} -if not((cat=letter)or(cat=kanji)or(cat=kana)) then decr(k); -if cat=other_kchar then decr(k); {now |k| points to first nonletter} -if k>loc+1 then {multiletter control sequence has been scanned} - begin cur_cs:=id_lookup(loc,k-loc); loc:=k; goto found; - end; -end -@z - -@x [24.357] l.7771 - pTeX: input from token list -@= -if loc<>null then {list not exhausted} -@^inner loop@> - begin t:=info(loc); loc:=link(loc); {move to next} - if t>=cs_token_flag then {a control sequence token} - begin cur_cs:=t-cs_token_flag; - cur_cmd:=eq_type(cur_cs); cur_chr:=equiv(cur_cs); - if cur_cmd>=outer_call then - if cur_cmd=dont_expand then - @ - else check_outer_validity; - if write_noexpanding then - begin - p := mubyte_cswrite [cur_cs mod 128]; - while p <> null do - if info (p) = cur_cs then - begin - cur_cmd := relax; cur_chr := 256; p := null; - end else p := link (link (p)); - end; - end - else begin cur_cmd:=t div @'400; cur_chr:=t mod @'400; - case cur_cmd of - left_brace: incr(align_state); - right_brace: decr(align_state); - out_param: @; - othercases do_nothing - endcases; - end; - end -else begin {we are done with this token list} - end_token_list; goto restart; {resume previous level} - end -@y -@= -if loc<>null then {list not exhausted} -@^inner loop@> - begin t:=info(loc); loc:=link(loc); {move to next} - if t>=cs_token_flag then {a control sequence token} - begin cur_cs:=t-cs_token_flag; - cur_cmd:=eq_type(cur_cs); cur_chr:=equiv(cur_cs); - if cur_cmd>=outer_call then - if cur_cmd=dont_expand then - @ - else check_outer_validity; - end - else if check_kanji(t) then {wchar_token} - begin cur_chr:=t; cur_cmd:=kcat_code(Hi(t)); - end - else - begin cur_cmd:=t div @'400; cur_chr:=t mod @'400; - case cur_cmd of - left_brace: incr(align_state); - right_brace: decr(align_state); - out_param: @; - othercases do_nothing - endcases; - end; - end -else begin {we are done with this token list} - end_token_list; goto restart; {resume previous level} - end -@z - -@x l.7898 - pTeX - k := start; - while k < limit do begin print_buffer(k) end; -@y - if start -if cur_cs=0 then cur_tok:=(cur_cmd*@'400)+cur_chr -else cur_tok:=cs_token_flag+cur_cs; -end; -@y -@p procedure get_token; {sets |cur_cmd|, |cur_chr|, |cur_tok|} -begin no_new_control_sequence:=false; get_next; no_new_control_sequence:=true; -@^inner loop@> -if cur_cs=0 then - if (cur_cmd=kanji)or(cur_cmd=kana)or(cur_cmd=other_kchar) then {wchar_token} - cur_tok:=cur_chr - else cur_tok:=(cur_cmd*@'400)+cur_chr -else cur_tok:=cs_token_flag+cur_cs; -end; -@z - -%@x [25.367] l.8019 - pTeX: expand -%@= -%begin save_scanner_status:=scanner_status; scanner_status:=normal; -%get_token; scanner_status:=save_scanner_status; t:=cur_tok; -%back_input; {now |start| and |loc| point to the backed-up token |t|} -%if t>=cs_token_flag then -% begin p:=get_avail; info(p):=cs_token_flag+frozen_dont_expand; -% link(p):=loc; start:=p; loc:=p; -% end; -%end -%@y -%@= -%begin save_scanner_status:=scanner_status; scanner_status:=normal; -%get_token; scanner_status:=save_scanner_status; t:=cur_tok; -%back_input; {now |start| and |loc| point to the backed-up token |t|} -%if t>=cs_token_flag then -% begin p:=get_avail; info(p):=cs_token_flag+frozen_dont_expand; -% link(p):=loc; start:=p; loc:=p; -% end; -%end -%@z - -@x [25.374] l.8073 - pTeX: get_chr -@ @= -j:=first; p:=link(r); -while p<>null do - begin if j>=max_buf_stack then - begin max_buf_stack:=j+1; - if max_buf_stack=buf_size then - overflow("buffer size",buf_size); -@:TeX capacity exceeded buffer size}{\quad buffer size@> - end; - buffer[j]:=info(p) mod @'400; incr(j); p:=link(p); - end; -@y -@ @= -j:=first; p:=link(r); -while p<>null do - begin if j>=max_buf_stack then - begin max_buf_stack:=j+1; - if max_buf_stack=buf_size then - overflow("buffer size",buf_size); -@:TeX capacity exceeded buffer size}{\quad buffer size@> - end; - if check_kanji(info(p)) then {wchar_token} - begin buffer[j]:=Hi(info(p)); incr(j); - buffer[j]:=Lo(info(p)); incr(j); p:=link(p); - end - else - begin buffer[j]:=info(p) mod @'400; incr(j); p:=link(p); - end; - end; -@z - -@x [25.380] l.8221 - pTeX: get_x_token -@p procedure get_x_token; {sets |cur_cmd|, |cur_chr|, |cur_tok|, - and expands macros} -label restart,done; -begin restart: get_next; -@^inner loop@> -if cur_cmd<=max_command then goto done; -if cur_cmd>=call then - if cur_cmd -if cur_cmd<=max_command then goto done; -if cur_cmd>=call then - if cur_cmdmax_command do - begin expand; - get_next; - end; -if cur_cs=0 then cur_tok:=(cur_cmd*@'400)+cur_chr -else cur_tok:=cs_token_flag+cur_cs; -@y -@p procedure x_token; {|get_x_token| without the initial |get_next|} -begin while cur_cmd>max_command do - begin expand; - get_next; - end; -if cur_cs=0 then - if (cur_cmd=kanji)or(cur_cmd=kana)or(cur_cmd=other_kchar) then - cur_tok:=cur_chr - else cur_tok:=(cur_cmd*@'400)+cur_chr -else cur_tok:=cs_token_flag+cur_cs; -@z - -@x [26.413] l.8659 - pTeX: scan_somthing_internal -@p procedure scan_something_internal(@!level:small_number;@!negative:boolean); - {fetch an internal parameter} -var m:halfword; {|chr_code| part of the operand token} -@!p:0..nest_size; {index into |nest|} -begin m:=cur_chr; -case cur_cmd of -def_code: @; -toks_register,assign_toks,def_family,set_font,def_font: @; -@y -@p @t\4@>@@t@>@/ -procedure scan_something_internal(@!level:small_number;@!negative:boolean); - {fetch an internal parameter} -var m:halfword; {|chr_code| part of the operand token} -@!p:0..nest_size; {index into |nest|} -@!q:pointer; -begin m:=cur_chr; -case cur_cmd of -assign_kinsoku: @; -assign_inhibit_xsp_code: @; -def_code: @; -toks_register,assign_toks,def_family,set_font,def_font,def_jfont,def_tfont: - @; -@z - -@x [26.414] l.8693 - pTeX: -if m=xord_code_base then scanned_result(xord[cur_val])(int_val) -else if m=xchr_code_base then scanned_result(xchr[cur_val])(int_val) -else if m=xprn_code_base then scanned_result(xprn[cur_val])(int_val) -else if m=math_code_base then scanned_result(ho(math_code(cur_val)))(int_val) -else if m0 then - scanned_result(equiv(m+Hi(cur_val)))(int_val) - else scanned_result(equiv(m+cur_val))(int_val) - end -else scanned_result(eqtb[m+cur_val].int)(int_val); -@z - -@x [26.420] l.8799 - pTeX: Fetch a box dimension: dir_node -if box(cur_val)=null then cur_val:=0 @+else cur_val:=mem[box(cur_val)+m].sc; -@y -if box(cur_val)=null then cur_val:=0 -else - begin q:=box(cur_val); - while (q<>null)and(box_dir(q)<>abs(direction)) do q:=link(q); - if q=null then - begin q:=new_dir_node(box(cur_val),abs(direction)); - cur_val:=mem[q+m].sc; - delete_glue_ref(space_ptr(q)); delete_glue_ref(xspace_ptr(q)); - free_node(q,box_node_size); - end - else cur_val:=mem[q+m].sc; - end; -@z - -@x [26.435] l.8940 - pTeX: scan_char_num -procedure scan_char_num; -begin scan_int; -if (cur_val<0)or(cur_val>255) then - begin print_err("Bad character code"); -@.Bad character code@> - help2("A character number must be between 0 and 255.")@/ - ("I changed this one to zero."); int_error(cur_val); cur_val:=0; - end; -end; -@y -procedure scan_char_num; -begin scan_int; -if ((cur_val<0)or(cur_val>255))and(not check_kanji(cur_val)) then {wchar_token} - begin print_err("Bad character code"); -@.Bad character code@> - help2("A character number must be between 0 and 255, or KANJI code.")@/ - ("I changed this one to zero."); int_error(cur_val); cur_val:=0; - end; -end; -@z - -@x [26.442] l.9045 - pTeX: KANJI character scanning -@= -begin get_token; {suppress macro expansion} -if cur_tok255 then - begin print_err("Improper alphabetic constant"); -@.Improper alphabetic constant@> - help2("A one-character control sequence belongs after a ` mark.")@/ - ("So I'm essentially inserting \0 here."); - cur_val:="0"; back_error; - end -else @; -end -@y -@= -begin get_token; {suppress macro expansion} -if cur_tok255)and(cur_cmd - help2("A one-character control sequence belongs after a ` mark.")@/ - ("So I'm essentially inserting \0 here."); - cur_val:="0"; back_error; - end -else @; -skip_mode:=true; -end -@z - -@x [26.455] l.9288 - pTeX: zw, zh: zenkaku width & height -if scan_keyword("em") then v:=(@) -@.em@> -else if scan_keyword("ex") then v:=(@) -@.ex@> -else goto not_found; -@y -if scan_keyword("em") then v:=(@) -@.em@> -else if scan_keyword("ex") then v:=(@) -@.ex@> -else if scan_keyword("zw") then @ -@.ze@> -else if scan_keyword("zh") then @ -@.zh@> -else goto not_found; -@z - -@x [26.458] l.9345 - pTeX: dimension unit: Q, H (1/4 mm) -else if scan_keyword("sp") then goto done -@.sp@> -@y -else if scan_keyword("H") then set_conversion(7227)(10160) -@.H@> -else if scan_keyword("Q") then set_conversion(7227)(10160) -@.Q@> -else if scan_keyword("sp") then goto done -@.sp@> -@z - -@x [27.464] l.9475 - pTeX: str_toks - if t=" " then t:=space_token - else t:=other_token+t; -@y - if (iskanji1(t))and(k+1 -@y -primitive("fontname",convert,font_name_code);@/ -@!@:font_name_}{\.{\\fontname} primitive@> -primitive("kansuji",convert,kansuji_code); -@!@:kansuji_}{\.{\\kansuji} primitive@> -primitive("euc",convert,euc_code); -@!@:euc_}{\.{\\euc} primitive@> -primitive("sjis",convert,sjis_code); -@!@:sjis_}{\.{\\sjis} primitive@> -primitive("jis",convert,jis_code); -@!@:jis_}{\.{\\jis} primitive@> -primitive("kuten",convert,kuten_code); -@!@:kuten_}{\.{\\kuten} primitive@> -@z - -@x [27.469] l.9558 - pTeX: - font_name_code: print_esc("fontname"); -@y - font_name_code: print_esc("fontname"); - kansuji_code: print_esc("kansuji"); - euc_code:print_esc("euc"); - sjis_code:print_esc("sjis"); - jis_code:print_esc("jis"); - kuten_code:print_esc("kuten"); -@z - -@x [27.470] l.9566 - pTeX: convert KANJI code continue -@p procedure conv_toks; -var old_setting:0..max_selector; {holds |selector| setting} -@y -@p procedure conv_toks; -var old_setting:0..max_selector; {holds |selector| setting} -@!cx:KANJI_code; {temporary register for KANJI} -@z - -@x [27.471] l.9577 - pTeX: convert KANJI code continue -@ @= -case c of -number_code,roman_numeral_code: scan_int; -string_code, meaning_code: begin save_scanner_status:=scanner_status; - scanner_status:=normal; get_token; scanner_status:=save_scanner_status; - end; -@y -@ @= -KANJI(cx):=0; -case c of -number_code,roman_numeral_code, -kansuji_code,euc_code,sjis_code,jis_code,kuten_code: scan_int; -string_code, meaning_code: begin save_scanner_status:=scanner_status; - scanner_status:=normal; get_token; - if (cur_cmd=kanji)or(cur_cmd=kana)or(cur_cmd=other_kchar) then {wchar_token} - KANJI(cx):=cur_tok; - scanner_status:=save_scanner_status; - end; -@z - -@x [27.471] l.9587 - pTeX: convert KANJI code continue -@ @= -case c of -number_code: print_int(cur_val); -roman_numeral_code: print_roman_int(cur_val); -string_code:if cur_cs<>0 then sprint_cs(cur_cs) - else print_char(cur_chr); -@y -@ @= -case c of -number_code: print_int(cur_val); -roman_numeral_code: print_roman_int(cur_val); -jis_code: begin - if (proc_kanji_code=sjis_enc) then cur_val:=JIStoSJIS(cur_val) - else cur_val:=JIStoEUC(cur_val); - print_int(cur_val); end; -euc_code: begin - if (proc_kanji_code=sjis_enc) then cur_val:=EUCtoSJIS(cur_val) - else do_nothing; - print_int(cur_val); end; -sjis_code: begin - if (proc_kanji_code=sjis_enc) then do_nothing - else cur_val:=SJIStoEUC(cur_val); - print_int(cur_val); end; -kuten_code: begin - if (proc_kanji_code=sjis_enc) then cur_val:=KUTENtoSJIS(cur_val) - else cur_val:=KUTENtoEUC(cur_val); - print_int(cur_val); end; -kansuji_code: print_kansuji(cur_val); -string_code:if cur_cs<>0 then sprint_cs(cur_cs) - else if KANJI(cx)=0 then print_char(cur_chr) - else print_kanji(cx); -@z - -@x [28.487] l.9852 - pTeX: iftdir, ifydir, iftbox, ifybox -@d if_case_code=16 { `\.{\\ifcase}' } -@y -@d if_case_code=16 { `\.{\\ifcase}' } -@d if_tdir_code=17 { `\.{\\iftdir}' } -@d if_ydir_code=18 { `\.{\\ifydir}' } -@d if_mdir_code=19 { `\.{\\ifmdir}' } -@d if_tbox_code=20 { `\.{\\iftbox}' } -@d if_ybox_code=21 { `\.{\\ifybox}' } -@z - -@x [28.487] l.9887 - pTeX: iftdir, ifydir, iftbox, ifybox -primitive("ifcase",if_test,if_case_code); -@!@:if_case_}{\.{\\ifcase} primitive@> -@y -primitive("ifcase",if_test,if_case_code); -@!@:if_case_}{\.{\\ifcase} primitive@> -primitive("iftdir",if_test,if_tdir_code); -@!@:if_tdir_}{\.{\\iftdir} primitive@> -primitive("ifydir",if_test,if_ydir_code); -@!@:if_ydir_}{\.{\\ifydir} primitive@> -primitive("ifmdir",if_test,if_mdir_code); -@!@:if_mdir_}{\.{\\ifmdir} primitive@> -primitive("iftbox",if_test,if_tbox_code); -@!@:if_tbox_}{\.{\\iftbox} primitive@> -primitive("ifybox",if_test,if_ybox_code); -@!@:if_ybox_}{\.{\\ifybox} primitive@> -@z - -@x [28.488] l.9907 - pTeX: iftdir, ifydir, iftbox, ifybox - if_case_code:print_esc("ifcase"); -@y - if_case_code:print_esc("ifcase"); - if_tdir_code:print_esc("iftdir"); - if_ydir_code:print_esc("ifydir"); - if_mdir_code:print_esc("ifmdir"); - if_tbox_code:print_esc("iftbox"); - if_ybox_code:print_esc("ifybox"); -@z - -@x [28.501] l.10073 - pTeX: iftdir, ifydir, iftbox, ifybox -if_void_code, if_hbox_code, if_vbox_code: @; -@y -if_tdir_code: b:=(abs(direction)=dir_tate); -if_ydir_code: b:=(abs(direction)=dir_yoko); -if_mdir_code: b:=(direction<0); -if_void_code, if_hbox_code, if_vbox_code, if_tbox_code, if_ybox_code: - @; -@z - -@x [28.505] l.10118 - pTeX: Test box register status : iftbox, ifybox -if this_if=if_void_code then b:=(p=null) -else if p=null then b:=false -else if this_if=if_hbox_code then b:=(type(p)=hlist_node) -else b:=(type(p)=vlist_node); -@y -if this_if=if_void_code then b:=(p=null) -else if p=null then b:=false -else begin - if type(p)=dir_node then p:=list_ptr(p); - if this_if=if_hbox_code then b:=(type(p)=hlist_node) - else if this_if=if_vbox_code then b:=(type(p)=vlist_node) - else if this_if=if_tbox_code then b:=(box_dir(p)=dir_tate) - else b:=(box_dir(p)=dir_yoko); - end -@z - -@x [28.502] l.10138 - pTeX: ifx : Test character : KANJI character -if (cur_cmd>active_char)or(cur_chr>255) then {not a character} - begin m:=relax; n:=256; - end -else begin m:=cur_cmd; n:=cur_chr; - end; -get_x_token_or_active_char; -if (cur_cmd>active_char)or(cur_chr>255) then - begin cur_cmd:=relax; cur_chr:=256; - end; -@y -if (cur_cmd=kanji)or(cur_cmd=kana)or(cur_cmd=other_kchar) then - begin m:=cur_cmd; n:=cur_chr; - end -else if (cur_cmd>active_char)or(cur_chr>255) then - begin m:=relax; n:=256; - end -else begin m:=cur_cmd; n:=cur_chr; - end; -get_x_token_or_active_char; -if (cur_cmd=kanji)or(cur_cmd=kana)or(cur_cmd=other_kchar) then - begin cur_cmd:=cur_cmd; - end {dummy} -else if (cur_cmd>active_char)or(cur_chr>255) then - begin cur_cmd:=relax; cur_chr:=256; - end; -@z - -@x [29.523] l.10571 - pTeX: xord -for j:=1 to n do append_to_name(xord[TEX_format_default[j]]); -for j:=a to b do append_to_name(buffer[j]); -for j:=format_default_length-format_ext_length+1 to format_default_length do - append_to_name(xord[TEX_format_default[j]]); -@y -if name_of_file then libc_free (name_of_file); -name_of_file := xmalloc (1 + n + (b - a + 1) + format_ext_length + 1); -for j:=1 to n do append_to_name(xord[TEX_format_default[j]]); -for j:=a to b do append_to_name(buffer[j]); -for j:=format_default_length-format_ext_length+1 to format_default_length do - append_to_name(xord[TEX_format_default[j]]); -@z - -@x [29.526] l.10668 - pTeX: scan file name -loop@+begin if (cur_cmd>other_char)or(cur_chr>255) then {not a character} - begin back_input; goto done; - end; - {If |cur_chr| is a space and we're not scanning a token list, check - whether we're at the end of the buffer. Otherwise we end up adding - spurious spaces to file names in some cases.} - if (cur_chr=" ") and (state<>token_list) and (loc>limit) then goto done; - if not more_name(cur_chr) then goto done; - get_x_token; - end; -done: end_name; name_in_progress:=false; -@y -skip_mode:=false; -loop@+begin - if (cur_cmd=kanji)or(cur_cmd=kana)or(cur_cmd=other_kchar) then {is kanji} - begin str_room(2); - append_char(cur_chr div 256); {kanji upper byte} - append_char(cur_chr mod 256); {kanji lower byte} - end - else if (cur_cmd>other_char)or(cur_chr>255) then {not a alphabet} - begin back_input; goto done; - end - {If |cur_chr| is a space and we're not scanning a token list, check - whether we're at the end of the buffer. Otherwise we end up adding - spurious spaces to file names in some cases.} - else if ((cur_chr=" ") and (state<>token_list) and (loc>limit)) or not more_name(cur_chr) then goto done; - get_x_token; - end; -done: end_name; name_in_progress:=false; -skip_mode:=true; -@z - -@x l.10797 - pTeX -if enctex_enabled_p then - begin wlog_cr; wlog(encTeX_banner); wlog(', reencoding enabled'); - if translate_filename then - begin wlog_cr; - wlog(' (\xordcode, \xchrcode, \xprncode overridden by TCX)'); - end; - end; -@y -@z - -@x [29.536] l.10834 - pTeX: -begin -if src_specials_p or file_line_error_style_p or parse_first_line_p -then - wlog(banner_k) -else - wlog(banner); -@y -begin -if src_specials_p or file_line_error_style_p or parse_first_line_p -then - wlog(banner_k) -else - wlog(banner); -wlog(' ('); -case proc_kanji_code of - jis_enc: wlog('jis'); - euc_enc: wlog('euc'); - sjis_enc: wlog('sjis'); - othercases wterm('?'); -endcases; -wlog(')'); -@z - -@x [30.560] l.10968 - pTeX: -This is called BigEndian order. -@!@^BigEndian order@> -@y -This is called BigEndian order. -@!@^BigEndian order@> - -We use to get \TeX\ knowledge about KANJI fonts from \.{JFM} files. -The \.{JFM} format holds more two 16-bit integers ,|id| and |nt|, -at the top of the file. -$$\vbox{\halign{\hfil#&$\null=\null$#\hfil\cr -|id|&identification code of the file;\cr -|nt|&number of words in the |char_type| table;\cr}}$$ -The identification byte, |id| equals~11 or~9. When \TeX read a font file, -the |id| equals~11 or~9 then the font is the \.{JFM}, othercases it is -the \.{TFM} file. The \.{TFM} holds |lf| at the same postion of |id|, -usually it take a larger number than~9 or~11. -The |nt| is nonngative and less than $2^{15}$. - -We must have |ec=0|, -$$\hbox{|lf=7+lh+nt+(ec-bc+1)+nw+nh+nd+ni+nl+nk+ne+np|.}$$ - -@d yoko_jfm_id=11 {for `yoko-kumi' fonts} -@d tate_jfm_id=9 {for `tate-kumi' fonts} -@z - -@x [30.544] l.11085 - pTeX: gk_tag -operation looks for both |list_tag| and |ext_tag|. -@y -operation looks for both |list_tag| and |ext_tag|. - -If the \.{JFM}, the |lig_tag| is called |gk_tag|. The |gk_tag| means that -this character has a glue/kerning program starting at position |remainder| -in the |glue_kern| array. And a \.{JFM} not used |tag=2| and |tag=3|. -@z - -@x [30.544] l.11088 - pTeX: gk_tag -@d lig_tag=1 {character has a ligature/kerning program} -@y -@d lig_tag=1 {character has a ligature/kerning program} -@d gk_tag=1 {character has a glue/kerning program} -@z - -@x [30.549] l.11228 - pTeX: -@= -@!font_info: ^fmemory_word; -@y -@= -@!font_info: ^memory_word; {pTeX: use halfword for |char_type| table.} -@!font_dir: ^eight_bits; - {pTeX: direction of fonts, 0 is default, 1 is Yoko, 2 is Tate} -@!font_num_ext: ^integer; - {pTeX: number of the |char_type| table.} -@z - -@x [30.550] l.11270 - pTeX: -@!char_base: ^integer; - {base addresses for |char_info|} -@y -@!char_base: ^integer; - {base addresses for |char_info|} -@!ctype_base: ^integer; - {pTeX: base addresses for KANJI character type parameters} -@z - -@x [30.554] l.11373 - pTeX: -@d orig_char_info_end(#)==#].qqqq -@d orig_char_info(#)==font_info[char_base[#]+orig_char_info_end -@y -@d orig_char_info_end(#)==#].qqqq -@d orig_char_info(#)==font_info[char_base[#]+orig_char_info_end -@# -@d kchar_code_end(#)==#].hh.rh -@d kchar_code(#)==font_info[ctype_base[#]+kchar_code_end -@d kchar_type_end(#)==#].hh.lhfield -@d kchar_type(#)==font_info[ctype_base[#]+kchar_type_end -@z - -@x [30.557] l.11413 - pTeX: glue_kern_start -@d lig_kern_start(#)==lig_kern_base[#]+rem_byte {beginning of lig/kern program} -@y -@d lig_kern_start(#)==lig_kern_base[#]+rem_byte {beginning of lig/kern program} -@d glue_kern_start(#)==lig_kern_base[#]+rem_byte - {beginning of glue/kern program} -@z - -@x [30.560] l.11457 - pTeX: jfm_flag, jfm_id, nt, cx -var k:font_index; {index into |font_info|} -@y -var k:font_index; {index into |font_info|} -@!jfm_flag:dir_default..dir_tate; {direction of the \.{JFM}} -@!nt:halfword; {number of the |char_type| tables} -@!cx:KANJI_code; {kanji code} -@z - -@x [30.565] l.11548 - pTeX: read tfm size -@ @= -begin read_sixteen(lf); -fget; read_sixteen(lh); -fget; read_sixteen(bc); -fget; read_sixteen(ec); -if (bc>ec+1)or(ec>255) then abort; -if bc>255 then {|bc=256| and |ec=255|} - begin bc:=1; ec:=0; - end; -fget; read_sixteen(nw); -fget; read_sixteen(nh); -fget; read_sixteen(nd); -fget; read_sixteen(ni); -fget; read_sixteen(nl); -fget; read_sixteen(nk); -fget; read_sixteen(ne); -fget; read_sixteen(np); -if lf<>6+lh+(ec-bc+1)+nw+nh+nd+ni+nl+nk+ne+np then abort; -end -@y -@ @= -begin read_sixteen(lf); -fget; read_sixteen(lh); -if lf=yoko_jfm_id then - begin jfm_flag:=dir_yoko; nt:=lh; - fget; read_sixteen(lf); - fget; read_sixteen(lh); - end -else if lf=tate_jfm_id then - begin jfm_flag:=dir_tate; nt:=lh; - fget; read_sixteen(lf); - fget; read_sixteen(lh); - end -else begin jfm_flag:=dir_default; nt:=0; - end; -fget; read_sixteen(bc); -fget; read_sixteen(ec); -if (bc>ec+1)or(ec>255) then abort; -if bc>255 then {|bc=256| and |ec=255|} - begin bc:=1; ec:=0; - end; -fget; read_sixteen(nw); -fget; read_sixteen(nh); -fget; read_sixteen(nd); -fget; read_sixteen(ni); -fget; read_sixteen(nl); -fget; read_sixteen(nk); -fget; read_sixteen(ne); -fget; read_sixteen(np); -if jfm_flag<>dir_default then - begin if lf<>7+lh+nt+(ec-bc+1)+nw+nh+nd+ni+nl+nk+ne+np then abort - end -else - begin if lf<>6+lh+(ec-bc+1)+nw+nh+nd+ni+nl+nk+ne+np then abort - end -end -@z - -@x [30.566] l.11574 - pTeX: set font_dir & font_num_ext -@= -lf:=lf-6-lh; {|lf| words should be loaded into |font_info|} -if np<7 then lf:=lf+7-np; {at least seven parameters will appear} -if (font_ptr=font_max)or(fmem_ptr+lf>font_mem_size) then - @; -f:=font_ptr+1; -char_base[f]:=fmem_ptr-bc; -width_base[f]:=char_base[f]+ec+1; -height_base[f]:=width_base[f]+nw; -depth_base[f]:=height_base[f]+nh; -italic_base[f]:=depth_base[f]+nd; -lig_kern_base[f]:=italic_base[f]+ni; -kern_base[f]:=lig_kern_base[f]+nl-kern_base_offset; -exten_base[f]:=kern_base[f]+kern_base_offset+nk; -param_base[f]:=exten_base[f]+ne -@y -@= -if jfm_flag<>dir_default then - lf:=lf-7-lh {If \.{JFM}, |lf| holds more two-16bit records than \.{TFM}} -else - lf:=lf-6-lh; {|lf| words should be loaded into |font_info|} -if np<7 then lf:=lf+7-np; {at least seven parameters will appear} -if (font_ptr=font_max)or(fmem_ptr+lf>font_mem_size) then - @; -f:=font_ptr+1; -font_dir[f]:=jfm_flag; -font_num_ext[f]:=nt; -ctype_base[f]:=fmem_ptr; -char_base[f]:=ctype_base[f]+nt-bc; -width_base[f]:=char_base[f]+ec+1; -height_base[f]:=width_base[f]+nw; -depth_base[f]:=height_base[f]+nh; -italic_base[f]:=depth_base[f]+nd; -lig_kern_base[f]:=italic_base[f]+ni; -kern_base[f]:=lig_kern_base[f]+nl-kern_base_offset; -exten_base[f]:=kern_base[f]+kern_base_offset+nk; -param_base[f]:=exten_base[f]+ne; -@z - -@x [30.569] l.11619 - pTeX: read char_type -@ @= -for k:=fmem_ptr to width_base[f]-1 do - begin store_four_quarters(font_info[k].qqqq); -@y -@ @= -if jfm_flag<>dir_default then - for k:=ctype_base[f] to ctype_base[f]+nt-1 do - begin - fget; read_sixteen(cx); font_info[k].hh.rh:=tokanji(cx); {|kchar_code|} - fget; read_sixteen(cx); font_info[k].hh.lhfield:=tonum(cx); {|kchar_type|} - end; -for k:=char_base[f]+bc to width_base[f]-1 do - begin store_four_quarters(font_info[k].qqqq); -@z - -@x [30.570] l.11638 - pTeX: -@d current_character_being_worked_on==k+bc-fmem_ptr -@y -@d current_character_being_worked_on==k-char_base[f] -@z - -@x [30.573] l.11704 - pTeX: jfm - if a>128 then - begin if 256*c+d>=nl then abort; - if a=255 then if k=lig_kern_base[f] then bchar:=b; - end - else begin if b<>bchar then check_existence(b); - if c<128 then check_existence(d) {check ligature} - else if 256*(c-128)+d>=nk then abort; {check kern} - if a<128 then if k-lig_kern_base[f]+a+1>=nl then abort; - end; - end; -@y - if a>128 then - begin if 256*c+d>=nl then abort; - if a=255 then if k=lig_kern_base[f] then bchar:=b; - end - else begin if b<>bchar then check_existence(b); - if c<128 then begin - if jfm_flag<>dir_default then begin if d>=ne then abort; end - else check_existence(d); {check ligature} - end else if 256*(c-128)+d>=nk then abort; {check kern} - if a<128 then if k-lig_kern_base[f]+a+1>=nl then abort; - end; - end; -@z - -@x [30.574] l.11720 - pTeX: read jfm exten -for k:=exten_base[f] to param_base[f]-1 do - begin store_four_quarters(font_info[k].qqqq); -@y -if jfm_flag<>dir_default then - for k:=exten_base[f] to param_base[f]-1 do - store_scaled(font_info[k].sc) {NOTE: this area subst for glue program} -else for k:=exten_base[f] to param_base[f]-1 do - begin store_four_quarters(font_info[k].qqqq); -@z - -@x [30.576] l.11765 - pTeX: adjust ctype_base -adjust(char_base); adjust(width_base); adjust(lig_kern_base); -@y -adjust(ctype_base); -adjust(char_base); adjust(width_base); adjust(lig_kern_base); -@z - -@x [30.577] l.11778 - pTeX: jfont, tfont -if cur_cmd=def_font then f:=cur_font -@y -if cur_cmd=def_jfont then f:=cur_jfont -else if cur_cmd=def_tfont then f:=cur_tfont -else if cur_cmd=def_font then f:=cur_font -@z - -@x -@p procedure char_warning(@!f:internal_font_number;@!c:eight_bits); -begin if tracing_lost_chars>0 then - begin begin_diagnostic; - print_nl("Missing character: There is no "); -@.Missing character@> - print_ASCII(c); print(" in font "); - slow_print(font_name[f]); print_char("!"); end_diagnostic(false); - end; -end; -@y -@d print_lc_hex(#)==l:=#; - if l<10 then print_char(l+"0")@+else print_char(l-10+"a") - -@p procedure char_warning(@!f:internal_font_number;@!c:eight_bits); -var @!l:0..255; {small indices or counters} -begin if tracing_lost_chars>0 then - begin begin_diagnostic; - print_nl("Missing character: There is no "); -@.Missing character@> - if (c<" ")or(c>"~") then - begin print_char("^"); print_char("^"); - if c<64 then print_char(c+64) - else if c<128 then print_char(c-64) - else begin print_lc_hex(c div 16); print_lc_hex(c mod 16); end - end - else print_ASCII(c); - print(" in font "); - slow_print(font_name[f]); print_char("!"); end_diagnostic(false); - end; -end; -@z - -@x [31.586] l.12189 - pTeX: define set2 -@d set1=128 {typeset a character and move right} -@y -@d set1=128 {typeset a character and move right} -@d set2=129 {typeset a character and move right} -@z -@x [31.586] l.12214 - pTeX: define dirchg -@d post_post=249 {postamble ending} -@y -@d post_post=249 {postamble ending} -@d dirchg=255 {direction change} -@z - -@x [31.587] l.12246 - pTeX: ex_id_byte -@d id_byte=2 {identifies the kind of \.{DVI} files described here} -@y -@d id_byte=2 {identifies the kind of \.{DVI} files described here} -@d ex_id_byte=3 {identifies the kind of extended \.{DVI} files} -@z - -@x [32.590] l.12329 - pTeX: ex_id_byte: This dvi is extended! -@ The last part of the postamble, following the |post_post| byte that -signifies the end of the font definitions, contains |q|, a pointer to the -|post| command that started the postamble. An identification byte, |i|, -comes next; this currently equals~2, as in the preamble. -@y -@ The last part of the postamble, following the |post_post| byte that -signifies the end of the font definitions, contains |q|, a pointer to the -|post| command that started the postamble. An identification byte, |i|, -comes next; this equals~2 or~3. If not used p\TeX primitives then the -identification byte equals~2, othercase this is set to~3. -@z - -@x [32.592] l.12405 - pTeX: - {character and font in current |char_node|} -@!c:quarterword; -@!f:internal_font_number; -@y - {character and font in current |char_node|} -@!c:quarterword; -@!f:internal_font_number; -@!dir_used:boolean; {Is this dvi extended?} -@z - -@x [32.593] l.12414 - pTeX: dir_used: Is this dvi extended? -doing_leaders:=false; dead_cycles:=0; cur_s:=-1; -@y -doing_leaders:=false; dead_cycles:=0; cur_s:=-1; dir_used:=false; -@z - -@x [32.617] l.12846 - pTeX: Initialize dvi_dir as shipout begins -dvi_h:=0; dvi_v:=0; cur_h:=h_offset; dvi_f:=null_font; -@y -dvi_h:=0; dvi_v:=0; cur_h:=h_offset; dvi_f:=null_font; -dvi_dir:=dir_yoko; cur_dir:=dvi_dir; -@z - -@x [32.619] l.12892 - pTeX: hlist_out Kanji, disp_node -procedure hlist_out; {output an |hlist_node| box} -label reswitch, move_past, fin_rule, next_p, continue, found; -var base_line: scaled; {the baseline coordinate for this box} -@y -procedure hlist_out; {output an |hlist_node| box} -label reswitch, move_past, fin_rule, next_p, continue, found; -var base_line: scaled; {the baseline coordinate for this box} -@!disp: scaled; {displacement} -@!save_dir:eight_bits; {what |dvi_dir| should pop to} -@!jc:KANJI_code; {temporary register for KANJI codes} -@!ksp_ptr:pointer; {position of |auto_spacing_glue| in the hlist} -@z -@x [32.619] l.12913 - pTeX: hlist_out Kanji, disp_node -incr(cur_s); -if cur_s>0 then dvi_out(push); -if cur_s>max_push then max_push:=cur_s; -save_loc:=dvi_offset+dvi_ptr; base_line:=cur_v; left_edge:=cur_h; -@y -ksp_ptr:=space_ptr(this_box); -incr(cur_s); -if cur_s>0 then dvi_out(push); -if cur_s>max_push then max_push:=cur_s; -save_loc:=dvi_offset+dvi_ptr; -synch_dir; -base_line:=cur_v; left_edge:=cur_h; disp:=0; -@z - -@x [32.622] l.12945 - pTeX: chain -@= -reswitch: if is_char_node(p) then - begin synch_h; synch_v; - repeat f:=font(p); c:=character(p); - if f<>dvi_f then @; - if font_ec[f]>=qo(c) then if font_bc[f]<=qo(c) then - if char_exists(orig_char_info(f)(c)) then {N.B.: not |char_info|} - begin if c>=qi(128) then dvi_out(set1); - dvi_out(qo(c));@/ - cur_h:=cur_h+char_width(f)(orig_char_info(f)(c)); - goto continue; - end; - if mltex_enabled_p then - @; -continue: - p:=link(p); - until not is_char_node(p); - dvi_h:=cur_h; - end -else @ -@y -@= -reswitch: if is_char_node(p) then - begin synch_h; synch_v; - chain:=false; - repeat f:=font(p); c:=character(p); - if f<>dvi_f then @; - if font_dir[f]=dir_default then - begin chain:=false; - if font_ec[f]>=qo(c) then if font_bc[f]<=qo(c) then - if char_exists(orig_char_info(f)(c)) then {N.B.: not |char_info|} - begin if c>=qi(128) then dvi_out(set1); - dvi_out(qo(c));@/ - cur_h:=cur_h+char_width(f)(orig_char_info(f)(c)); - goto continue; - end; - if mltex_enabled_p then - @; -continue: - end - else - begin if chain=false then chain:=true - else begin cur_h:=cur_h+width(ksp_ptr); - if g_sign<>normal then - begin if g_sign=stretching then - begin if stretch_order(ksp_ptr)=g_order then - cur_h:=cur_h+round(float(glue_set(this_box))*stretch(ksp_ptr)); -@^real multiplication@> - end - else - begin if shrink_order(ksp_ptr)=g_order then - cur_h:=cur_h-round(float(glue_set(this_box))*shrink(ksp_ptr)); -@^real multiplication@> - end; - end; - synch_h; - end; - p:=link(p); - if (proc_kanji_code=sjis_enc) then jc:=SJIStoJIS(KANJI(info(p))) - else jc:=EUCtoJIS(KANJI(info(p))); - dvi_out(set2); dvi_out(Hi(jc)); dvi_out(Lo(jc)); - cur_h:=cur_h+char_width(f)(orig_char_info(f)(c)); {not |jc|} - end; - dvi_h:=cur_h; p:=link(p); - until not is_char_node(p); - chain:=false; - end -else @ -@z - -@x [32.623] l.12982 - pTeX: disp_node, dir_node -@ @= -begin case type(p) of -hlist_node,vlist_node:@; -rule_node: begin rule_ht:=height(p); rule_dp:=depth(p); rule_wd:=width(p); - goto fin_rule; - end; -whatsit_node: @; -@y -@ @= -begin case type(p) of -hlist_node,vlist_node,dir_node:@; -rule_node: begin rule_ht:=height(p); rule_dp:=depth(p); rule_wd:=width(p); - goto fin_rule; - end; -whatsit_node: @; -disp_node: begin disp:=disp_dimen(p); cur_v:=base_line+disp; end; -@z - -@x [32.624] l.13000 - pTeX: output a box(and dir_node) with disp -@ @= -if list_ptr(p)=null then cur_h:=cur_h+width(p) -else begin save_h:=dvi_h; save_v:=dvi_v; - cur_v:=base_line+shift_amount(p); {shift the box down} - temp_ptr:=p; edge:=cur_h; - if type(p)=vlist_node then vlist_out@+else hlist_out; - dvi_h:=save_h; dvi_v:=save_v; - cur_h:=edge+width(p); cur_v:=base_line; - end -@y -@ @= -if list_ptr(p)=null then cur_h:=cur_h+width(p) -else begin save_h:=dvi_h; save_v:=dvi_v; save_dir:=dvi_dir; - cur_v:=base_line+disp+shift_amount(p); {shift the box down} - temp_ptr:=p; edge:=cur_h; - case type(p) of - hlist_node:hlist_out; - vlist_node:vlist_out; - dir_node:dir_out; - endcases; - dvi_h:=save_h; dvi_v:=save_v; dvi_dir:=save_dir; - cur_h:=edge+width(p); cur_v:=base_line+disp; cur_dir:=save_dir; - end -@z - -@x [32.625] l.13010 - pTeX: Output a rule with disp -@ @= -if is_running(rule_ht) then rule_ht:=height(this_box); -if is_running(rule_dp) then rule_dp:=depth(this_box); -@y -@ @= -if is_running(rule_ht) then rule_ht:=height(this_box)+disp; -if is_running(rule_dp) then rule_dp:=depth(this_box)-disp; -@z - -@x [32.629] l.13103 - pTeX: Output a leader box(and dir_node) with disp -@= -begin cur_v:=base_line+shift_amount(leader_box); synch_v; save_v:=dvi_v;@/ -synch_h; save_h:=dvi_h; temp_ptr:=leader_box; -outer_doing_leaders:=doing_leaders; doing_leaders:=true; -if type(leader_box)=vlist_node then vlist_out@+else hlist_out; -doing_leaders:=outer_doing_leaders; -dvi_v:=save_v; dvi_h:=save_h; cur_v:=base_line; -cur_h:=save_h+leader_wd+lx; -end -@y -@= -begin cur_v:=base_line+disp+shift_amount(leader_box); synch_v; save_v:=dvi_v;@/ -synch_h; save_h:=dvi_h; save_dir:=dvi_dir; temp_ptr:=leader_box; -outer_doing_leaders:=doing_leaders; doing_leaders:=true; -case type(leader_box) of - hlist_node:hlist_out; - vlist_node:vlist_out; - dir_node:dir_out; -endcases; -doing_leaders:=outer_doing_leaders; -dvi_v:=save_v; dvi_h:=save_h; dvi_dir:=save_dir; -cur_v:=base_line; cur_h:=save_h+leader_wd+lx; cur_dir:=save_dir; -end -@z - -@x [32.630] l.13133 - pTeX: vlist_out -begin cur_g:=0; cur_glue:=float_constant(0); -this_box:=temp_ptr; g_order:=glue_order(this_box); -g_sign:=glue_sign(this_box); p:=list_ptr(this_box); -incr(cur_s); -if cur_s>0 then dvi_out(push); -if cur_s>max_push then max_push:=cur_s; -save_loc:=dvi_offset+dvi_ptr; left_edge:=cur_h; cur_v:=cur_v-height(this_box); -@y -@!save_dir:integer; {what |dvi_dir| should pop to} -begin cur_g:=0; cur_glue:=float_constant(0); -this_box:=temp_ptr; g_order:=glue_order(this_box); -g_sign:=glue_sign(this_box); p:=list_ptr(this_box); -incr(cur_s); -if cur_s>0 then dvi_out(push); -if cur_s>max_push then max_push:=cur_s; -save_loc:=dvi_offset+dvi_ptr; -synch_dir; -left_edge:=cur_h; cur_v:=cur_v-height(this_box); -@z - -@x [32.632] l.13155 - pTeX: output non-char-node -@ @= -begin case type(p) of -hlist_node,vlist_node:@; -rule_node: begin rule_ht:=height(p); rule_dp:=depth(p); rule_wd:=width(p); - goto fin_rule; - end; -@y -@ @= -begin case type(p) of -hlist_node,vlist_node,dir_node: @; -rule_node: begin rule_ht:=height(p); rule_dp:=depth(p); rule_wd:=width(p); - goto fin_rule; - end; -@z - -@x [32.633] l.13175 - pTeX: Output a box in a vlist -@= -if list_ptr(p)=null then cur_v:=cur_v+height(p)+depth(p) -else begin cur_v:=cur_v+height(p); synch_v; - save_h:=dvi_h; save_v:=dvi_v; - cur_h:=left_edge+shift_amount(p); {shift the box right} - temp_ptr:=p; - if type(p)=vlist_node then vlist_out@+else hlist_out; - dvi_h:=save_h; dvi_v:=save_v; - cur_v:=save_v+depth(p); cur_h:=left_edge; - end -@y -@= -if list_ptr(p)=null then cur_v:=cur_v+height(p)+depth(p) -else begin cur_v:=cur_v+height(p); synch_v; - save_h:=dvi_h; save_v:=dvi_v; save_dir:=dvi_dir; - cur_h:=left_edge+shift_amount(p); {shift the box right} - temp_ptr:=p; - case type(p) of - hlist_node:hlist_out; - vlist_node:vlist_out; - dir_node:dir_out; - endcases; - dvi_h:=save_h; dvi_v:=save_v; dvi_dir:=save_dir; - cur_v:=save_v+depth(p); cur_h:=left_edge; cur_dir:=save_dir; - end -@z - -@x [32.637] l.13256 - pTeX: Output a leader in a vlist -@= -begin cur_h:=left_edge+shift_amount(leader_box); synch_h; save_h:=dvi_h;@/ -cur_v:=cur_v+height(leader_box); synch_v; save_v:=dvi_v; -temp_ptr:=leader_box; -outer_doing_leaders:=doing_leaders; doing_leaders:=true; -if type(leader_box)=vlist_node then vlist_out@+else hlist_out; -doing_leaders:=outer_doing_leaders; -dvi_v:=save_v; dvi_h:=save_h; cur_h:=left_edge; -cur_v:=save_v-height(leader_box)+leader_ht+lx; -end -@y -@= -begin cur_h:=left_edge+shift_amount(leader_box); synch_h; save_h:=dvi_h;@/ -cur_v:=cur_v+height(leader_box); synch_v; save_v:=dvi_v; save_dir:=dvi_dir; -temp_ptr:=leader_box; -outer_doing_leaders:=doing_leaders; doing_leaders:=true; -case type(leader_box) of - hlist_node:hlist_out; - vlist_node:vlist_out; - dir_node:dir_out; -endcases; -doing_leaders:=outer_doing_leaders; -dvi_v:=save_v; dvi_h:=save_h; dvi_dir:=save_dir; -cur_h:=left_edge; cur_v:=save_v-height(leader_box)+leader_ht+lx; -cur_dir:=save_dir; -end -@z - -@x [32.638] l.13270 - pTeX: ship out -@p procedure ship_out(@!p:pointer); {output the box |p|} -label done; -var page_loc:integer; {location of the current |bop|} -@y -@p procedure ship_out(@!p:pointer); {output the box |p|} -label done; -var page_loc:integer; {location of the current |bop|} -@!del_node:pointer; {used when delete the |dir_node| continued box} -@z -@x [32.640] l.13294 - pTeX: ship out -@; -@y -if type(p)=dir_node then - begin del_node:=p; p:=list_ptr(p); - delete_glue_ref(space_ptr(del_node)); - delete_glue_ref(xspace_ptr(del_node)); - free_node(del_node,box_node_size); - end; -flush_node_list(link(p)); link(p):=null; -if box_dir(p)<>dir_yoko then p:=new_dir_node(p,dir_yoko); -@; -@z - -@x [32.641] l.13327 - pTeX: dir_node -if type(p)=vlist_node then vlist_out@+else hlist_out; -@y -case type(p) of - hlist_node:hlist_out; - vlist_node:vlist_out; - dir_node:dir_out; -endcases; -@z - -@x [33.642] l.13394 - pTeX: postamble's id_byte - @; - dvi_out(post_post); dvi_four(last_bop); dvi_out(id_byte);@/ -@y - @; - dvi_out(post_post); dvi_four(last_bop); - if dir_used then dvi_out(ex_id_byte) else dvi_out(id_byte);@/ -@z - -@x [33.647] l.13515 - pTeX: cur_kanji_skip, cur_xkanji_skip, last_disp -@< Glob...@>= -@!adjust_tail:pointer; {tail of adjustment list} -@y -@< Glob...@>= -@!adjust_tail:pointer; {tail of adjustment list} -@!last_disp:scaled; {displacement at end of list} -@!cur_kanji_skip:pointer; -@!cur_xkanji_skip:pointer; -@z - -@x [33.648] l.13518 - pTeX: cur_kanji_skip, cur_xkanji_skip -@ @=adjust_tail:=null; last_badness:=0; -@y -@ @=adjust_tail:=null; last_badness:=0; - cur_kanji_skip:=zero_glue; cur_xkanji_skip:=zero_glue; -{ koko - |incr(glue_ref_count(cur_kanji_skip));| - |incr(glue_ref_count(cur_xkanji_skip));| -} -@z - -@x [33.649] l.13522 - pTeX: hpack -@p function hpack(@!p:pointer;@!w:scaled;@!m:small_number):pointer; -label reswitch, common_ending, exit; -var r:pointer; {the box node that will be returned} -@y -@p function hpack(@!p:pointer;@!w:scaled;@!m:small_number):pointer; -label reswitch, common_ending, exit; -var r:pointer; {the box node that will be returned} -@!k:pointer; {points to a |kanji_space| specification} -@!disp:scaled; {displacement} -@z - -@x [33.649] l.13533 - pTeX: hpack -begin last_badness:=0; r:=get_node(box_node_size); type(r):=hlist_node; -subtype(r):=min_quarterword; shift_amount(r):=0; -q:=r+list_offset; link(q):=p;@/ -h:=0; @; -while p<>null do @; -if adjust_tail<>null then link(adjust_tail):=null; -height(r):=h; depth(r):=d;@/ -@; -common_ending: @; -exit: hpack:=r; -end; -@y -begin last_badness:=0; r:=get_node(box_node_size); type(r):=hlist_node; -subtype(r):=min_quarterword; shift_amount(r):=0; -space_ptr(r):=cur_kanji_skip; xspace_ptr(r):=cur_xkanji_skip; -add_glue_ref(cur_kanji_skip); add_glue_ref(cur_xkanji_skip); -k:=cur_kanji_skip; -q:=r+list_offset; link(q):=p;@/ -h:=0; @; -disp:=0; -while p<>null do @; -if adjust_tail<>null then link(adjust_tail):=null; -height(r):=h; depth(r):=d;@/ -@; -common_ending: - @; -exit: last_disp:=disp; hpack:=r; -end; -@z - -@x [33.651] l.13556 - pTeX: dir_node, disp_node, reset chain -@ @= -@^inner loop@> -begin reswitch: while is_char_node(p) do - @; -if p<>null then - begin case type(p) of - hlist_node,vlist_node,rule_node,unset_node: - @; - ins_node,mark_node,adjust_node: if adjust_tail<>null then - @; - whatsit_node:@; - glue_node:@; - kern_node,math_node: x:=x+width(p); - ligature_node: @; - othercases do_nothing - endcases;@/ - p:=link(p); - end; -end -@y -@ @= -@^inner loop@> -begin reswitch: chain:=false; -while is_char_node(p) do - @; -if p<>null then - begin case type(p) of - hlist_node,vlist_node,dir_node,rule_node,unset_node: - @; - ins_node,mark_node,adjust_node: - if adjust_tail<>null then @; - whatsit_node:@; - disp_node:disp:=disp_dimen(p); - glue_node:@; - kern_node,math_node:x:=x+width(p); - ligature_node:@; - othercases do_nothing - endcases;@/ - p:=link(p); - end; -end -@z - -@x [33.653] l.13589 - pTeX: displacement -@= -begin x:=x+width(p); -if type(p)>=rule_node then s:=0 @+else s:=shift_amount(p); -if height(p)-s>h then h:=height(p)-s; -if depth(p)+s>d then d:=depth(p)+s; -end -@y -@= -begin x:=x+width(p); -if type(p)>=rule_node then s:=disp @+else s:=shift_amount(p)+disp; -if height(p)-s>h then h:=height(p)-s; -if depth(p)+s>d then d:=depth(p)+s; -end -@z - -@x [33.654] l.13601 - pTeX: auto spacing, displacement -@= -begin f:=font(p); i:=char_info(f)(character(p)); hd:=height_depth(i); -x:=x+char_width(f)(i);@/ -s:=char_height(f)(hd);@+if s>h then h:=s; -s:=char_depth(f)(hd);@+if s>d then d:=s; -p:=link(p); -end -@y -@= -begin f:=font(p); i:=char_info(f)(character(p)); hd:=height_depth(i); -x:=x+char_width(f)(i);@/ -s:=char_height(f)(hd)-disp; if s>h then h:=s; -s:=char_depth(f)(hd)+disp; if s>d then d:=s; -if font_dir[f]<>dir_default then - begin p:=link(p); - if chain then - begin x:=x+width(k);@/ - o:=stretch_order(k); total_stretch[o]:=total_stretch[o]+stretch(k); - o:=shrink_order(k); total_shrink[o]:=total_shrink[o]+shrink(k); - end - else chain:=true; - end -else chain:=false; -p:=link(p); -end -@z - -@x [33.668] l.13779 - pTeX: vpackage -begin last_badness:=0; r:=get_node(box_node_size); type(r):=vlist_node; -subtype(r):=min_quarterword; shift_amount(r):=0; -@y -begin last_badness:=0; r:=get_node(box_node_size); type(r):=vlist_node; -subtype(r):=min_quarterword; shift_amount(r):=0; -space_ptr(r):=zero_glue; xspace_ptr(r):=zero_glue; -add_glue_ref(zero_glue); add_glue_ref(zero_glue); -@z - -@x [33.669] l.13797 - pTeX: dir_node -@ @= -begin if is_char_node(p) then confusion("vpack") -@:this can't happen vpack}{\quad vpack@> -else case type(p) of - hlist_node,vlist_node,rule_node,unset_node: - @; -@y -@ @= -begin if is_char_node(p) then confusion("vpack") -@:this can't happen vpack}{\quad vpack@> -else case type(p) of - hlist_node,vlist_node,dir_node,rule_node,unset_node: - @; -@z - -@x [34.681] l.14026 - pTeX: math noad -@d noad_size=4 {number of words in a normal noad} -@d nucleus(#)==#+1 {the |nucleus| field of a noad} -@d supscr(#)==#+2 {the |supscr| field of a noad} -@d subscr(#)==#+3 {the |subscr| field of a noad} -@y -\yskip\hang In Japanese, |math_type(q)=math_jchar| means that |fam(q)| -refers to one of the sixteen kanji font families, and |KANJI(q)| is the -internal kanji code number. -@^Japanese extentions@> - -@d noad_size=5 {number of words in a normal noad} -@d nucleus(#)==#+1 {the |nucleus| field of a noad} -@d supscr(#)==#+2 {the |supscr| field of a noad} -@d subscr(#)==#+3 {the |subscr| field of a noad} -@d kcode_noad(#)==#+4 -@d math_kcode(#)==info(#+4) {the |kanji character| field of a noad} -@d kcode_noad_nucleus(#)==#+3 -@d math_kcode_nucleus(#)==info(#+3) - {the |kanji character| field offset from nucleus} -@# -@d math_jchar=5 -@d math_text_jchar=6 -@z - -@x [34.686] l.14129 - pTeX: new_noad -mem[supscr(p)].hh:=empty_field; -new_noad:=p; -@y -mem[supscr(p)].hh:=empty_field; -mem[kcode_noad(p)].hh:=empty_field; -new_noad:=p; -@z - -@x [34.691] l.14236 - pTeX: print_fam_and_char -procedure print_fam_and_char(@!p:pointer); {prints family and character} -begin print_esc("fam"); print_int(fam(p)); print_char(" "); -print_ASCII(qo(character(p))); -@y -procedure print_fam_and_char(@!p:pointer;@!t:small_number); - {prints family and character} -var @!cx:KANJI_code; {temporary register for KANJI} -begin print_esc("fam"); print_int(fam(p)); print_char(" "); -if t=math_char then print_ASCII(qo(character(p))) -else begin KANJI(cx):=math_kcode_nucleus(p); print_kanji(cx); - end; -@z - -@x [34.692] l.14266 - pTeX: print_subsidiary_data - math_char: begin print_ln; print_current_string; print_fam_and_char(p); -@y - math_char, math_jchar: begin print_ln; print_current_string; - print_fam_and_char(p,math_type(p)); -@z - -@x [34.696] l.14327 - pTeX: print_fam_and_char -accent_noad: begin print_esc("accent"); print_fam_and_char(accent_chr(p)); -@y -accent_noad: begin print_esc("accent"); - print_fam_and_char(accent_chr(p),math_char); -@z - -@x [35.715] l.14687 - pTeX: rebox - begin if type(b)=vlist_node then b:=hpack(b,natural); - p:=list_ptr(b); - if (is_char_node(p))and(link(p)=null) then - begin f:=font(p); v:=char_width(f)(char_info(f)(character(p))); - if v<>width(b) then link(p):=new_kern(width(b)-v); - end; -@y - begin if type(b)<>hlist_node then b:=hpack(b,natural); - p:=list_ptr(b); - if is_char_node(p) then - if font_dir[font(p)]<>dir_default then - begin if link(link(p))=null then - begin f:=font(p); v:=char_width(f)(orig_char_info(f)(character(p))); - if v<>width(b) then link(link(p)):=new_kern(width(b)-v); - end - end - else if link(p)=null then - begin f:=font(p); v:=char_width(f)(orig_char_info(f)(character(p))); - if v<>width(b) then link(p):=new_kern(width(b)-v); - end; - delete_glue_ref(space_ptr(b)); delete_glue_ref(xspace_ptr(b)); -@z - -@x [36.720] l.14783 - pTeX: clean_box -function clean_box(@!p:pointer;@!s:small_number):pointer; -@y -function clean_box(@!p:pointer;@!s:small_number;@!jc:halfword):pointer; -@z - -@x [36.720] l.14790 - pTeX: clean_box -math_char: begin cur_mlist:=new_noad; mem[nucleus(cur_mlist)]:=mem[p]; - end; -@y -math_char: begin cur_mlist:=new_noad; mem[nucleus(cur_mlist)]:=mem[p]; - end; -math_jchar: begin cur_mlist:=new_noad; mem[nucleus(cur_mlist)]:=mem[p]; - math_kcode(cur_mlist):=jc; - end; -@z - -@x [36.720] l.14802 - pTeX: clean_box -found: if is_char_node(q)or(q=null) then x:=hpack(q,natural) - else if (link(q)=null)and(type(q)<=vlist_node)and(shift_amount(q)=0) then - x:=q {it's already clean} - else x:=hpack(q,natural); -@y -found: if is_char_node(q)or(q=null) then x:=hpack(q,natural) - else if (link(q)=null)and(type(q)<=dir_node)and(shift_amount(q)=0) then - x:=q {it's already clean} - else x:=hpack(q,natural); -@z - -@x [36.721] l.14814 - pTeX: skip 2nd kanji node -if is_char_node(q) then - begin r:=link(q); -@y -if is_char_node(q) then - begin if font_dir[font(q)]<>dir_default then q:=link(q); - r:=link(q); -@z - -@x [36.722] l.14833 - pTeX: fetch -else begin if (qo(cur_c)>=font_bc[cur_f])and(qo(cur_c)<=font_ec[cur_f]) then - cur_i:=orig_char_info(cur_f)(cur_c) - else cur_i:=null_character; - if not(char_exists(cur_i)) then - begin char_warning(cur_f,qo(cur_c)); - math_type(a):=empty; - end; - end; -@y -else begin if font_dir[cur_f]<>dir_default then - cur_c:=qi(get_jfm_pos(KANJI(math_kcode_nucleus(a)),cur_f)); - if (qo(cur_c)>=font_bc[cur_f])and(qo(cur_c)<=font_ec[cur_f]) then - cur_i:=orig_char_info(cur_f)(cur_c) - else cur_i:=null_character; - if not(char_exists(cur_i)) then - begin char_warning(cur_f,qo(cur_c)); - math_type(a):=empty; - end; - end; -@z - -@x [36.726] l.14892 - pTeX: mlist_to_hlist -var mlist:pointer; {beginning of the given list} -@!penalties:boolean; {should penalty nodes be inserted?} -@!style:small_number; {the given style} -@y -var mlist:pointer; {beginning of the given list} -@!penalties:boolean; {should penalty nodes be inserted?} -@!style:small_number; {the given style} -@!u:pointer; {temporary register} -@z - -@x [36.726] l.14913 - pTeX: mlist_to_hlist -@; -end; -@y -@; -p:=new_null_box; link(p):=link(temp_head); -adjust_hlist(p,false); link(temp_head):=link(p); -delete_glue_ref(space_ptr(p)); delete_glue_ref(xspace_ptr(p)); -free_node(p,box_node_size); -end; -@z - -@x [36.727] l.14928 - pTeX: free box -free_node(z,box_node_size); -@y -delete_glue_ref(space_ptr(z)); delete_glue_ref(xspace_ptr(z)); -free_node(z,box_node_size); -@z - -@x [36.730] l.14976 - pTeX: free box: disp_node -kern_node: begin math_kern(q,cur_mu); goto done_with_node; - end; -@y -kern_node: begin math_kern(q,cur_mu); goto done_with_node; - end; -disp_node: goto done_with_node; -@z - -@x [36.734] l.15046 - pTeX: make_over:clean_box - overbar(clean_box(nucleus(q),cramped_style(cur_style)),@| -@y - overbar(clean_box(nucleus(q),cramped_style(cur_style),math_kcode(q)),@| -@z - -@x [36.735] l.15055 - pTeX: make_under:clean_box -begin x:=clean_box(nucleus(q),cur_style); -@y -begin x:=clean_box(nucleus(q),cur_style,math_kcode(q)); -@z - -@x [36.736] l.15069 - pTeX: make_under:clean_box -if type(v)<>vlist_node then confusion("vcenter"); -@y -if type(v)=dir_node then - begin if type(list_ptr(v))<>vlist_node then confusion("dircenter") - end -else begin if type(v)<>vlist_node then confusion("vcenter") - end; -@z - -@x [36.737] l.15089 - pTeX: make_radical:clean_box -begin x:=clean_box(nucleus(q),cramped_style(cur_style)); -@y -begin x:=clean_box(nucleus(q),cramped_style(cur_style),math_kcode(q)); -@z - -@x [36.738] l.15123 - pTeX: make_math_accent:clean_box - x:=clean_box(nucleus(q),cramped_style(cur_style)); w:=width(x); h:=height(x); -@y - x:=clean_box(nucleus(q),cramped_style(cur_style),math_kcode(q)); - w:=width(x); h:=height(x); -@z - -@x [36.742] l.15186 - pTeX: make_math_accent:clean_box -x:=clean_box(nucleus(q),cur_style); delta:=delta+height(x)-h; h:=height(x); -@y -x:=clean_box(nucleus(q),cur_style,math_kcode(q)); -delta:=delta+height(x)-h; h:=height(x); -@z - -@x [36.744] l.15211 - pTeX: make_fraction:clean_box -x:=clean_box(numerator(q),num_style(cur_style)); -z:=clean_box(denominator(q),denom_style(cur_style)); -@y -x:=clean_box(numerator(q),num_style(cur_style),math_kcode(q)); -z:=clean_box(denominator(q),denom_style(cur_style),math_kcode(q)); -@z - -@x [36.749] l.15304 - pTeX: make_op:clean_box - delta:=char_italic(cur_f)(cur_i); x:=clean_box(nucleus(q),cur_style); -@y - delta:=char_italic(cur_f)(cur_i); - x:=clean_box(nucleus(q),cur_style,math_kcode(q)); -@z - -@x [36.750] l.15321 - pTeX: make_op:clean_box -begin x:=clean_box(supscr(q),sup_style(cur_style)); -y:=clean_box(nucleus(q),cur_style); -z:=clean_box(subscr(q),sub_style(cur_style)); -@y -begin x:=clean_box(supscr(q),sup_style(cur_style),math_kcode(q)); -y:=clean_box(nucleus(q),cur_style,math_kcode(q)); -z:=clean_box(subscr(q),sub_style(cur_style),math_kcode(q)); -@z - -@x [36.751] l.15342 - pTeX: free box node - begin free_node(x,box_node_size); list_ptr(v):=y; - end -@y - begin - delete_glue_ref(space_ptr(x)); delete_glue_ref(xspace_ptr(x)); - free_node(x,box_node_size); list_ptr(v):=y; - end -@z - -@x [36.751] l.15350 - pTeX: free box node -if math_type(subscr(q))=empty then free_node(z,box_node_size) -@y -if math_type(subscr(q))=empty then begin - delete_glue_ref(space_ptr(z)); delete_glue_ref(xspace_ptr(z)); - free_node(z,box_node_size) -end -@z - -@x [36.752] l.15369 - pTeX: make_ord -procedure make_ord(@!q:pointer); -label restart,exit; -var a:integer; {address of lig/kern instruction} -@!p,@!r:pointer; {temporary registers for list manipulation} -begin restart:@t@>@;@/ -if math_type(subscr(q))=empty then if math_type(supscr(q))=empty then - if math_type(nucleus(q))=math_char then - begin p:=link(q); - if p<>null then if (type(p)>=ord_noad)and(type(p)<=punct_noad) then - if math_type(nucleus(p))=math_char then - if fam(nucleus(p))=fam(nucleus(q)) then - begin math_type(nucleus(q)):=math_text_char; - fetch(nucleus(q)); - if char_tag(cur_i)=lig_tag then - begin a:=lig_kern_start(cur_f)(cur_i); - cur_c:=character(nucleus(p)); - cur_i:=font_info[a].qqqq; - if skip_byte(cur_i)>stop_flag then - begin a:=lig_kern_restart(cur_f)(cur_i); - cur_i:=font_info[a].qqqq; - end; - loop@+ begin @; - if skip_byte(cur_i)>=stop_flag then return; - a:=a+qo(skip_byte(cur_i))+1; - cur_i:=font_info[a].qqqq; - end; - end; - end; - end; -exit:end; -@y -procedure make_ord(@!q:pointer); -label restart,exit; -var a:integer; {address of lig/kern instruction} -@!gp,@!gq,@!p,@!r:pointer; {temporary registers for list manipulation} -@!rr:halfword; -begin restart:@t@>@;@/ -if (math_type(subscr(q))=empty)and(math_type(supscr(q))=empty)and@| -((math_type(nucleus(q))=math_char)or(math_type(nucleus(q))=math_jchar)) then - begin p:=link(q); - if p<>null then if (type(p)>=ord_noad)and(type(p)<=punct_noad) then - if fam(nucleus(p))=fam(nucleus(q)) then - if math_type(nucleus(p))=math_char then - begin math_type(nucleus(q)):=math_text_char; - fetch(nucleus(q)); - if char_tag(cur_i)=lig_tag then - begin a:=lig_kern_start(cur_f)(cur_i); - cur_c:=character(nucleus(p)); - cur_i:=font_info[a].qqqq; - if skip_byte(cur_i)>stop_flag then - begin a:=lig_kern_restart(cur_f)(cur_i); - cur_i:=font_info[a].qqqq; - end; - loop@+ begin @; - if skip_byte(cur_i)>=stop_flag then return; - a:=a+qo(skip_byte(cur_i))+1; - cur_i:=font_info[a].qqqq; - end; - end; - end - else if math_type(nucleus(p))=math_jchar then - begin math_type(nucleus(q)):=math_text_jchar; - fetch(nucleus(p)); a:=cur_c; fetch(nucleus(q)); - if char_tag(cur_i)=gk_tag then - begin cur_c:=a; a:=glue_kern_start(cur_f)(cur_i); - {|cur_c|:=qi(|get_jfm_pos|(|math_kcode|(p), - |fam_fnt|(fam(nucleus(p))+|cur_size|)));} - repeat - cur_i:=font_info[a].qqqq; - if next_char(cur_i)=cur_c then - if op_byte(cur_i)null then begin - while((type(gp)<>r)and(link(gp)<>null)) do begin gp:=link(gp); - end; - gq:=glue_ptr(gp); - end - else begin gp:=get_node(small_node_size); - font_glue[cur_f]:=gp; gq:=null; - end; - if gq=null then - begin type(gp):=r; gq:=new_spec(zero_glue); glue_ptr(gp):=gq; - a:=exten_base[cur_f]+qi((qo(rr))*3); width(gq):=font_info[a].sc; - stretch(gq):=font_info[a+1].sc; shrink(gq):=font_info[a+2].sc; - add_glue_ref(gq); link(gp):=get_node(small_node_size); - gp:=link(gp); glue_ptr(gp):=null; link(gp):=null; - end; - p:=new_glue(gq); link(p):=link(q); link(q):=p; return; - end - else begin p:=new_kern(char_kern(cur_f)(cur_i)); - link(p):=link(q); link(q):=p; return; - end; - incr(a); - until skip_byte(cur_i)>=stop_flag; - end; - end; - end; -exit:end; -@z - -@x [36.754] l.15452 - pTeX: -math_char, math_text_char: -@y -math_char, math_text_char, math_jchar, math_text_jchar: -@z - -@x [36.755] l.15475 - pTeX: convert math text to KANJI char_node - begin delta:=char_italic(cur_f)(cur_i); p:=new_character(cur_f,qo(cur_c)); - if (math_type(nucleus(q))=math_text_char)and(space(cur_f)<>0) then - delta:=0; {no italic correction in mid-word of text font} - if (math_type(subscr(q))=empty)and(delta<>0) then - begin link(p):=new_kern(delta); delta:=0; -@y - begin delta:=char_italic(cur_f)(cur_i); p:=new_character(cur_f,qo(cur_c)); - u:=p; - if font_dir[cur_f]<>dir_default then begin - link(u):=get_avail; u:=link(u); info(u):=math_kcode(q); - end; - if ((math_type(nucleus(q))=math_text_char)or - (math_type(nucleus(q))=math_text_jchar))and(space(cur_f)<>0) then - delta:=0; {no italic correction in mid-word of text font} - if (math_type(subscr(q))=empty)and(delta<>0) then begin - link(u):=new_kern(delta); delta:=0; -@z - -@x [36.756] l.15505 - pTeX: free box - shift_down:=depth(z)+sub_drop(t); - free_node(z,box_node_size); - end; -@y - shift_down:=depth(z)+sub_drop(t); - delete_glue_ref(space_ptr(z)); delete_glue_ref(xspace_ptr(z)); - free_node(z,box_node_size); - end; -@z - -@x [36.757] l.15526 - pTeX: make_scripts:clean_box -begin x:=clean_box(subscr(q),sub_style(cur_style)); -@y -begin x:=clean_box(subscr(q),sub_style(cur_style),math_kcode(q)); -@z - -@x [36.758] l.15538 - pTeX: make_scripts:clean_box -begin x:=clean_box(supscr(q),sup_style(cur_style)); -@y -begin x:=clean_box(supscr(q),sup_style(cur_style),math_kcode(q)); -@z - -@x [36.758] l.15555 - pTeX: make_scripts:clean_box -begin y:=clean_box(subscr(q),sub_style(cur_style)); -@y -begin y:=clean_box(subscr(q),sub_style(cur_style),math_kcode(q)); -@z - -@x [36.760] l.15616 - pTeX: disp_node -othercases confusion("mlist3") -@y -disp_node: begin link(p):=q; p:=q; q:=link(q); link(p):=null; goto done; - end; -othercases confusion("mlist3") -@z - -@x [37.796] l.16276 - pTeX: call adjust_hlist - begin adjust_tail:=cur_tail; u:=hpack(link(head),natural); w:=width(u); -@y - begin adjust_tail:=cur_tail; adjust_hlist(head,false); - delete_glue_ref(cur_kanji_skip); delete_glue_ref(cur_xkanji_skip); - cur_kanji_skip:=space_ptr(head); cur_xkanji_skip:=xspace_ptr(head); - add_glue_ref(cur_kanji_skip); add_glue_ref(cur_xkanji_skip); - u:=hpack(link(head),natural); w:=width(u); -@z - -@x [37.799] l.16331 - pTeX: call adjust_hlist - begin p:=hpack(link(head),natural); -@y - begin adjust_hlist(head,false); - delete_glue_ref(cur_kanji_skip); delete_glue_ref(cur_xkanji_skip); - cur_kanji_skip:=space_ptr(head); cur_xkanji_skip:=xspace_ptr(head); - add_glue_ref(cur_kanji_skip); add_glue_ref(cur_xkanji_skip); - p:=hpack(link(head),natural); -@z - -@x [37.800] l.16353 - pTeX: call adjust_hlist -var @!p,@!q,@!r,@!s,@!u,@!v: pointer; {registers for the list operations} -@y -var @!p,@!q,@!r,@!s,@!u,@!v,@!z: pointer; {registers for the list operations} -@z - -@x [37.804] l.16456 - pTeX: call adjust_hlist - p:=hpack(preamble,saved(1),saved(0)); overfull_rule:=rule_save; -@y - z:=new_null_box; link(z):=preamble; - adjust_hlist(z,false); - delete_glue_ref(cur_kanji_skip); delete_glue_ref(cur_xkanji_skip); - cur_kanji_skip:=space_ptr(z); cur_xkanji_skip:=xspace_ptr(z); - add_glue_ref(cur_kanji_skip); add_glue_ref(cur_xkanji_skip); - p:=hpack(preamble,saved(1),saved(0)); overfull_rule:=rule_save; - delete_glue_ref(space_ptr(z)); delete_glue_ref(xspace_ptr(z)); - free_node(z,box_node_size); -@z - -@x [37.807] l.16499 - pTeX: unset box -> BOX -glue_order(q):=glue_order(p); glue_sign(q):=glue_sign(p); -glue_set(q):=glue_set(p); shift_amount(q):=o; -r:=link(list_ptr(q)); s:=link(list_ptr(p)); -@y -box_dir(q):=abs(direction); -glue_order(q):=glue_order(p); glue_sign(q):=glue_sign(p); -glue_set(q):=glue_set(p); shift_amount(q):=o; -r:=link(list_ptr(q)); s:=link(list_ptr(p)); -@z - -@x [37.809] l.16541 - pTeX: unset box -> BOX -s:=link(s); link(u):=new_null_box; u:=link(u); t:=t+width(s); -if mode=-vmode then width(u):=width(s)@+else - begin type(u):=vlist_node; height(u):=width(s); - end -@y -s:=link(s); link(u):=new_null_box; u:=link(u); t:=t+width(s); -if mode=-vmode then width(u):=width(s)@+else - begin type(u):=vlist_node; height(u):=width(s); - end; -box_dir(u):=abs(direction) -@z - -@x [37.810] l.16564 - pTeX: unset box -> BOX -width(r):=w; type(r):=hlist_node; -end -@y -width(r):=w; type(r):=hlist_node; -box_dir(r):=abs(direction); -end -@z - -@x [37.811] l.16585 - pTeX: unset box -> BOX -height(r):=w; type(r):=vlist_node; -@y -height(r):=w; type(r):=vlist_node; -box_dir(r):=abs(direction); -@z - -@x [38.816] l.16687 - pTeX: init chain, delete disp_node -link(temp_head):=link(head); -if is_char_node(tail) then tail_append(new_penalty(inf_penalty)) -else if type(tail)<>glue_node then tail_append(new_penalty(inf_penalty)) -@y -first_use:=true; chain:=false; -delete_glue_ref(cur_kanji_skip); delete_glue_ref(cur_xkanji_skip); -cur_kanji_skip:=space_ptr(head); cur_xkanji_skip:=xspace_ptr(head); -add_glue_ref(cur_kanji_skip); add_glue_ref(cur_xkanji_skip); -link(temp_head):=link(head); -if (not is_char_node(tail))and(type(tail)=disp_node) then - begin free_node(tail,small_node_size); tail:=prev_node; link(tail):=null - end; -if is_char_node(tail) then tail_append(new_penalty(inf_penalty)) -else if type(tail)<>glue_node then tail_append(new_penalty(inf_penalty)) -@z - -@x [38.828] l.16946 - pTeX: Global variable |chain| -@!cur_p:pointer; {the current breakpoint under consideration} -@y -@!cur_p:pointer; {the current breakpoint under consideration} -@!chain:boolean; {chain current line and next line?} -@z - -% chain ¤¬¿¿¤Î¾ì¹ç¡¢¸å¤í¤Ë cur_kanji_skip ¤¬ÁÞÆþ¤µ¤ì¤ë¤Î¤Ç¡¢¤³¤³¤Ç -% break_width ¤«¤é°ú¤¤¤Æ¤ª¤«¤Ê¤±¤ì¤Ð¤Ê¤é¤Ê¤¤¡£ -@x [38.837] l.17125 - pTeX: add kanji_skip width, ita_kern -begin no_break_yet:=false; do_all_six(set_break_width_to_background); -s:=cur_p; -if break_type>unhyphenated then if cur_p<>null then - @; -while s<>null do - begin if is_char_node(s) then goto done; -@y -begin no_break_yet:=false; do_all_six(set_break_width_to_background); -s:=cur_p; -if break_type>unhyphenated then if cur_p<>null then - @; -while s<>null do - begin if is_char_node(s) then - begin if chain then - begin break_width[1]:=break_width[1]-width(cur_kanji_skip); - break_width[2+stretch_order(cur_kanji_skip)]:= - break_width[2+stretch_order(cur_kanji_skip)]-stretch(cur_kanji_skip); - break_width[6]:=break_width[6]-shrink(cur_kanji_skip); - end; - goto done end; -@z - -@x [38.837] l.17135 - pTeX: - kern_node: if subtype(s)<>explicit then goto done - else break_width[1]:=break_width[1]-width(s); -@y - kern_node: if (subtype(s)<>explicit)and(subtype(s)<>ita_kern) then - goto done - else break_width[1]:=break_width[1]-width(s); -@z - -@x [38.841] l.17186 - pTeX: -if is_char_node(v) then - begin f:=font(v); - break_width[1]:=break_width[1]-char_width(f)(char_info(f)(character(v))); - end -else case type(v) of - ligature_node: begin f:=font(lig_char(v));@/ - break_width[1]:=@|break_width[1]- - char_width(f)(char_info(f)(character(lig_char(v)))); - end; - hlist_node,vlist_node,rule_node,kern_node: - break_width[1]:=break_width[1]-width(v); - othercases confusion("disc1") -@:this can't happen disc1}{\quad disc1@> - endcases -@y -if is_char_node(v) then - begin f:=font(v); - break_width[1]:=break_width[1]-char_width(f)(orig_char_info(f)(character(v))); - if font_dir[f]<>dir_default then v:=link(v); - end -else case type(v) of - ligature_node: begin f:=font(lig_char(v));@/ - break_width[1]:=@|break_width[1]- - char_width(f)(orig_char_info(f)(character(lig_char(v)))); - end; - hlist_node,vlist_node,dir_node,rule_node,kern_node: - break_width[1]:=break_width[1]-width(v); - disp_node: do_nothing; - othercases confusion("disc1") -@:this can't happen disc1}{\quad disc1@> - endcases -@z - -@x [38.842] l.17204 - pTeX: - break_width[1]:=@|break_width[1]+char_width(f)(char_info(f)(character(s))); - end -else case type(s) of - ligature_node: begin f:=font(lig_char(s)); - break_width[1]:=break_width[1]+ - char_width(f)(char_info(f)(character(lig_char(s)))); - end; - hlist_node,vlist_node,rule_node,kern_node: - break_width[1]:=break_width[1]+width(s); -@y - break_width[1]:=@|break_width[1]+char_width(f)(orig_char_info(f)(character(s))); - if font_dir[f]<>dir_default then s:=link(s); - end -else case type(s) of - ligature_node: begin f:=font(lig_char(s)); - break_width[1]:=break_width[1]+ - char_width(f)(orig_char_info(f)(character(lig_char(s)))); - end; - hlist_node,vlist_node,dir_node,rule_node,kern_node: - break_width[1]:=break_width[1]+width(s); - disp_node: do_nothing; -@z - -@x [38.856] l.17467 - pTeX: print symbolic feasibe node -if cur_p=null then print_esc("par") -else if type(cur_p)<>glue_node then - begin if type(cur_p)=penalty_node then print_esc("penalty") - else if type(cur_p)=disc_node then print_esc("discretionary") -@y -if cur_p=null then print_esc("par") -else if (type(cur_p)<>glue_node)and(not is_char_node(cur_p)) then - begin if type(cur_p)=penalty_node then print_esc("penalty") - else if type(cur_p)=disc_node then print_esc("discretionary") -@z - -@x [39.862] l.17584 - pTeX: local valiable for line breaking -@!auto_breaking:boolean; {is node |cur_p| outside a formula?} -@!prev_p:pointer; {helps to determine when glue nodes are breakpoints} -@!q,@!r,@!s,@!prev_s:pointer; {miscellaneous nodes of temporary interest} -@!f:internal_font_number; {used when calculating character widths} -@y -@!auto_breaking:boolean; {is node |cur_p| outside a formula?} -@!prev_p:pointer; {helps to determine when glue nodes are breakpoints} -@!q,@!r,@!s,@!prev_s:pointer; {miscellaneous nodes of temporary interest} -@!f,@!post_f:internal_font_number; {used when calculating character widths} -@!post_p:pointer; -@!cc:ASCII_code; -@!first_use:boolean; -@z - -@x [39.866] l.17677 - pTeX: dir_node, disp_node, ita_kern -case type(cur_p) of -hlist_node,vlist_node,rule_node: act_width:=act_width+width(cur_p); -@y -case type(cur_p) of -hlist_node,vlist_node,dir_node,rule_node: act_width:=act_width+width(cur_p); -@z - -@x [39.866] l.17685 - pTeX: -kern_node: if subtype(cur_p)=explicit then kern_break - else act_width:=act_width+width(cur_p); -@y -kern_node: if (subtype(cur_p)=explicit)or(subtype(cur_p)=ita_kern) then - kern_break - else act_width:=act_width+width(cur_p); -@z - -@x [39.866] l.17694 - pTeX: -mark_node,ins_node,adjust_node: do_nothing; -@y -disp_node,mark_node,ins_node,adjust_node: do_nothing; -@z - -% ¤³¤³¤Ç¡¢Ï¢Â³¤¹¤ë´Á»ú¥³¡¼¥É´Ö¤Ë cur_kanji_skip ¤òÁÞÆþ¤¹¤ë¡£ -% penalty_node ¤ä box_node ¤Ë¤Ï¡¢adjust_hlist ¥ë¡¼¥Á¥ó¤Ë¤è¤Ã¤Æ´û¤Ë¼ÂºÝ¤Î -% glue_node ¤¬ÁÞÆþ¤µ¤ì¤Æ¤¤¤ë¤â¤Î¤È²¾Äꤷ¤Æ¤¤¤ë¡£ -% chain ¤Ï¡¢try_break ¤Ç cur_kanji_skip ¤Î¥¢¥¸¥ã¥¹¥È¤Î¤¿¤á¤Ë»È¤ï¤ì¤ë¡£ -@x [39.867] l.17708 - pTeX: add kanji char width -@= -begin prev_p:=cur_p; -repeat f:=font(cur_p); -act_width:=act_width+char_width(f)(char_info(f)(character(cur_p))); -cur_p:=link(cur_p); -until not is_char_node(cur_p); -end -@y -@= -begin chain:=false; -if is_char_node(cur_p) then - if font_dir[font(cur_p)]<>dir_default then - begin case type(prev_p) of - hlist_node,vlist_node,dir_node,rule_node, - ligature_node,disc_node,math_node: begin - cur_p:=prev_p; try_break(0,unhyphenated); cur_p:=link(cur_p); - end; - othercases do_nothing; - endcases; - end; - prev_p:=cur_p; post_p:=cur_p; post_f:=font(post_p); - repeat f:=post_f; cc:=character(cur_p); - act_width:=act_width+char_width(f)(orig_char_info(f)(cc)); - post_p:=link(cur_p); - if font_dir[f]<>dir_default then - begin prev_p:=cur_p; cur_p:=post_p; post_p:=link(post_p); - if is_char_node(post_p) then - begin post_f:=font(post_p); - if font_dir[post_f]<>dir_default then chain:=true else chain:=false; - try_break(0,unhyphenated); - end - else - begin chain:=false; - case type(post_p) of - hlist_node,vlist_node,dir_node,rule_node,ligature_node, - disc_node,math_node: try_break(0,unhyphenated); - othercases do_nothing; - endcases; - end; - if chain then - begin if first_use then - begin check_shrinkage(cur_kanji_skip); - first_use:=false; - end; - act_width:=act_width+width(cur_kanji_skip);@| - active_width[2+stretch_order(cur_kanji_skip)]:=@| - active_width[2+stretch_order(cur_kanji_skip)] - +stretch(cur_kanji_skip);@/ - active_width[6]:=active_width[6]+shrink(cur_kanji_skip); - end; - prev_p:=cur_p; - end - else if is_char_node(post_p) then - begin post_f:=font(post_p); chain:=false; - if font_dir[post_f]<>dir_default then try_break(0,unhyphenated); - end; - cur_p:=post_p; - until not is_char_node(cur_p); -chain:=false; -end -@z - -@x [39.868] l.17723 - pTeX: ita_kern - else if (type(prev_p)=kern_node)and(subtype(prev_p)<>explicit) then - try_break(0,unhyphenated); -@y - else if (type(prev_p)=kern_node) then - if (subtype(prev_p)<>explicit)and(subtype(prev_p)<>ita_kern) then - try_break(0,unhyphenated); -@z - -@x [39.871] l.17756 - pTeX: add kanji char width, dir_node width, disp_node - disc_width:=disc_width+char_width(f)(char_info(f)(character(s))); - end -else case type(s) of - ligature_node: begin f:=font(lig_char(s)); - disc_width:=disc_width+ - char_width(f)(char_info(f)(character(lig_char(s)))); - end; - hlist_node,vlist_node,rule_node,kern_node: - disc_width:=disc_width+width(s); -@y - disc_width:=disc_width+char_width(f)(orig_char_info(f)(character(s))); - if font_dir[f]<>dir_default then s:=link(s) - end -else case type(s) of - ligature_node: begin f:=font(lig_char(s)); - disc_width:=disc_width+ - char_width(f)(orig_char_info(f)(character(lig_char(s)))); - end; - hlist_node,vlist_node,dir_node,rule_node,kern_node: - disc_width:=disc_width+width(s); - disp_node: do_nothing; -@z - -@x [39.872] l.17772 - pTeX: add kanji char width, dir_node width, disp_node - act_width:=act_width+char_width(f)(char_info(f)(character(s))); - end -else case type(s) of - ligature_node: begin f:=font(lig_char(s)); - act_width:=act_width+ - char_width(f)(char_info(f)(character(lig_char(s)))); - end; - hlist_node,vlist_node,rule_node,kern_node: - act_width:=act_width+width(s); -@y - act_width:=act_width+char_width(f)(orig_char_info(f)(character(s))); - if font_dir[f]<>dir_default then s:=link(s) - end -else case type(s) of - ligature_node: begin f:=font(lig_char(s)); - act_width:=act_width+ - char_width(f)(orig_char_info(f)(character(lig_char(s)))); - end; - hlist_node,vlist_node,dir_node,rule_node,kern_node: - act_width:=act_width+width(s); - disp_node: do_nothing; -@z - -@x [39.877] l.17879 - pTeX: last_disp -cur_line:=prev_graf+1; -@y -cur_line:=prev_graf+1; last_disp:=0; -@z - -@x [39.879] l.17919 - pTeX: ita_kern - if type(q)=kern_node then if subtype(q)<>explicit then goto done1; -@y - if type(q)=kern_node then - if (subtype(q)<>explicit)and(subtype(q)<>ita_kern) then goto done1; -@z - -@x [39.881] l.17950 - pTeX: |q| may be a |char_node| -if q<>null then {|q| cannot be a |char_node|} - if type(q)=glue_node then - begin delete_glue_ref(glue_ptr(q)); - glue_ptr(q):=right_skip; - subtype(q):=right_skip_code+1; add_glue_ref(right_skip); - goto done; - end - else begin if type(q)=disc_node then - @ - else if (type(q)=math_node)or(type(q)=kern_node) then width(q):=0; - end -@y -if q<>null then {|q| may be a |char_node|} - begin if not is_char_node(q) then - if type(q)=glue_node then - begin delete_glue_ref(glue_ptr(q)); - glue_ptr(q):=right_skip; - subtype(q):=right_skip_code+1; add_glue_ref(right_skip); - goto done; - end - else begin if type(q)=disc_node then - @ - else if (type(q)=math_node)or(type(q)=kern_node) then width(q):=0; - end - end -@z - -@x [39.887] l.18014 - pTeX: disp_node at begin-of-line -r:=link(q); link(q):=null; q:=link(temp_head); link(temp_head):=r; -@y -r:=link(q); link(q):=null; q:=link(temp_head); link(temp_head):=r; -if last_disp<>0 then begin - r:=get_node(small_node_size); - type(r):=disp_node; disp_dimen(r):=last_disp; - link(r):=q; q:=r; - end; -@z - -@x [40.896] l.18177 - pTeX: hyphenation -loop@+ begin if is_char_node(s) then - begin c:=qo(character(s)); hf:=font(s); - end -@y -loop@+ begin if is_char_node(s) then - begin hf:=font(s); - if font_dir[hf]<>dir_default then - begin prev_s:=s; s:=link(prev_s); c:=info(s); goto continue; - end else c:=qo(character(s)); - end - else if type(s)=disp_node then goto continue - else if (type(s)=penalty_node)and(not subtype(s)=normal) then goto continue -@z - -@x [40.899] l.18248 - pTeX: disp_node - whatsit_node,glue_node,penalty_node,ins_node,adjust_node,mark_node: - goto done4; -@y - disp_node: do_nothing; - whatsit_node,glue_node,penalty_node,ins_node,adjust_node,mark_node: - goto done4; -@z - -@x [44.968] l.19535 - pTeX: dir_node - hlist_node,vlist_node,rule_node:@; -@y - hlist_node,vlist_node,dir_node,rule_node: - @; -@z - -@x [44.973] l.19626 - pTeX: dir_node -hlist_node,vlist_node,rule_node: begin@t@>@;@/ - cur_height:=cur_height+prev_dp+height(p); prev_dp:=depth(p); -@y -hlist_node,vlist_node,dir_node,rule_node: begin@t@>@;@/ - cur_height:=cur_height+prev_dp+height(p); prev_dp:=depth(p); -@z - -@x [44.977] l.19710 - pTeX: free box node -var v:pointer; {the box to be split} -@y -var v:pointer; {the box to be split} -w:pointer; {|dir_node|} -@z - -@x [44.977] l.19722 - pTeX: free box node -q:=prune_page_top(q); p:=list_ptr(v); free_node(v,box_node_size); -if q=null then box(n):=null {the |eq_level| of the box stays the same} -else box(n):=vpack(q,natural); -vsplit:=vpackage(p,h,exactly,split_max_depth); -@y -q:=prune_page_top(q); p:=list_ptr(v); -if q=null then box(n):=null {the |eq_level| of the box stays the same} -else begin - box(n):=vpack(q,natural); box_dir(box(n)):=box_dir(v); - end; -q:=vpackage(p,h,exactly,split_max_depth); -box_dir(q):=box_dir(v); -delete_glue_ref(space_ptr(v)); delete_glue_ref(xspace_ptr(v)); -free_node(v,box_node_size); -vsplit:=q; -@z - -@x [44.978] l.19732 - pTeX: bad box for vsplit -if type(v)<>vlist_node then - begin print_err(""); print_esc("vsplit"); print(" needs a "); - print_esc("vbox"); -@:vsplit_}{\.{\\vsplit needs a \\vbox}@> - help2("The box you are trying to split is an \hbox.")@/ - ("I can't split such a box, so I'll leave it alone."); - error; vsplit:=null; return; - end -@y -if type(v)=dir_node then begin - w:=v; v:=list_ptr(v); - delete_glue_ref(space_ptr(w)); - delete_glue_ref(xspace_ptr(w)); - free_node(w,box_node_size); -end; -if type(v)<>vlist_node then begin - print_err(""); print_esc("vsplit"); print(" needs a "); - print_esc("vbox"); -@:vsplit_}{\.{\\vsplit needs a \\vbox}@> - help2("The box you are trying to split is an \hbox.")@/ - ("I can't split such a box, so I'll leave it alone."); - error; vsplit:=null; return; -end; -flush_node_list(link(v)); link(v):=null -@z - -@x [45.993] l.20053 - pTeX: ensure_vbox -begin p:=box(n); -if p<>null then if type(p)=hlist_node then - begin print_err("Insertions can only be added to a vbox"); -@y -begin p:=box(n); -if p<>null then if (type(p)=dir_node) then - begin p:=list_ptr(p); - delete_glue_ref(space_ptr(box(n))); - delete_glue_ref(xspace_ptr(box(n))); - free_node(box(n),box_node_size); - box(n):=p -end; -if p<>null then if type(p)<>vlist_node then begin - print_err("Insertions can only be added to a vbox"); -@z - -@x [45.1000] l.20146 - pTeX: dir_node -hlist_node,vlist_node,rule_node: if page_contents -@y -hlist_node,vlist_node,dir_node,rule_node: if page_contents -@z - -@x [45.1009] l.20291 - pTeX: ins_dir -if box(n)=null then height(r):=0 -else height(r):=height(box(n))+depth(box(n)); -@y -if box(n)=null then height(r):=0 -else - begin if ins_dir(p)<>box_dir(box(n)) then - begin print_err("Insertions can only be added to a same direction vbox"); -@.Insertions can only...@> - help3("Tut tut: You're trying to \insert into a")@/ - ("\box register that now have a different direction.")@/ - ("Proceed, and I'll discard its present contents."); - box_error(n) - end; - height(r):=height(box(n))+depth(box(n)); - end; -@z - -@x [45.1017] l.20470 - pTeX: page dir -box(255):=vpackage(link(page_head),best_size,exactly,page_max_depth); -@y -box(255):=vpackage(link(page_head),best_size,exactly,page_max_depth); -box_dir(box(255)):=page_dir; -@z - -@x [45.1020] l.20513 - pTeX: check ins_dir -if best_ins_ptr(r)=null then wait:=true -else begin wait:=false; s:=last_ins_ptr(r); link(s):=ins_ptr(p); -@y -if best_ins_ptr(r)=null then wait:=true -else begin wait:=false; - n:=qo(subtype(p)); - case box_dir(box(n)) of - any_dir: - if ins_dir(p)<>box_dir(box(n)) then begin - print_err("Insertions can only be added to a same direction vbox"); -@.Insertions can only...@> - help3("Tut tut: You're trying to \insert into a")@/ - ("\box register that now have a different direction.")@/ - ("Proceed, and I'll discard its present contents."); - box_error(n); - box(n):=new_null_box; last_ins_ptr(r):=box(n)+list_offset; - end; - othercases - box_dir(box(n)):=ins_dir(p); - endcases; - s:=last_ins_ptr(r); link(s):=ins_ptr(p); -@z - -@x [45.1021] l.20537 - pTeX: free box node, ins_dir - free_node(temp_ptr,box_node_size); wait:=true; -@y - delete_glue_ref(space_ptr(temp_ptr)); - delete_glue_ref(xspace_ptr(temp_ptr)); - free_node(temp_ptr,box_node_size); wait:=true; -@z - -@x [45.1021] l.20543 - pTeX: free box node, ins_dir -free_node(box(n),box_node_size); -box(n):=vpack(temp_ptr,natural); -@y -delete_glue_ref(space_ptr(box(n))); -delete_glue_ref(xspace_ptr(box(n))); -flush_node_list(link(box(n))); -free_node(box(n),box_node_size); -box(n):=vpack(temp_ptr,natural); box_dir(box(n)):=ins_dir(p); -@z - -@x [46.1030] l.20687 - pTeX:main_control -@d append_normal_space=120 {go here to append a normal space between words} -@y -@d append_normal_space=120 {go here to append a normal space between words} -@d main_loop_j=130 {like |main_loop|, but |cur_chr| holds a KANJI code} -@d skip_loop=141 -@d again_2=150 -@z - -@x [46.1030] l.20691 - pTeX: main_control -procedure main_control; {governs \TeX's activities} -label big_switch,reswitch,main_loop,main_loop_wrapup, -@y -procedure main_control; {governs \TeX's activities} -label big_switch,reswitch,main_loop,main_loop_wrapup, - main_loop_j,main_loop_j+1,main_loop_j+3,skip_loop,again_2, -@z - -@x [46.1030] l.20697 - pTeX: main_control -var@!t:integer; {general-purpose temporary variable} -@y -var@!t:integer; {general-purpose temporary variable} -@!cx:KANJI_code; {kanji character} -@!kp:pointer; {kinsoku penalty register} -@!gp,gq:pointer; {temporary registers for list manipulation} -@!disp:scaled; {displacement register} -@!ins_kp:boolean; {whether insert kinsoku penalty} -@z - -@x [46.1030] l.20701 - pTeX: main_control -case abs(mode)+cur_cmd of -hmode+letter,hmode+other_char,hmode+char_given: goto main_loop; -hmode+char_num: begin scan_char_num; cur_chr:=cur_val; goto main_loop;@+end; -hmode+no_boundary: begin get_x_token; - if (cur_cmd=letter)or(cur_cmd=other_char)or(cur_cmd=char_given)or - (cur_cmd=char_num) then cancel_boundary:=true; - goto reswitch; - end; -@y -ins_kp:=false; -case abs(mode)+cur_cmd of -hmode+letter,hmode+other_char: goto main_loop; -hmode+kanji,hmode+kana,hmode+other_kchar: goto main_loop_j; -hmode+char_given: - if (cur_chr>=0)and(cur_chr<256) then goto main_loop else goto main_loop_j; -hmode+char_num: begin scan_char_num; cur_chr:=cur_val; - if (cur_chr>=0)and(cur_chr<256) then goto main_loop else goto main_loop_j; - end; -hmode+no_boundary: begin get_x_token; - if (cur_cmd=letter)or(cur_cmd=other_char)or - (cur_cmd=kanji)or(cur_cmd=kana)or(cur_cmd=other_kchar)or - (cur_cmd=char_given)or(cur_cmd=char_num) then cancel_boundary:=true; - goto reswitch; - end; -@z - -@x [46.1030] l.20715 - pTeX: main_control -main_loop:@; -@y -main_loop_j:@; -main_loop:@; -@z - -@x [46.1034] l.20788 - pTeX: disp_node -@= -if ((head=tail) and (mode>0)) then begin - if (insert_src_special_auto) then append_src_special; -end; -adjust_space_factor;@/ -@y -@= -if ((head=tail) and (mode>0)) then begin - if (insert_src_special_auto) then append_src_special; -end; -adjust_space_factor;@/ -if direction=dir_tate then disp:=t_baseline_shift else disp:=y_baseline_shift; -@; -@z - -%@x [46.1035] l.20850 - pTeX: kinsoku penalty -%@= -%wrapup(rt_hit) -%@y -%@= -%wrapup(rt_hit); -%if ins_kp=true then -% begin cx:=KANJI(cur_l); @; -% ins_kp:=false; -% end -%@z - -@x [46.1036] l.20854 - pTeX: disp_node -if lig_stack=null then goto reswitch; -@y -if lig_stack=null then - begin @; - goto reswitch; - end; -@z - -@x [46.1037] l.20886 - pTeX: Look ahead for another character -@= -get_next; {set only |cur_cmd| and |cur_chr|, for speed} -if cur_cmd=letter then goto main_loop_lookahead+1; -if cur_cmd=other_char then goto main_loop_lookahead+1; -if cur_cmd=char_given then goto main_loop_lookahead+1; -x_token; {now expand and set |cur_cmd|, |cur_chr|, |cur_tok|} -if cur_cmd=letter then goto main_loop_lookahead+1; -if cur_cmd=other_char then goto main_loop_lookahead+1; -if cur_cmd=char_given then goto main_loop_lookahead+1; -if cur_cmd=char_num then - begin scan_char_num; cur_chr:=cur_val; goto main_loop_lookahead+1; - end; -if cur_cmd=no_boundary then bchar:=non_char; -cur_r:=bchar; lig_stack:=null; goto main_lig_loop; -main_loop_lookahead+1: adjust_space_factor; -fast_get_avail(lig_stack); font(lig_stack):=main_f; -cur_r:=qi(cur_chr); character(lig_stack):=cur_r; -if cur_r=false_bchar then cur_r:=non_char {this prevents spurious ligatures} -@y -@= -get_next; {set only |cur_cmd| and |cur_chr|, for speed} -if cur_cmd=letter then goto main_loop_lookahead+1; -if (cur_cmd=kanji)or(cur_cmd=kana)or(cur_cmd=other_kchar) then - @; -if cur_cmd=other_char then goto main_loop_lookahead+1; -if cur_cmd=char_given then - begin if (cur_chr>=0)and(cur_chr<256) then goto main_loop_lookahead+1 - else @; - end; -x_token; {now expand and set |cur_cmd|, |cur_chr|, |cur_tok|} -if cur_cmd=letter then goto main_loop_lookahead+1; -if (cur_cmd=kanji)or(cur_cmd=kana)or(cur_cmd=other_kchar) then - @; -if cur_cmd=other_char then goto main_loop_lookahead+1; -if cur_cmd=char_given then - begin if (cur_chr>=0)and(cur_chr<256) then goto main_loop_lookahead+1 - else @; - end; -if cur_cmd=char_num then - begin scan_char_num; cur_chr:=cur_val; - if (cur_chr>=0)and(cur_chr<256) then goto main_loop_lookahead+1 - else @; - end; -if cur_cmd=inhibit_glue then - begin inhibit_glue_flag:=true; goto main_loop_lookahead; - end; -if cur_cmd=no_boundary then bchar:=non_char; -cur_r:=bchar; lig_stack:=null; goto main_lig_loop; -main_loop_lookahead+1: adjust_space_factor; -fast_get_avail(lig_stack); font(lig_stack):=main_f; -cur_r:=qi(cur_chr); character(lig_stack):=cur_r; -if cur_r=false_bchar then cur_r:=non_char {this prevents spurious ligatures} - -@ @= -begin bchar:=non_char; cur_r:=bchar; lig_stack:=null; -if ligature_present then pack_lig(rt_hit); -if ins_kp=true then - begin cx:=cur_l; @; - end; -ins_kp:=false; -goto main_loop_j; -end -@z - -@x [46.1041] l.20999 - pTeX: disp_node -link(tail):=temp_ptr; tail:=temp_ptr; -@y -if (not is_char_node(tail))and(type(tail)=disp_node) then - begin link(prev_node):=temp_ptr; link(temp_ptr):=tail; prev_node:=temp_ptr; - end -else begin link(tail):=temp_ptr; tail:=temp_ptr; - end; -@z - -@x [46.1043] l.21029 - pTeX: disp_node -link(tail):=q; tail:=q; -@y -if (not is_char_node(tail))and(type(tail)=disp_node) then - begin link(prev_node):=q; link(q):=tail; prev_node:=q; - end -else begin link(tail):=q; tail:=q; - end -@z - -@x [47.1061] l.21277 - pTeX: append kern -begin s:=cur_chr; scan_dimen(s=mu_glue,false,false); -tail_append(new_kern(cur_val)); subtype(tail):=s; -end; -@y -begin s:=cur_chr; scan_dimen(s=mu_glue,false,false); -if (not is_char_node(tail))and(type(tail)=disp_node) then - begin prev_append(new_kern(cur_val)); subtype(prev_node):=s; - end -else - begin tail_append(new_kern(cur_val)); subtype(tail):=s; - end; -end; -@z - -@x [47.1068] l.21377 - pTeX: -var p,@!q:pointer; {for short-term use} -@y -var p,@!q:pointer; {for short-term use} -@!r:pointer; {temporaly} -@z - -@x [47.1071] l.21485 - pTeX: \tate, \yoko, \dtou -primitive("hbox",make_box,vtop_code+hmode);@/ -@!@:hbox_}{\.{\\hbox} primitive@> -@y -primitive("hbox",make_box,vtop_code+hmode);@/ -@!@:hbox_}{\.{\\hbox} primitive@> -primitive("tate",chg_dir,dir_tate);@/ -@!@:tate_}{\.{\\tate} primitive@> -primitive("yoko",chg_dir,dir_yoko);@/ -@!@:yoko_}{\.{\\yoko} primitive@> -primitive("dtou",chg_dir,dir_dtou);@/ -@!@:dtou_}{\.{\\dtou} primitive@> -@z - -@x [47.1072] l.21506 - pTeX: \tate, \yoko, \dtou - othercases print_esc("hbox") - endcases; -leader_ship: if chr_code=a_leaders then print_esc("leaders") -@y - othercases print_esc("hbox") - endcases; -chg_dir: - case chr_code of - dir_yoko: print_esc("yoko"); - dir_tate: print_esc("tate"); - dir_dtou: print_esc("dtou"); - endcases; -leader_ship: if chr_code=a_leaders then print_esc("leaders") -@z - -@x [47.1073] l.21523 - pTeX: \tate, \yoko -any_mode(make_box): begin_box(0); -@y -any_mode(make_box): begin_box(0); -any_mode(chg_dir): - begin if cur_group<>align_group then - if head=tail then - begin direction:=cur_chr; - if mode=vmode then page_dir:=cur_chr; - end - else begin print_err("Use `"); print_cmd_chr(cur_cmd,cur_chr); - print("' at top of list"); - help2("Direction change command is available only while") - ("current list is null."); error; - end - else begin print_err("You can't use `"); print_cmd_chr(cur_cmd,cur_chr); - print("' in an align"); - help2("To change direction in an align,") - ("you shold use \hbox or \vbox with \tate or \yoko."); error; - end - end; -@z - -@x [47.1075] l.21538 - pTeX: box_end -var p:pointer; {|ord_noad| for new box in math mode} -@y -var p:pointer; {|ord_noad| for new box in math mode} -q:pointer; -@z - -@x [47.1076] l.21553 - pTeX: box_dir adjust -begin if cur_box<>null then - begin shift_amount(cur_box):=box_context; - if abs(mode)=vmode then - begin append_to_vlist(cur_box); - if adjust_tail<>null then - begin if adjust_head<>adjust_tail then - begin link(tail):=link(adjust_head); tail:=adjust_tail; - end; - adjust_tail:=null; - end; - if mode>0 then build_page; - end - else begin if abs(mode)=hmode then space_factor:=1000 - else begin p:=new_noad; - math_type(nucleus(p)):=sub_box; - info(nucleus(p)):=cur_box; cur_box:=p; - end; - link(tail):=cur_box; tail:=cur_box; - end; - end; -end -@y -begin if cur_box<>null then - begin p:=link(cur_box); link(cur_box):=null; - while p<>null do begin - q:=p; p:=link(p); - if box_dir(q)=abs(direction) then - begin list_ptr(q):=cur_box; cur_box:=q; link(cur_box):=null; - end - else begin - delete_glue_ref(space_ptr(q)); - delete_glue_ref(xspace_ptr(q)); - free_node(q,box_node_size); - end; - end; - if box_dir(cur_box)<>abs(direction) then - cur_box:=new_dir_node(cur_box,abs(direction)); - shift_amount(cur_box):=box_context; - if abs(mode)=vmode then - begin append_to_vlist(cur_box); - if adjust_tail<>null then - begin if adjust_head<>adjust_tail then - begin link(tail):=link(adjust_head); tail:=adjust_tail; - end; - adjust_tail:=null; - end; - if mode>0 then build_page; - end - else begin - if abs(mode)=hmode then - space_factor:=1000 - else begin p:=new_noad; - math_type(nucleus(p)):=sub_box; - info(nucleus(p)):=cur_box; cur_box:=p; - end; - link(tail):=cur_box; tail:=cur_box; - end; -end; -end -@z - -@x [47.1078] l.21585 - pTeX: box_dir adjust - begin append_glue; subtype(tail):=box_context-(leader_flag-a_leaders); - leader_ptr(tail):=cur_box; - end -@y - begin append_glue; subtype(tail):=box_context-(leader_flag-a_leaders); - if type(cur_box)<=dir_node then - begin p:=link(cur_box); link(cur_box):=null; - while p<>null do - begin q:=p; p:=link(p); - if box_dir(q)=abs(direction) then - begin list_ptr(q):=cur_box; cur_box:=q; link(cur_box):=null; - end - else begin - delete_glue_ref(space_ptr(q)); - delete_glue_ref(xspace_ptr(q)); - free_node(q,box_node_size); - end; - end; - if box_dir(cur_box)<>abs(direction) then - cur_box:=new_dir_node(cur_box,abs(direction)); - end; - leader_ptr(tail):=cur_box; - end -@z - -@x [47.1079] l.21605 - pTeX: disp_node, adjust direction -var @!p,@!q:pointer; {run through the current list} -@!m:quarterword; {the length of a replacement list} -@!k:halfword; {0 or |vmode| or |hmode|} -@!n:eight_bits; {a box number} -@y -var @!p,@!q:pointer; {run through the current list} -@!m:quarterword; {the length of a replacement list} -@!k:halfword; {0 or |vmode| or |hmode|} -@!n:eight_bits; {a box number} -@!a_dir:eight_bits; {adjust direction} -@!d:pointer; {last |disp_node|} -@!disp,@!pdisp:scaled; {displacement} -@!pp,pnode:pointer; -@z - -@x [47.1080] l.21636 - pTeX: disp_node, check head=tail -else begin if not is_char_node(tail) then - if (type(tail)=hlist_node)or(type(tail)=vlist_node) then - @; - end; -@y -else begin - if (not is_char_node(tail))and(type(tail)=disp_node) then - begin d:=tail; tail:=prev_node; - end - else d:=null; - if (not is_char_node(tail))and(head<>tail) then - if (type(tail)=hlist_node)or(type(tail)=vlist_node) - or(type(tail)=dir_node) then - @; - if d<>null then - if (not is_char_node(tail))and(type(tail)=disp_node) then - begin prev_node:=pnode; prev_disp:=pdisp; - if prev_disp=disp_dimen(d) then free_node(tail,small_node_size) - else disp_dimen(tail):=disp_dimen(d); - free_node(d,small_node_size); - end - else tail_append(d); - end; -@z - -@x [47.1081] l.21642 - pTeX: disp_node -@ @= -begin q:=head; -repeat p:=q; -if not is_char_node(q) then if type(q)=disc_node then - begin for m:=1 to replace_count(q) do p:=link(p); - if p=tail then goto done; - end; -q:=link(p); -until q=tail; -cur_box:=tail; shift_amount(cur_box):=0; -tail:=p; link(p):=null; -done:end -@y -@ @= -begin q:=head; disp:=0; pdisp:=0; -repeat p:=q; -if not is_char_node(q) then - if type(q)=disc_node then - begin for m:=1 to replace_count(q) do p:=link(p); - if p=tail then goto done; - end - else if type(q)=disp_node then - begin pnode:=pp; pdisp:=disp; disp:=disp_dimen(q); - end; -pp:=q; q:=link(p); -until q=tail; -cur_box:=tail; shift_amount(cur_box):=0; -tail:=p; link(p):=null; -if type(cur_box)=dir_node then - begin link(list_ptr(cur_box)):=cur_box; - cur_box:=list_ptr(cur_box); - list_ptr(link(cur_box)):=null; - end -else - if box_dir(cur_box)=dir_default then box_dir(cur_box):=abs(direction); -done:end -@z - -@x [47.1083] l.21675 - pTeX: adjust_dir -if k=hmode then - if (box_context; - end; -pop_nest; box_end(saved(0)); -end; -@y -begin d:=box_max_depth; - delete_glue_ref(cur_kanji_skip); delete_glue_ref(cur_xkanji_skip); - if auto_spacing>0 then cur_kanji_skip:=kanji_skip - else cur_kanji_skip:=zero_glue; - if auto_xspacing>0 then cur_xkanji_skip:=xkanji_skip - else cur_xkanji_skip:=zero_glue; - add_glue_ref(cur_kanji_skip); add_glue_ref(cur_xkanji_skip); - unsave; save_ptr:=save_ptr-3; - if mode=-hmode then begin - cur_box:=hpack(link(head),saved(2),saved(1)); - box_dir(cur_box):=abs(direction); pop_nest; - end else begin - cur_box:=vpackage(link(head),saved(2),saved(1),d); - box_dir(cur_box):=abs(direction); pop_nest; - if c=vtop_code then - @; - end; - box_end(saved(0)); -end; -@z - -@x [47.1090] l.21765 - pTeX: apend vmode case -vmode+letter,vmode+other_char,vmode+char_num,vmode+char_given, - vmode+math_shift,vmode+un_hbox,vmode+vrule, - vmode+accent,vmode+discretionary,vmode+hskip,vmode+valign, - vmode+ex_space,vmode+no_boundary:@t@>@;@/ - begin back_input; new_graf(true); - end; -@y -vmode+letter,vmode+other_char,vmode+char_num,vmode+char_given, - vmode+math_shift,vmode+un_hbox,vmode+vrule, - vmode+accent,vmode+discretionary,vmode+hskip,vmode+valign, - vmode+kanji,vmode+kana,vmode+other_kchar, - vmode+ex_space,vmode+no_boundary:@t@>@;@/ - begin back_input; new_graf(true); - end; -@z - -@x [47.1091] l.21782 - pTeX: new_graf, adjust direction -push_nest; mode:=hmode; space_factor:=1000; set_cur_lang; clang:=cur_lang; -@y -push_nest; adjust_dir:=abs(direction); -mode:=hmode; space_factor:=1000; set_cur_lang; clang:=cur_lang; -@z - -@x [47.1096] l.21842 - pTeX: end_graf, call adjust_hlist - begin if head=tail then pop_nest {null paragraphs are ignored} - else line_break(widow_penalty); -@y - begin if head=tail then pop_nest {null paragraphs are ignored} - else begin adjust_hlist(head,true); line_break(widow_penalty) - end; -@z - -@x [47.1099] l.21871 - pTeX: insert and adjust -new_save_level(insert_group); scan_left_brace; normal_paragraph; -push_nest; mode:=-vmode; prev_depth:=ignore_depth; -@y -new_save_level(insert_group); scan_left_brace; normal_paragraph; -push_nest; mode:=-vmode; direction:=adjust_dir; prev_depth:=ignore_depth; -@z - -@x [47.1100] l.21876 - pTeX: free box node, ins_dir -insert_group: begin end_graf; q:=split_top_skip; add_glue_ref(q); - d:=split_max_depth; f:=floating_penalty; unsave; decr(save_ptr); - {now |saved(0)| is the insertion number, or 255 for |vadjust|} - p:=vpack(link(head),natural); pop_nest; - if saved(0)<255 then - begin tail_append(get_node(ins_node_size)); - type(tail):=ins_node; subtype(tail):=qi(saved(0)); - height(tail):=height(p)+depth(p); ins_ptr(tail):=list_ptr(p); - split_top_ptr(tail):=q; depth(tail):=d; float_cost(tail):=f; - end - else begin tail_append(get_node(small_node_size)); - type(tail):=adjust_node;@/ - subtype(tail):=0; {the |subtype| is not used} - adjust_ptr(tail):=list_ptr(p); delete_glue_ref(q); - end; - free_node(p,box_node_size); - if nest_ptr=0 then build_page; - end; -@y -insert_group: begin end_graf; q:=split_top_skip; add_glue_ref(q); - d:=split_max_depth; f:=floating_penalty; unsave; decr(save_ptr); - {now |saved(0)| is the insertion number, or 255 for |vadjust|} - p:=vpack(link(head),natural); box_dir(p):=abs(direction); pop_nest; - if saved(0)<255 then - begin r:=get_node(ins_node_size); - type(r):=ins_node; subtype(r):=qi(saved(0)); - height(r):=height(p)+depth(p); ins_ptr(r):=list_ptr(p); - split_top_ptr(r):=q; depth(r):=d; float_cost(r):=f; - ins_dir(r):=box_dir(p); - if (not is_char_node(tail))and(type(tail)=disp_node) then - prev_append(r) - else tail_append(r); - end - else begin - if box_dir(p)<>adjust_dir then - begin print_err("Direction Incompatible."); - help1("\vadjust's argument and outer vlist must have same direction."); - error; flush_node_list(list_ptr(p)); - end - else begin - r:=get_node(small_node_size); type(r):=adjust_node;@/ - adjust_ptr(r):=list_ptr(p); delete_glue_ref(q); - if (not is_char_node(tail))and(type(tail)=disp_node) then - prev_append(r) - else tail_append(r); - end; - end; - delete_glue_ref(space_ptr(p)); - delete_glue_ref(xspace_ptr(p)); - free_node(p,box_node_size); - if nest_ptr=0 then build_page; - end; -@z - -@x [47.1101] l.21901 - pTeX: mark_node, prev_append -mark_ptr(p):=def_ref; link(tail):=p; tail:=p; -@y -mark_ptr(p):=def_ref; -if (not is_char_node(tail))and(type(tail)=disp_node) then - prev_append(p) -else tail_append(p); -@z - -@x [47.1103] l.21911 - pTeX: penalty, prev_append -procedure append_penalty; -begin scan_int; tail_append(new_penalty(cur_val)); -if mode=vmode then build_page; -end; -@y -procedure append_penalty; -begin scan_int; - if (not is_char_node(tail))and(type(tail)=disp_node) then - prev_append(new_penalty(cur_val)) - else tail_append(new_penalty(cur_val)); - if mode=vmode then build_page; -end; -@z - -@x [47.1105] l.21932 - pTeX: delete_last: disp_node -var @!p,@!q:pointer; {run through the current list} -@!m:quarterword; {the length of a replacement list} -@y -var @!p,@!q:pointer; {run through the current list} -@!m:quarterword; {the length of a replacement list} -@!d:pointer; {last |disp_node|} -@!disp,@!pdisp:scaled; {displacement} -@!pp,pnode:pointer; -@z - -@x [47.1105] l.21937 - pTeX: delete_last: disp_node -else begin if not is_char_node(tail) then if type(tail)=cur_chr then - begin q:=head; - repeat p:=q; - if not is_char_node(q) then if type(q)=disc_node then - begin for m:=1 to replace_count(q) do p:=link(p); - if p=tail then return; - end; - q:=link(p); - until q=tail; - link(p):=null; flush_node_list(tail); tail:=p; - end; - end; -exit:end; -@y -else begin - if (not is_char_node(tail))and(type(tail)=disp_node) then - begin d:=tail; tail:=prev_node; link(tail):=null; - end - else d:=null; - if not is_char_node(tail) then if type(tail)=cur_chr then - begin q:=head; pp:=null; disp:=0; pdisp:=0; - repeat p:=q; - if not is_char_node(q) then - if type(q)=disc_node then - begin for m:=1 to replace_count(q) do p:=link(p); - if p=tail then - begin if d<>null then tail_append(d); - return; - end - end - else if type(q)=disp_node then - begin pnode:=pp; pdisp:=disp; disp:=disp_dimen(q); - end; - pp:=q; q:=link(p); - until q=tail; - link(p):=null; flush_node_list(tail); tail:=p; - end; - prev_node:=pnode; prev_disp:=pdisp; - if d<>null then - if (not is_char_node(tail))and(type(tail)=disp_node) then - begin if prev_disp=disp_dimen(d) then - free_node(tail,small_node_size) - else disp_dimen(tail):=disp_dimen(d); - free_node(d,small_node_size) - end - else - begin prev_node:=tail; prev_disp:=disp; tail_append(d) - end - end; -exit:end; -@z - -@x [47.1110] l.21997 -pTeX: free box node, delete kanji_skip -var p:pointer; {the box} -@!c:box_code..copy_code; {should we copy?} -@y -var p:pointer; {the box} -@!c:box_code..copy_code; {should we copy?} -@!disp:scaled; {displacement} -@z - -@x [47.1110] l.22001 - pTeX: free box node, delete kanji_skip -if (abs(mode)=mmode)or((abs(mode)=vmode)and(type(p)<>vlist_node))or@| - ((abs(mode)=hmode)and(type(p)<>hlist_node)) then - begin print_err("Incompatible list can't be unboxed"); -@.Incompatible list...@> - help3("Sorry, Pandora. (You sneaky devil.)")@/ - ("I refuse to unbox an \hbox in vertical mode or vice versa.")@/ - ("And I can't open any boxes in math mode.");@/ - error; return; - end; -if c=copy_code then link(tail):=copy_node_list(list_ptr(p)) -else begin link(tail):=list_ptr(p); box(cur_val):=null; - free_node(p,box_node_size); - end; -while link(tail)<>null do tail:=link(tail); -@y -if type(p)=dir_node then p:=list_ptr(p); -if (abs(mode)=mmode)or((abs(mode)=vmode)and(type(p)<>vlist_node))or@| - ((abs(mode)=hmode)and(type(p)<>hlist_node)) then - begin print_err("Incompatible list can't be unboxed"); -@.Incompatible list...@> - help3("Sorry, Pandora. (You sneaky devil.)")@/ - ("I refuse to unbox an \hbox in vertical mode or vice versa.")@/ - ("And I can't open any boxes in math mode.");@/ - error; return; -end; -case box_dir(p) of - any_dir: - if abs(direction)<>box_dir(p) then begin - print_err("Incompatible direction list can't be unboxed"); - help2("Sorry, Pandora. (You sneaky devil.)")@/ - ("I refuse to unbox a box in differrent direction.");@/ - error; return; - end; -endcases; -disp:=0; -if c=copy_code then link(tail):=copy_node_list(list_ptr(p)) -else - begin if type(box(cur_val))=dir_node then - begin delete_glue_ref(space_ptr(box(cur_val))); - delete_glue_ref(xspace_ptr(box(cur_val))); - free_node(box(cur_val),box_node_size); - end; - flush_node_list(link(p)); - link(tail):=list_ptr(p); box(cur_val):=null; - delete_glue_ref(space_ptr(p)); - delete_glue_ref(xspace_ptr(p)); - free_node(p,box_node_size); - end; -while link(tail)<>null do - begin p:=tail; tail:=link(tail); - if not is_char_node(tail) then - case type(tail) of - glue_node : - if (subtype(tail)=kanji_skip_code+1) - or(subtype(tail)=xkanji_skip_code+1) then - begin link(p):=link(tail); - delete_glue_ref(glue_ptr(tail)); - free_node(tail,small_node_size); tail:=p; - end; - penalty_node : - if subtype(tail)=widow_pena then - begin link(p):=link(tail); free_node(tail,small_node_size); - tail:=p; - end; - disp_node : - begin prev_disp:=disp; disp:=disp_dimen(tail); prev_node:=p; - end; - endcases; - end; -@z - -@x [47.1113] l.22028 - pTeX: italic correction, ita_kern -procedure append_italic_correction; -label exit; -var p:pointer; {|char_node| at the tail of the current list} -@!f:internal_font_number; {the font in the |char_node|} -begin if tail<>head then - begin if is_char_node(tail) then p:=tail - else if type(tail)=ligature_node then p:=lig_char(tail) - else return; - f:=font(p); - tail_append(new_kern(char_italic(f)(char_info(f)(character(p))))); - subtype(tail):=explicit; - end; -@y -procedure append_italic_correction; -label exit; -var p:pointer; {|char_node| at the tail of the current list} -@!f:internal_font_number; {the font in the |char_node|} -@!d:pointer; {|disp_node|} -begin if tail<>head then - begin - if (not is_char_node(tail))and(type(tail)=disp_node) then - begin d:=tail; tail:=prev_node; - end - else d:=null; - if (last_jchr<>null)and(link(last_jchr)=tail)and(is_char_node(tail)) then - p:=last_jchr - else if is_char_node(tail) then p:=tail - else if type(tail)=ligature_node then p:=lig_char(tail) - else return; - f:=font(p); - tail_append(new_kern(char_italic(f)(char_info(f)(character(p))))); - subtype(tail):=ita_kern; - if d<>null then - begin prev_node:=tail; tail_append(d); - end; - end; -@z - -@x [47.1120] l.22119 - pTeX: discretionary with disp_node -decr(save_ptr); return; -@y -decr(save_ptr); -prev_node:=tail; tail_append(get_node(small_node_size)); -type(tail):=disp_node; disp_dimen(tail):=0; prev_disp:=0; -return; -@z - -@x [47.1121] l.22127 - pTeX: discretionary with disp_node - begin if not is_char_node(p) then if type(p)>rule_node then - if type(p)<>kern_node then if type(p)<>ligature_node then - begin print_err("Improper discretionary list"); -@y - begin if not is_char_node(p) then - if (type(p)>rule_node)and(type(p)<>kern_node)and - (type(p)<>ligature_node)and(type(p)<>disp_node) then - if (type(p)=penalty_node)and(subtype(p)<>normal) then - begin link(q):=link(p); free_node(p,small_node_size); p:=q; - end - else - begin print_err("Improper discretionary list"); -@z - -@x [47.1123] l.22160 - pTeX: make_accent, Kanji, insert disp_node -var s,@!t: real; {amount of slant} -@y -var s,@!t: real; {amount of slant} -@!disp:scaled; {displacement} -@!cx:KANJI_code; {temporary register for KANJI} -@z - -@x [47.1123] l.22165 - pTeX: make_accent, Kanji, insert disp_node -begin scan_char_num; f:=cur_font; p:=new_character(f,cur_val); -@y -begin scan_char_num; -if (cur_val<0)or(cur_val>255) then - begin KANJI(cx):=cur_val; - if direction=dir_tate then f:=cur_tfont else f:=cur_jfont; - p:=new_character(f,get_jfm_pos(KANJI(cx),f)); - {DEBUG if p<>null then ...} - link(p):=get_avail; info(link(p)):=KANJI(cx); - end -else begin f:=cur_font; p:=new_character(f,cur_val); - end; -@z - -@x [47.1123] l.22175 - pTeX: make_accent, Kanji, insert disp_node - link(tail):=p; tail:=p; space_factor:=1000; -@y - link(tail):=p; - if link(p)<>null then tail:=link(p) else tail:=p; - @; - space_factor:=1000; -@z - -@x [47.1124] l.22180 - pTeX: make_accent Kanji, insert disp_node -q:=null; f:=cur_font; -if (cur_cmd=letter)or(cur_cmd=other_char)or(cur_cmd=char_given) then - q:=new_character(f,cur_chr) -else if cur_cmd=char_num then - begin scan_char_num; q:=new_character(f,cur_val); - end -else back_input -@y -q:=null; f:=cur_font; KANJI(cx):=empty; -if (cur_cmd=letter)or(cur_cmd=other_char) then - q:=new_character(f,cur_chr) -else if (cur_cmd=kanji)or(cur_cmd=kana)or(cur_cmd=other_kchar) then - begin if direction=dir_tate then f:=cur_tfont else f:=cur_jfont; - cx:=cur_chr; - end -else if cur_cmd=char_given then - if (cur_chr>=0)and(cur_chr<256)then q:=new_character(f,cur_chr) - else begin - if direction=dir_tate then f:=cur_tfont else f:=cur_jfont; - KANJI(cx):=cur_chr - end - else if cur_cmd=char_num then - begin scan_char_num; - if (cur_chr>=0)and(cur_chr<256)then q:=new_character(f,cur_val) - else begin - if direction=dir_tate then f:=cur_tfont else f:=cur_jfont; - KANJI(cx):=cur_chr - end - end -else back_input; -if direction=dir_tate then - begin if font_dir[f]=dir_tate then disp:=0 - else if font_dir[f]=dir_yoko then disp:=t_baseline_shift-y_baseline_shift - else disp:=t_baseline_shift - end -else begin if font_dir[f]=dir_yoko then disp:=0 - else if font_dir[f]=dir_tate then disp:=y_baseline_shift-t_baseline_shift - else disp:=y_baseline_shift - end; -@; -if KANJI(cx)<>empty then - begin q:=new_character(f,get_jfm_pos(KANJI(cx),f)); - link(q):=get_avail; info(link(q)):=KANJI(cx); - end; -@z - -@x [47.1125] l.22200 - pTeX: make_accent Kanji -if h<>x then {the accent must be shifted up or down} - begin p:=hpack(p,natural); shift_amount(p):=x-h; - end; -@y -if h<>x then {the accent must be shifted up or down} - begin delete_glue_ref(cur_kanji_skip); delete_glue_ref(cur_xkanji_skip); - cur_kanji_skip:=zero_glue; cur_xkanji_skip:=zero_glue; - add_glue_ref(cur_kanji_skip); add_glue_ref(cur_xkanji_skip); - p:=hpack(p,natural); shift_amount(p):=x-h; - end; -@z - -@x l.22334 - pTeX -procedure cs_error; -begin -if cur_chr = 10 then -begin - print_err("Extra "); print_esc("endmubyte"); -@.Extra \\endmubyte@> - help1("I'm ignoring this, since I wasn't doing a \mubyte."); -end else begin - print_err("Extra "); print_esc("endcsname"); -@.Extra \\endcsname@> - help1("I'm ignoring this, since I wasn't doing a \csname."); -end; -@y -procedure cs_error; -begin print_err("Extra "); print_esc("endcsname"); -@.Extra \\endcsname@> -help1("I'm ignoring this, since I wasn't doing a \csname."); -@z - -@x [48.1138] l.22385 - pTeX: init math : direction < 0 ... math direction -if (cur_cmd=math_shift)and(mode>0) then @ -else begin back_input; @; - end; -@y -if (cur_cmd=math_shift)and(mode>0) then @ -else begin back_input; @; - end; -direction:=-abs(direction); -@z - -@x [48.1145] l.22435 - pTeX: Call adjust_hlist at begin of display -else begin line_break(display_widow_penalty);@/ -@y -else begin adjust_hlist(head,true); line_break(display_widow_penalty);@/ -@z - -@x [48.1147] l.22471 - pTeX: Skip kanji 2nd node, dir_node -reswitch: if is_char_node(p) then - begin f:=font(p); d:=char_width(f)(char_info(f)(character(p))); - goto found; - end; -case type(p) of -hlist_node,vlist_node,rule_node: begin d:=width(p); goto found; - end; -@y -reswitch: if is_char_node(p) then - begin f:=font(p); d:=char_width(f)(orig_char_info(f)(character(p))); - if font_dir[f]<>dir_default then p:=link(p); - goto found; - end; -case type(p) of -hlist_node,vlist_node,dir_node,rule_node: begin d:=width(p); goto found; - end; -@z - -@x [48.1150] l.22541 - pTeX: scan_math -mmode+left_brace: begin tail_append(new_noad); - back_input; scan_math(nucleus(tail)); - end; -@y -mmode+left_brace: begin tail_append(new_noad); - back_input; scan_math(nucleus(tail),kcode_noad(tail)); - end; -@z - -@x [48.1151] l.22555 - pTeX: scan_math: use Kanji in math_mode -procedure scan_math(@!p:pointer); -label restart,reswitch,exit; -var c:integer; {math character code} -begin restart:@; -reswitch:case cur_cmd of -letter,other_char,char_given: begin c:=ho(math_code(cur_chr)); - if c=@'100000 then - begin @; - goto restart; - end; - end; -@y -procedure scan_math(@!p,@!q:pointer); -label restart,reswitch,exit; -var c:integer; {math character code} -cx:KANJI_code; {temporary register for KANJI} -begin KANJI(cx):=0; -restart: @; -reswitch:case cur_cmd of -letter,other_char,char_given: - if (cur_chr>=0)and(cur_chr<=256) then begin - c:=ho(math_code(cur_chr)); - if c=@'100000 then - begin @; - goto restart; - end; - end - else - KANJI(cx):=cur_chr; -kanji,kana,other_kchar: cx:=cur_chr; -@z - -@x [48.1151] l.22576 - pTeX: scan_math: use Kanji in math_mode -math_type(p):=math_char; character(p):=qi(c mod 256); -if (c>=var_code)and fam_in_range then fam(p):=cur_fam -else fam(p):=(c div 256) mod 16; -@y -if KANJI(cx)=0 then - begin math_type(p):=math_char; character(p):=qi(c mod 256); - if (c>=var_code)and(fam_in_range) then fam(p):=cur_fam - else fam(p):=(c div 256) mod 16; - if font_dir[fam_fnt(fam(p)+cur_size)]<>dir_default then - begin print_err("Not one-byte family"); - help1("IGNORE.");@/ - error; - end - end -else begin - if q=null then - begin math_type(p):=sub_mlist; info(p):=new_noad; - p:=nucleus(info(p)); q:=kcode_noad_nucleus(p); - end; - math_type(p):=math_jchar; fam(p):=cur_jfam; character(p):=qi(0); - info(q):=KANJI(cx); - if font_dir[fam_fnt(fam(p)+cur_size)]=dir_default then - begin print_err("Not two-byte family"); - help1("IGNORE.");@/ - error; - end - end; -@z - -@x [48.1154] l.22605 - pTeX: math mode -mmode+letter,mmode+other_char,mmode+char_given: - set_math_char(ho(math_code(cur_chr))); -mmode+char_num: begin scan_char_num; cur_chr:=cur_val; - set_math_char(ho(math_code(cur_chr))); - end; -@y -mmode+letter,mmode+other_char,mmode+char_given: - if (cur_chr>=0)and(cur_chr<256) then - if cur_chr<128 then set_math_char(ho(math_code(cur_chr))) - else set_math_char(cur_chr) - else set_math_kchar(cur_chr); -mmode+kanji,mmode+kana,mmode+other_kchar: begin - cx:=cur_chr; set_math_kchar(KANJI(cx)); - end; -mmode+char_num: begin scan_char_num; cur_chr:=cur_val; - if (cur_chr>=0)and(cur_chr<256) then - if cur_chr<128 then set_math_char(ho(math_code(cur_chr))) - else set_math_char(cur_chr) - else set_math_kchar(cur_chr); - end; -@z - -@x [48.1155] l.22635 - pTeX: set_math_char - link(tail):=p; tail:=p; -@y - link(tail):=p; tail:=p; - if font_dir[fam_fnt(fam(nucleus(p))+cur_size)]<>dir_default then begin - print_err("Not one-byte family"); - help1("IGNORE.");@/ - error; - end -@z - -@x [48.1158] l.22690 - pTeX: scan_math - type(tail):=cur_chr; scan_math(nucleus(tail)); -@y - type(tail):=cur_chr; scan_math(nucleus(tail),kcode_noad(tail)); -@z - -@x [48.1163] l.22750 - pTeX: scan_math -scan_delimiter(left_delimiter(tail),true); scan_math(nucleus(tail)); -@y -scan_delimiter(left_delimiter(tail),true); -scan_math(nucleus(tail),kcode_noad(tail)); -@z - -@x [48.1164] l.22770 - pTeX: scan_math -scan_math(nucleus(tail)); -@y -scan_math(nucleus(tail),kcode_noad(tail)); -@z - -@x [48.1164] l.22790 - pTeX: vcenter : dir -vcenter_group: begin end_graf; unsave; save_ptr:=save_ptr-2; - p:=vpack(link(head),saved(1),saved(0)); pop_nest; - tail_append(new_noad); type(tail):=vcenter_noad; - math_type(nucleus(tail)):=sub_box; info(nucleus(tail)):=p; - end; -@y -vcenter_group: begin end_graf; unsave; save_ptr:=save_ptr-2; - p:=vpack(link(head),saved(1),saved(0)); - box_dir(p):=abs(direction); pop_nest; - if box_dir(p)<>abs(direction) then p:=new_dir_node(p,abs(direction)); - tail_append(new_noad); type(tail):=vcenter_noad; - math_type(nucleus(tail)):=sub_box; info(nucleus(tail)):=p; - end; -@z - -@x [48.1176] l.22864 - pTeX: scan_math -scan_math(p); -@y -scan_math(p,null); -@z - -@x [48.1186] l.23006 - pTeX: copy kanji code - if math_type(supscr(p))=empty then - begin mem[saved(0)].hh:=mem[nucleus(p)].hh; -@y - if ((math_type(supscr(p))=empty)and(math_kcode(p)=null)) then - begin mem[saved(0)].hh:=mem[nucleus(p)].hh; -@z - -@x [48.1194] l.23078 - pTeX: set cur_kanji_skip, cur_xkanji_skip -var l:boolean; {`\.{\\leqno}' instead of `\.{\\eqno}'} -@y -var l:boolean; {`\.{\\leqno}' instead of `\.{\\eqno}'} -@!disp:scaled; {displacement} -@z - -@x [48.1194] l.23087 - pTeX: set cur_kanji_skip, cur_xkanji_skip -m:=mode; l:=false; p:=fin_mlist(null); {this pops the nest} -@y -delete_glue_ref(cur_kanji_skip); delete_glue_ref(cur_xkanji_skip); -if auto_spacing>0 then cur_kanji_skip:=kanji_skip -else cur_kanji_skip:=zero_glue; -if auto_xspacing>0 then cur_xkanji_skip:=xkanji_skip -else cur_xkanji_skip:=zero_glue; -add_glue_ref(cur_kanji_skip); add_glue_ref(cur_xkanji_skip); -m:=mode; l:=false; p:=fin_mlist(null); {this pops the nest} -@z - -@x [48.1196] l.23134 - pTeX: insert disp_node -begin tail_append(new_math(math_surround,before)); -cur_mlist:=p; cur_style:=text_style; mlist_penalties:=(mode>0); mlist_to_hlist; -link(tail):=link(temp_head); -while link(tail)<>null do tail:=link(tail); -tail_append(new_math(math_surround,after)); -space_factor:=1000; unsave; -end -@y -begin if direction=dir_tate then disp:=axis_height(text_size) else disp:=0; -@; -tail_append(new_math(math_surround,before)); -cur_mlist:=p; cur_style:=text_style; mlist_penalties:=(mode>0); mlist_to_hlist; -link(tail):=link(temp_head); -while link(tail)<>null do tail:=link(tail); -tail_append(new_math(math_surround,after)); -@; -space_factor:=1000; unsave; -end -@z - -@x [48.1200] l.23203 - pTeX: adjust direction -push_nest; mode:=hmode; space_factor:=1000; set_cur_lang; clang:=cur_lang; -@y -push_nest; adjust_dir:=abs(direction); -mode:=hmode; space_factor:=1000; set_cur_lang; clang:=cur_lang; -@z - -@x [48.1201] l.23217 - pTeX: free box node - begin free_node(b,box_node_size); -@y - begin delete_glue_ref(space_ptr(b)); delete_glue_ref(xspace_ptr(b)); - free_node(b,box_node_size); -@z - -@x [48.1201] l.23222 - pTeX: free box node - begin free_node(b,box_node_size); -@y - begin delete_glue_ref(space_ptr(b)); delete_glue_ref(xspace_ptr(b)); - free_node(b,box_node_size); -@z - -@x [49.1210] l.23361 - pTeX: set_auto_spacing -any_mode(toks_register), -any_mode(assign_toks), -any_mode(assign_int), -@y -any_mode(assign_kinsoku), -any_mode(assign_inhibit_xsp_code), -any_mode(set_auto_spacing), -any_mode(set_kansuji_char), -any_mode(toks_register), -any_mode(assign_toks), -any_mode(assign_int), -any_mode(def_jfont), -any_mode(def_tfont), -@z - -@x [49.1211] l.23397 - pTeX: prefixed_command -procedure prefixed_command; -label done,exit; -var a:small_number; {accumulated prefix codes so far} -@y -procedure prefixed_command; -label done,exit; -var a:small_number; {accumulated prefix codes so far} -@!m:integer; {ditto} -@z - -@x l.23403 - pTeX -@!p,@!q,@!r:pointer; {for temporary short-term use} -@y -@!p,@!q:pointer; {for temporary short-term use} -@z - -@x [49.1217] l.23487 - pTeX: select cur font -set_font: define(cur_font_loc,data,cur_chr); -@y -set_font: begin - if font_dir[cur_chr]=dir_yoko then - define(cur_jfont_loc,data,cur_chr) - else if font_dir[cur_chr]=dir_tate then - define(cur_tfont_loc,data,cur_chr) - else - define(cur_font_loc,data,cur_chr) -end; -@z - -@x l.23504 - pTeX -primitive("futurelet",let,normal+1);@/ -@!@:future_let_}{\.{\\futurelet} primitive@> -if enctex_p then -begin - primitive("mubyte",let,normal+10);@/ -@!@:mubyte_}{\.{\\mubyte} primitive@> - primitive("noconvert",let,normal+11);@/ -@!@:noconvert_}{\.{\\noconvert} primitive@> -end; - -@ @= -let: if chr_code<>normal then - if chr_code = normal+10 then print_esc("mubyte") - else if chr_code = normal+11 then print_esc("noconvert") - else print_esc("futurelet") - else print_esc("let"); - -@ @= -let: if cur_chr = normal+11 then do_nothing { noconvert primitive } - else if cur_chr = normal+10 then { mubyte primitive } - begin - selector:=term_and_log; - get_token; - mubyte_stoken := cur_tok; - if cur_tok <= cs_token_flag then mubyte_stoken := cur_tok mod 256; - mubyte_prefix := 60; mubyte_relax := false; - mubyte_tablein := true; mubyte_tableout := true; - get_x_token; - if cur_cmd = spacer then get_x_token; - if cur_cmd = sub_mark then - begin - mubyte_tableout := false; get_x_token; - if cur_cmd = sub_mark then - begin - mubyte_tableout := true; mubyte_tablein := false; - get_x_token; - end; - end else if (mubyte_stoken > cs_token_flag) and - (cur_cmd = mac_param) then - begin - mubyte_tableout := false; - scan_int; mubyte_prefix := cur_val; get_x_token; - if mubyte_prefix > 50 then mubyte_prefix := 52; - if mubyte_prefix <= 0 then mubyte_prefix := 51; - end - else if (mubyte_stoken > cs_token_flag) and (cur_cmd = relax) then - begin - mubyte_tableout := true; mubyte_tablein := false; - mubyte_relax := true; get_x_token; - end; - r := get_avail; p := r; - while cur_cs = 0 do begin store_new_token (cur_tok); get_x_token; end; - if (cur_cmd <> end_cs_name) or (cur_chr <> 10) then - begin - print_err("Missing "); print_esc("endmubyte"); print(" inserted"); - help2("The control sequence marked should")@/ -("not appear in between \mubyte and \endmubyte."); - back_error; - end; - p := link(r); - if (p = null) and mubyte_tablein then - begin - print_err("The empty , "); - print_esc("mubyte"); print(" ignored"); - help2("The in")@/ -("\mubyte \endmubyte should not be empty."); - error; - end else begin - while p <> null do - begin - append_char (info(p) mod 256); - p := link (p); - end; - flush_list (r); - if (str_start [str_ptr] + 1 = pool_ptr) and - (str_pool [pool_ptr-1] = mubyte_stoken) then - begin - if mubyte_read [mubyte_stoken] <> null - and mubyte_tablein then { clearing data } - dispose_munode (mubyte_read [mubyte_stoken]); - if mubyte_tablein then mubyte_read [mubyte_stoken] := null; - if mubyte_tableout then mubyte_write [mubyte_stoken] := 0; - pool_ptr := str_start [str_ptr]; - end else begin - if mubyte_tablein then mubyte_update; { updating input side } - if mubyte_tableout then { updating output side } - begin - if mubyte_stoken > cs_token_flag then { control sequence } - begin - dispose_mutableout (mubyte_stoken-cs_token_flag); - if (str_start [str_ptr] < pool_ptr) or mubyte_relax then - begin { store data } - r := mubyte_cswrite[(mubyte_stoken-cs_token_flag) mod 128]; - p := get_avail; - mubyte_cswrite[(mubyte_stoken-cs_token_flag) mod 128] := p; - info (p) := mubyte_stoken-cs_token_flag; - link (p) := get_avail; - p := link (p); - if mubyte_relax then begin - info (p) := 0; pool_ptr := str_start [str_ptr]; - end else info (p) := slow_make_string; - link (p) := r; - end; - end else begin { single character } - if str_start [str_ptr] = pool_ptr then - mubyte_write [mubyte_stoken] := 0 - else - mubyte_write [mubyte_stoken] := slow_make_string; - end; - end else pool_ptr := str_start [str_ptr]; - end; - end; - end else begin { let primitive } - n:=cur_chr; -@y -primitive("futurelet",let,normal+1);@/ -@!@:future_let_}{\.{\\futurelet} primitive@> - -@ @= -let: if chr_code<>normal then print_esc("futurelet")@+else print_esc("let"); - -@ @= -let: begin n:=cur_chr; -@z - -@x [49.1228] l.23785 - pTeX: assign jfam -assign_int: begin p:=cur_chr; scan_optional_equals; scan_int; - word_define(p,cur_val); - end; -@y -assign_int: begin p:=cur_chr; scan_optional_equals; scan_int; - if p=int_base+cur_fam_code then - begin if font_dir[fam_fnt(cur_val)]<>dir_default then - word_define(int_base+cur_jfam_code,cur_val) - else word_define(p,cur_val); - end - else word_define(p,cur_val); - end; -@z - -@x [49.1230] l.23812 - pTeX: xspcode, kcatcode -@= -primitive("catcode",def_code,cat_code_base); -@!@:cat_code_}{\.{\\catcode} primitive@> -@y -@= -primitive("catcode",def_code,cat_code_base); -@!@:cat_code_}{\.{\\catcode} primitive@> -primitive("kcatcode",def_code,kcat_code_base); -@!@:cat_code_}{\.{\\kcatcode} primitive@> -primitive("xspcode",def_code,auto_xsp_code_base); -@!@:auto_xsp_code_}{\.{\\xspcode} primitive@> -@z - -@x l.23815 - pTeX -if enctex_p then -begin - primitive("xordcode",def_code,xord_code_base); -@!@:xord_code_}{\.{\\xordcode} primitive@> - primitive("xchrcode",def_code,xchr_code_base); -@!@:xchr_code_}{\.{\\xchrcode} primitive@> - primitive("xprncode",def_code,xprn_code_base); -@!@:xprn_code_}{\.{\\xprncode} primitive@> -end; -@y -@z - -@x [49.1231] l.23842 - pTeX: xspcode, kcatcode -def_code: if chr_code=xord_code_base then print_esc("xordcode") - else if chr_code=xchr_code_base then print_esc("xchrcode") - else if chr_code=xprn_code_base then print_esc("xprncode") - else if chr_code=cat_code_base then print_esc("catcode") - else if chr_code=math_code_base then print_esc("mathcode") -@y -def_code: if chr_code=cat_code_base then print_esc("catcode") - else if chr_code=kcat_code_base then print_esc("kcatcode") - else if chr_code=auto_xsp_code_base then print_esc("xspcode") - else if chr_code=math_code_base then print_esc("mathcode") -@z - -@x [49.1232] l.23857 - pTeX: kcatcode -def_code: begin @; - p:=cur_chr; scan_char_num; - if p=xord_code_base then p:=cur_val - else if p=xchr_code_base then p:=cur_val+256 - else if p=xprn_code_base then p:=cur_val+512 - else p:=p+cur_val; - scan_optional_equals; - scan_int; - if ((cur_val<0)and(pn) then - begin print_err("Invalid code ("); print_int(cur_val); -@.Invalid code@> - if p; - @; - p:=cur_chr; scan_char_num; - if p=kcat_code_base then p:=p+Hi(cur_val) else p:=p+cur_val; - scan_optional_equals; scan_int; - if ((cur_valn) then - begin print_err("Invalid code ("); print_int(cur_val); -@.Invalid code@> - if p= -if cur_chr=cat_code_base then n:=max_char_code -@y -@ @= -if cur_chr=kcat_code_base then m:=kanji else m:=0 - -@ @= -if cur_chr=cat_code_base then n:=invalid_char {1byte |max_char_code|} -else if cur_chr=kcat_code_base then n:=max_char_code -@z - -@x [49.1247] l.24083 - pTeX: alter_box_dimen : box_dir -procedure alter_box_dimen; -var c:small_number; {|width_offset| or |height_offset| or |depth_offset|} -@!b:eight_bits; {box number} -begin c:=cur_chr; scan_eight_bit_int; b:=cur_val; scan_optional_equals; -scan_normal_dimen; -if box(b)<>null then mem[box(b)+c].sc:=cur_val; -end; -@y -procedure alter_box_dimen; -var c:small_number; {|width_offset| or |height_offset| or |depth_offset|} -@!b:eight_bits; {box number} -@!p,q:pointer; {temporary registers} -begin c:=cur_chr; scan_eight_bit_int; b:=cur_val; scan_optional_equals; -scan_normal_dimen; -if box(b)<>null then - begin q:=box(b); p:=link(q); - while p<>null do - begin if abs(direction)=box_dir(p) then q:=p; - p:=link(p); - end; - if box_dir(q)<>abs(direction) then - begin q:=new_dir_node(q,abs(direction)); list_ptr(q):=null; - link(q):=link(box(b)); link(box(b)):=q; - end; - mem[q+c].sc:=cur_val; - end; -end; -@z - -@x [49.1256] l.24163 - pTeX: def_tfont -def_font: new_font(a); -@y -def_tfont,def_jfont,def_font: new_font(a); -@z - -@x l.24369 - pTeX -message_printing := true; active_noconvert := true; -token_show(def_ref); -message_printing := false; active_noconvert := false; -selector:=old_setting; -@y -token_show(def_ref); selector:=old_setting; -@z - -@x [49.1292] l.24451 - pTeX: shift_case -@= -t:=info(p); -if t0 then info(p):=t-c+equiv(b+c); - end -@y -@= -t:=info(p); -if (t0 then info(p):=t-c+equiv(b+c); - end -@z - -@x [49.1291] l.24467 - pTeX: show_mode -@d show_lists=3 { \.{\\showlists} } -@y -@d show_lists=3 { \.{\\showlists} } -@d show_mode=4 { \.{\\showmode} } -@z - -@x [49.1291] l.24476 - pTeX: show_mode -primitive("showlists",xray,show_lists); -@!@:show_lists_}{\.{\\showlists} primitive@> -@y -primitive("showlists",xray,show_lists); -@!@:show_lists_}{\.{\\showlists} primitive@> -primitive("showmode",xray,show_mode); -@!@:show_mode_}{\.{\\showmode} primitive@> -@z - -@x [49.1292] l.24483 - pTeX: show_mode - show_lists:print_esc("showlists"); - othercases print_esc("show") -@y - show_lists:print_esc("showlists"); - show_mode:print_esc("showmode"); - othercases print_esc("show") -@z - -@x [49.1293] l.24495 - pTeX: show_mode -show_code: @; -@y -show_code: @; -show_mode: @; -@z - -@x l.24597 - pTeX -@; -@; -@y -@; -@z - -@x l.24631 - pTeX -@; -@; -@y -@; -@z - -@x l.24982 -font_info:=xmalloc_array(fmemory_word, font_mem_size); -@y -font_info:=xmalloc_array(memory_word, font_mem_size); -@z - -@x [50.1320] l.24988 - pTeX: -@ @= -begin -dump_things(font_check[null_font], font_ptr+1-null_font); -@y -@ @= -begin -dump_things(font_dir[null_font], font_ptr+1-null_font); -dump_things(font_num_ext[null_font], font_ptr+1-null_font); -dump_things(font_check[null_font], font_ptr+1-null_font); -@z - -@x [50.1321] l.25000 - pTeX: -dump_things(char_base[null_font], font_ptr+1-null_font); -@y -dump_things(ctype_base[null_font], font_ptr+1-null_font); -dump_things(char_base[null_font], font_ptr+1-null_font); -@z - -@x [50.1322] l.25024 - pTeX: -@= -begin {Allocate the font arrays} -@y -@= -begin {Allocate the font arrays} -font_dir:=xmalloc_array(eight_bits, font_max); -font_num_ext:=xmalloc_array(integer, font_max); -@z - -@x [50.1322] l.25040 - pTeX: -char_base:=xmalloc_array(integer, font_max); -@y -ctype_base:=xmalloc_array(integer, font_max); -char_base:=xmalloc_array(integer, font_max); -@z - -@x [50.1322] l.25050 - pTeX: -undump_things(font_check[null_font], font_ptr+1-null_font); -@y -undump_things(font_dir[null_font], font_ptr+1-null_font); -undump_things(font_num_ext[null_font], font_ptr+1-null_font); -undump_things(font_check[null_font], font_ptr+1-null_font); -@z - -@x [50.1322] l.25064 - pTeX: -undump_things(char_base[null_font], font_ptr+1-null_font); -@y -undump_things(ctype_base[null_font], font_ptr+1-null_font); -undump_things(char_base[null_font], font_ptr+1-null_font); -@z - -@x l.25363 - pTeX - font_info:=xmalloc_array (fmemory_word, font_mem_size); -@y - font_info:=xmalloc_array (memory_word, font_mem_size); -@z - -@x l.25539 - pTeX -if enctex_enabled_p then - begin wterm(encTeX_banner); wterm_ln(', reencoding enabled.'); - if translate_filename then begin - wterm_ln(' (\xordcode, \xchrcode, \xprncode overridden by TCX)'); - end; - end; -@y -@z - -@x [51.1337] l.25563 - pTeX: - font_check:=xmalloc_array(four_quarters, font_max); -@y - font_dir:=xmalloc_array(eight_bits, font_max); - font_num_ext:=xmalloc_array(integer, font_max); - font_check:=xmalloc_array(four_quarters, font_max); -@z - -@x [51.1337] l.25577 - pTeX: - char_base:=xmalloc_array(integer, font_max); -@y - ctype_base:=xmalloc_array(integer, font_max); - char_base:=xmalloc_array(integer, font_max); -@z - -@x [51.1337] l.25587 - pTeX: - font_ptr:=null_font; fmem_ptr:=7; -@y - font_ptr:=null_font; fmem_ptr:=7; - font_dir[null_font]:=dir_default; - font_num_ext[null_font]:=0; -@z - -@x [51.1337] l.25594 - pTeX: - char_base[null_font]:=0; width_base[null_font]:=0; -@y - ctype_base[null_font]:=0; char_base[null_font]:=0; width_base[null_font]:=0; -@z - -@x l.25747 - pTeX -@d write_stream(#) == type(#+1) {stream number (0 to 17)} -@d mubyte_zero == 64 -@d write_mubyte(#) == subtype(#+1) {mubyte value + |mubyte_zero|} -@y -@d write_stream(#) == info(#+1) {stream number (0 to 17)} -@z - -@x l.25849 - pTeX - else if (cur_val>15) and (cur_val <> 18) then cur_val:=16; - end; -write_stream(tail):=cur_val; -if mubyte_out + mubyte_zero < 0 then write_mubyte(tail) := 0 -else if mubyte_out + mubyte_zero >= 2*mubyte_zero then - write_mubyte(tail) := 2*mubyte_zero - 1 - else write_mubyte(tail) := mubyte_out + mubyte_zero; -@y - else if (cur_val>15) and (cur_val <> 18) then cur_val:=16; - end; -write_stream(tail):=cur_val; -@z - -@x l.25881 - pTeX -begin new_whatsit(special_node,write_node_size); -if spec_out + mubyte_zero < 0 then write_stream(tail) := 0 -else if spec_out + mubyte_zero >= 2*mubyte_zero then - write_stream(tail) := 2*mubyte_zero - 1 - else write_stream(tail) := spec_out + mubyte_zero; -if mubyte_out + mubyte_zero < 0 then write_mubyte(tail) := 0 -else if mubyte_out + mubyte_zero >= 2*mubyte_zero then - write_mubyte(tail) := 2*mubyte_zero - 1 - else write_mubyte(tail) := mubyte_out + mubyte_zero; -if (spec_out = 2) or (spec_out = 3) then - if (mubyte_out > 2) or (mubyte_out = -1) or (mubyte_out = -2) then - write_noexpanding := true; -p:=scan_toks(false,true); write_tokens(tail):=def_ref; -write_noexpanding := false; -@y -begin new_whatsit(special_node,write_node_size); write_stream(tail):=null; -p:=scan_toks(false,true); write_tokens(tail):=def_ref; -@z - -@x l.25909 - pTeX -if (s = "write") and (write_mubyte (p) <> mubyte_zero) then -begin - print_char ("<"); print_int (write_mubyte(p)-mubyte_zero); print_char (">"); -end; -@y -@z - -@x l.25925 - pTeX -if write_stream(p) <> mubyte_zero then -begin - print_char ("<"); print_int (write_stream(p)-mubyte_zero); - if (write_stream(p)-mubyte_zero = 2) or - (write_stream(p)-mubyte_zero = 3) then - begin - print_char (":"); print_int (write_mubyte(p)-mubyte_zero); - end; - print_char (">"); -end; -@y -@z - -@x l.26009 - pTeX -spec_sout := spec_out; spec_out := write_stream(p) - mubyte_zero; -mubyte_sout := mubyte_out; mubyte_out := write_mubyte(p) - mubyte_zero; -active_noconvert := true; -mubyte_slog := mubyte_log; -mubyte_log := 0; -if (mubyte_out > 0) or (mubyte_out = -1) then mubyte_log := 1; -if (spec_out = 2) or (spec_out = 3) then -begin - if (mubyte_out > 0) or (mubyte_out = -1) then - begin - special_printing := true; mubyte_log := 1; - end; - if mubyte_out > 1 then cs_converting := true; -end; -@y -@z - -@x l.26031 - pTeX -if (spec_out = 1) or (spec_out = 3) then - for k:=str_start[str_ptr] to pool_ptr-1 do - str_pool[k] := si(xchr[so(str_pool[k])]); -for k:=str_start[str_ptr] to pool_ptr-1 do dvi_out(so(str_pool[k])); -spec_out := spec_sout; mubyte_out := mubyte_sout; mubyte_log := mubyte_slog; -special_printing := false; cs_converting := false; -active_noconvert := false; -@y - for k:=str_start[str_ptr] to pool_ptr-1 do dvi_out(so(str_pool[k])); -@z - -@x l.26062 - pTeX -begin -mubyte_sout := mubyte_out; mubyte_out := write_mubyte(p) - mubyte_zero; -if (mubyte_out > 2) or (mubyte_out = -1) or (mubyte_out = -2) then - write_noexpanding := true; -@ 1 then cs_converting := true; -mubyte_slog := mubyte_log; -if (mubyte_out > 0) or (mubyte_out = -1) then mubyte_log := 1 -else mubyte_log := 0; -token_show(def_ref); print_ln; -cs_converting := false; write_noexpanding := false; -active_noconvert := false; -mubyte_out := mubyte_sout; mubyte_log := mubyte_slog; -@y - token_show(def_ref); print_ln; -@z - -@x [53.1376] l.26309 - pTeX: -@ = -@!debug_format_file: boolean; -@y -@ = -@!debug_format_file: boolean; - -@ @= -@!debug debug_format_file:=true; @+gubed; -@z - -@x l.26685 - pTeX -@* \[54/enc\TeX] System-dependent changes for enc\TeX. - -@d encTeX_banner == ' encTeX v. Jun. 2004' - -@ The boolean variable |enctex_p| is set by web2c according to the given -command line option (or an entry in the configuration file) before any -\TeX{} function is called. - -@ = -@!enctex_p: boolean; - - -@ The boolean variable |enctex_enabled_p| is used to enable enc\TeX's -primitives. It is initialised to |false|. When loading a \.{FMT} it -is set to the value of the boolean |enctex_p| saved in the \.{FMT} file. -Additionally it is set to the value of |enctex_p| in Ini\TeX. - -@= -@!enctex_enabled_p:boolean; {enable encTeX} - - -@ @= -enctex_enabled_p:=false; - - -@ Auxiliary functions/procedures for enc\TeX{} (by Petr Olsak) follow. -These functions implement the \.{\\mubyte} code to convert -the multibytes in |buffer| to one byte or to one control -sequence. These functions manipulate a mubyte tree: each node of -this tree is token list with n+1 tokens (first token consist the byte -from the byte sequence itself and the other tokens point to the -branches). If you travel from root of the tree to a leaf then you -find exactly one byte sequence which we have to convert to one byte or -control sequence. There are two variants of the leaf: the ``definitive -end'' or the ``middle leaf'' if a longer byte sequence exists and the mubyte -tree continues under this leaf. First variant is implemented as one -memory word where the link part includes the token to -which we have to convert and type part includes the number 60 (normal -conversion) or 1..52 (insert the control sequence). -The second variant of ``middle leaf'' is implemented as two memory words: -first one has a type advanced by 64 and link points to the second -word where info part includes the token to which we have to convert -and link points to the next token list with the branches of -the subtree. - -The inverse: one byte to multi byte (for log printing and \.{\\write} -printing) is implemented via a pool. Each multibyte sequence is stored -in a pool as a string and |mubyte_write|[{\it printed char\/}] points -to this string. - -@d new_mubyte_node == - link (p) := get_avail; p := link (p); info (p) := get_avail; p := info (p) -@d subinfo (#) == subtype (#) - -@= -{ read |buffer|[|i|] and convert multibyte. |i| should have been - of type 0..|buf_size|, but web2c doesn't like that construct in - argument lists. } -function read_buffer(var i:integer):ASCII_code; -var p: pointer; - last_found: integer; - last_type: integer; -begin - mubyte_skip := 0; mubyte_token := 0; - read_buffer := buffer[i]; - if mubyte_in = 0 then - begin - if mubyte_keep > 0 then mubyte_keep := 0; - return ; - end; - last_found := -2; - if (i = start) and (not mubyte_start) then - begin - mubyte_keep := 0; - if (end_line_char >= 0) and (end_line_char < 256) then - if mubyte_read [end_line_char] <> null then - begin - mubyte_start := true; mubyte_skip := -1; - p := mubyte_read [end_line_char]; - goto continue; - end; - end; -restart: - mubyte_start := false; - if (mubyte_read [buffer[i]] = null) or (mubyte_keep > 0) then - begin - if mubyte_keep > 0 then decr (mubyte_keep); - return ; - end; - p := mubyte_read [buffer[i]]; -continue: - if type (p) >= 64 then - begin - last_type := type (p) - 64; - p := link (p); - mubyte_token := info (p); last_found := mubyte_skip; - end else if type (p) > 0 then - begin - last_type := type (p); - mubyte_token := link (p); - goto found; - end; - incr (mubyte_skip); - if i + mubyte_skip > limit then - begin - mubyte_skip := 0; - if mubyte_start then goto restart; - return; - end; - repeat - p := link (p); - if subinfo (info(p)) = buffer [i+mubyte_skip] then - begin - p := info (p); goto continue; - end; - until link (p) = null; - mubyte_skip := 0; - if mubyte_start then goto restart; - if last_found = -2 then return; { no found } - mubyte_skip := last_found; -found: - if mubyte_token < 256 then { multibyte to one byte } - begin - read_buffer := mubyte_token; mubyte_token := 0; - i := i + mubyte_skip; - if mubyte_start and (i >= start) then mubyte_start := false; - return; - end else begin { multibyte to control sequence } - read_buffer := 0; - if last_type = 60 then { normal conversion } - i := i + mubyte_skip - else begin { insert control sequence } - decr (i); mubyte_keep := last_type; - if i < start then mubyte_start := true; - if last_type = 52 then mubyte_keep := 10000; - if last_type = 51 then mubyte_keep := mubyte_skip + 1; - mubyte_skip := -1; - end; - if mubyte_start and (i >= start) then mubyte_start := false; - return; - end; -exit: end; - -@ @= -procedure mubyte_update; { saves new string to mubyte tree } -var j: pool_pointer; - p: pointer; - q: pointer; - in_mutree: integer; -begin - j := str_start [str_ptr]; - if mubyte_read [so(str_pool[j])] = null then - begin - in_mutree := 0; - p := get_avail; - mubyte_read [so(str_pool[j])] := p; - subinfo (p) := so(str_pool[j]); type (p) := 0; - end else begin - in_mutree := 1; - p := mubyte_read [so(str_pool[j])]; - end; - incr (j); - while j < pool_ptr do - begin - if in_mutree = 0 then - begin - new_mubyte_node; subinfo (p) := so(str_pool[j]); type (p) := 0; - end else { |in_mutree| = 1 } - if (type (p) > 0) and (type (p) < 64) then - begin - type (p) := type (p) + 64; - q := link (p); link (p) := get_avail; p := link (p); - info (p) := q; - new_mubyte_node; subinfo (p) := so(str_pool[j]); type (p) := 0; - in_mutree := 0; - end else begin - if type (p) >= 64 then p := link (p); - repeat - p := link (p); - if subinfo (info(p)) = so(str_pool[j]) then - begin - p := info (p); - goto continue; - end; - until link (p) = null; - new_mubyte_node; subinfo (p) := so(str_pool[j]); type (p) := 0; - in_mutree := 0; - end; -continue: - incr (j); - end; - if in_mutree = 1 then - begin - if type (p) = 0 then - begin - type (p) := mubyte_prefix + 64; - q := link (p); link (p) := get_avail; p := link (p); - link (p) := q; info (p) := mubyte_stoken; - return; - end; - if type (p) >= 64 then - begin - type (p) := mubyte_prefix + 64; - p := link (p); info (p) := mubyte_stoken; - return; - end; - end; - type (p) := mubyte_prefix; - link (p) := mubyte_stoken; -exit: end; -@# -procedure dispose_munode (p: pointer); { frees a mu subtree recursivelly } -var q: pointer; -begin - if (type (p) > 0) and (type (p) < 64) then free_avail (p) - else begin - if type (p) >= 64 then - begin - q := link (p); free_avail (p); p := q; - end; - q := link (p); free_avail (p); p := q; - while p <> null do - begin - dispose_munode (info (p)); - q := link (p); - free_avail (p); - p := q; - end; - end; -end; -@# -procedure dispose_mutableout (cs: pointer); { frees record from out table } -var p, q, r: pointer; -begin - p := mubyte_cswrite [cs mod 128]; - r := null; - while p <> null do - if info (p) = cs then - begin - if r <> null then link (r) := link (link (p)) - else mubyte_cswrite[cs mod 128] := link (link (p)); - q := link (link(p)); - free_avail (link(p)); free_avail (p); - p := q; - end else begin - r := link (p); p := link (r); - end; -end; - -@ The |print_buffer| procedure prints one character from |buffer|[|i|]. -It also increases |i| to the next character in the buffer. - -@= -{ print one char from |buffer|[|i|]. |i| should have been of type - 0..|buf_size|, but web2c doesn't like that construct in argument lists. } -procedure print_buffer(var i:integer); -var c: ASCII_code; -begin - if mubyte_in = 0 then print (buffer[i]) { normal TeX } - else if mubyte_log > 0 then print_char (buffer[i]) - else begin - c := read_buffer (i); - if mubyte_token > 0 then print_cs (mubyte_token-cs_token_flag) - else print (c); - end; - incr (i); -end; - -@ Additional material to dump for enc\TeX. This includes whether -enc\TeX is enabled, and if it is we also have to dump the \.{\\mubyte} -arrays. - -@= -dump_int(@"45435458); {enc\TeX's magic constant: "ECTX"} -if not enctex_p then dump_int(0) -else begin - dump_int(1); - dump_things(mubyte_read[0], 256); - dump_things(mubyte_write[0], 256); - dump_things(mubyte_cswrite[0], 128); -end; - -@ Undumping the additional material we dumped for enc\TeX. This includes -conditionally undumping the \.{\\mubyte} arrays. - -@= -undump_int(x); {check magic constant of enc\TeX} -if x<>@"45435458 then goto bad_fmt; -undump_int(x); {undump |enctex_p| flag into |enctex_enabled_p|} -if x=0 then enctex_enabled_p:=false -else if x<>1 then goto bad_fmt -else begin - enctex_enabled_p:=true; - undump_things(mubyte_read[0], 256); - undump_things(mubyte_write[0], 256); - undump_things(mubyte_cswrite[0], 128); -end; - -@y -@z - -@x l.26984 - pTeX -@* \[54] System-dependent changes. -@y -@* \[55/p\TeX] System-dependent changes for p\TeX. -This section described extended variables, procesures, functions and so on -for pTeX. - -@= -function get_jfm_pos(@!kcode:KANJI_code;@!f:internal_font_number):eight_bits; -var @!jc:KANJI_code; {temporary register for KANJI} -@!sp,@!mp,@!ep:pointer; -begin@/ -if (proc_kanji_code=sjis_enc) then jc:=SJIStoJIS(kcode) -else jc:=EUCtoJIS(kcode); -sp:=1; { start position } -ep:=font_num_ext[f]-1; { end position } -if (kchar_code(f)(sp)<=jc)and(jc<=kchar_code(f)(ep)) then - begin while (sp <= ep) do - begin mp:=sp+((ep-sp) div 2); - if jckchar_code(f)(mp) then sp:=mp+1 - else - begin get_jfm_pos:=kchar_type(f)(mp); return; - end; - end; - end; -get_jfm_pos:=kchar_type(f)(0); -end; - -@ Following codes are used to calcutation a KANJI width and height. - -@= -@!t: eight_bits; - -@ @= -if direction=dir_tate then - v:=char_width(cur_tfont)(orig_char_info(cur_tfont)(qi(0))) -else - v:=char_width(cur_jfont)(orig_char_info(cur_jfont)(qi(0))) - -@ @= -if direction=dir_tate then begin - t:=height_depth(orig_char_info(cur_tfont)(qi(0))); - v:=char_height(cur_tfont)(t)+char_depth(cur_tfont)(t); -end else begin - t:=height_depth(orig_char_info(cur_jfont)(qi(0))); - v:=char_height(cur_jfont)(t)+char_depth(cur_jfont)(t); -end - -@ set a kansuji character. - -@ @= -primitive("kansujichar",set_kansuji_char,0); -@!@:kansujichar_}{\.{\\kansujichar} primitive@> - -@ @= -set_kansuji_char: print_esc("kansujichar"); - -@ @= -set_kansuji_char: -begin p:=cur_chr; scan_int; n:=cur_val; scan_optional_equals; scan_int; -if not check_kanji(cur_val) then - begin print_err("Invalid KANSUJI char ("); - print_hex(cur_val); print_char(")"); -@.Invalid KANSUJI char@> - help1("I'm skip this control sequences.");@/ - error; return; - end -else if (n<0)or(n>9) then - begin print_err("Invalid KANSUJI number ("); print_int(n); print_char(")"); -@.Invalid KANSUJI number@> - help1("I'm skip this control sequences.");@/ - error; return; - end -else - begin - if (proc_kanji_code=sjis_enc) then - define(kansuji_base+n,n,tokanji(SJIStoJIS(cur_val))) - else if (proc_kanji_code=euc_enc) then - define(kansuji_base+n,n,tokanji(EUCtoJIS(cur_val))) - else if (proc_kanji_code=jis_enc) then - define(kansuji_base+n,n,tokanji(cur_val)); - end; -end; - -@ |print_kansuji| procedure converts a number to KANJI number. - -@ @= -procedure print_kansuji(@!n:integer); -var @!k:0..23; {index to current digit; we assume that $|n|<10^{23}$} -@!cx: KANJI_code; {temporary register for KANJI} -begin k:=0; - if n<0 then return; {nonpositive input produces no output} - repeat dig[k]:=n mod 10; n:=n div 10; incr(k); - until n=0; - begin while k>0 do - begin decr(k); - cx:=kansuji_char(dig[k]); - if (proc_kanji_code=sjis_enc) then cx:=JIStoSJIS(cx) - else if (proc_kanji_code=euc_enc) then cx:=JIStoEUC(cx); - print_kanji(cx); - end; - end; -end; - -@ pTeX inserts a glue specified by \.{\\kanjiskip} between 2byte-characters, -automatically, if \.{\\autospacing}. This glue is suppressed by -\.{\\noautospacing}. -\.{\\xkanjiskip}, \.{\\noautoxspacing}, \.{\\autoxspacing}, \.{\\xspcode} is -used to control between 2byte and 1byte characters. - -@d reset_auto_spacing_code=0 -@d set_auto_spacing_code=1 -@d reset_auto_xspacing_code=2 -@d set_auto_xspacing_code=3 - -@= -primitive("autospacing",set_auto_spacing,set_auto_spacing_code); -@!@:auto_spacing_}{\.{\\autospacing} primitive@> -primitive("noautospacing",set_auto_spacing,reset_auto_spacing_code); -@!@:no_auto_spacing_}{\.{\\noautospacing} primitive@> -primitive("autoxspacing",set_auto_spacing,set_auto_xspacing_code); -@!@:auto_xspacing_}{\.{\\autoxspacing} primitive@> -primitive("noautoxspacing",set_auto_spacing,reset_auto_xspacing_code); -@!@:no_auto_xspacing_}{\.{\\noautoxspacing} primitive@> - -@ @= -set_auto_spacing:begin - if (chr_code mod 2)=0 then print_esc("noauto") else print_esc("auto"); - if chr_code<2 then print("spacing") else print("xspacing"); -end; - -@ @= -set_auto_spacing:begin - if cur_chr<2 then p:=auto_spacing_code - else begin p:=auto_xspacing_code; cur_chr:=(cur_chr mod 2); end; - define(p,data,cur_chr); -end; - -@ Following codes are used in section 49. - -@= -begin print_nl("> "); -if auto_spacing>0 then print("auto spacing mode; ") - else print("no auto spacing mode; "); -print_nl("> "); -if auto_xspacing>0 then print("auto xspacing mode") - else print("no auto xspacing mode"); -goto common_ending; -end - -@ The \.{\\inhibitglue} primitive control to insert a glue specified -JFM (Japanese Font Metic) file. The \.{\\inhibitxspcode} is used to control -inserting a space between 2byte-char and 1byte-char. - -@d inhibit_both=0 {disable to insert space before 2byte-char and after it} -@d inhibit_previous=1 {disable to insert space before 2byte-char} -@d inhibit_after=2 {disable to insert space after 2byte-char} -@d no_entry=1000 -@d new_pos=0 -@d cur_pos=1 - -@= - inhibit_glue_flag:boolean; - -@ @= - inhibit_glue_flag:=false; - -@ @= - any_mode(inhibit_glue): inhibit_glue_flag:=true; - -@ @= -primitive("inhibitglue",inhibit_glue,0); -@!@:inhibit_glue_}{\.{\\inhibitglue} primitive@> -primitive("inhibitxspcode",assign_inhibit_xsp_code,inhibit_xsp_code_base); -@!@:inhibit_xsp_code_}{\.{\\inhibitxspcode} primitive@> - -@ @= -inhibit_glue: print_esc("inhibitglue"); -assign_inhibit_xsp_code: print_esc("inhibitxspcode"); - -@ @= -function get_inhibit_pos(c:KANJI_code; n:small_number):pointer; -label done, done1; -var p,s:pointer; -begin s:=calc_pos(c); p:=s; -if n=new_pos then - begin repeat - if (inhibit_xsp_code(p)=0)or(inhibit_xsp_code(p)=c) then goto done; - incr(p); if p>255 then p:=0; - until s=p; p:=no_entry; - end -else - begin repeat - if inhibit_xsp_code(p)=0 then goto done1; - if inhibit_xsp_code(p)=c then goto done; - incr(p); if p>255 then p:=0; - until s=p; -done1: p:=no_entry; - end; -done: get_inhibit_pos:=p; -end; - -@ @= -assign_inhibit_xsp_code: -begin p:=cur_chr; scan_int; n:=cur_val; scan_optional_equals; scan_int; -if check_kanji(n) then - begin j:=get_inhibit_pos(tokanji(n),new_pos); - if j=no_entry then - begin print_err("Inhibit table is full!!"); - help1("I'm skip this control sequences.");@/ - error; return; - end; - define(inhibit_xsp_code_base+j,cur_val,n); - end -else - begin print_err("Invalid KANJI code ("); print_hex(n); print_char(")"); -@.Invalid KANJI code@> - help1("I'm skip this control sequences.");@/ - error; return; - end; -end; - -@ @= -begin scan_int; q:=get_inhibit_pos(tokanji(cur_val),cur_pos); -cur_val_level:=int_val; cur_val:=3; -if q<>no_entry then cur_val:=inhibit_xsp_type(q); -end - -@ The \.{\\prebreakpenalty} is used to specified amount of penalties inserted -before the 2byte-char which is first argument of this primitive. -The \.{\\postbreakpenalty} is inserted after the 2byte-char. - -@d pre_break_penalty_code=1 -@d post_break_penalty_code=2 - -@= -primitive("prebreakpenalty",assign_kinsoku,pre_break_penalty_code); -@!@:pre_break_penalty_}{\.{\\prebreakpenalty} primitive@> -primitive("postbreakpenalty",assign_kinsoku,post_break_penalty_code); -@!@:post_break_penalty_}{\.{\\postbreakpenalty} primitive@> - -@ @= -assign_kinsoku: case chr_code of - pre_break_penalty_code: print_esc("prebreakpenalty"); - post_break_penalty_code: print_esc("postbreakpenalty"); - endcases; - -@ @= -function get_kinsoku_pos(c:KANJI_code; n:small_number):pointer; -label done, done1; -var p,s:pointer; -begin s:=calc_pos(c); p:=s; -@!debug -print_ln; print("c:="); print_int(c); print(", p:="); print_int(s); -if p+kinsoku_base<0 then - begin print("p is negative value"); print_ln; - end; -gubed -if n=new_pos then - begin repeat - if (kinsoku_type(p)=0)or(kinsoku_code(p)=c) then goto done; - incr(p); if p>255 then p:=0; - until s=p; - p:=no_entry; - end -else - begin repeat - if kinsoku_type(p)=0 then goto done1; - if kinsoku_code(p)=c then goto done; - incr(p); if p>255 then p:=0; - until s=p; -done1: p:=no_entry; - end; -done: get_kinsoku_pos:=p; -end; - -@ @= -assign_kinsoku: -begin p:=cur_chr; scan_int; n:=cur_val; scan_optional_equals; scan_int; -if check_kanji(n) then - begin j:=get_kinsoku_pos(tokanji(n),new_pos); - if j=no_entry then - begin print_err("KINSOKU table is full!!"); - help1("I'm skip this control sequences.");@/ - error; return; - end; - if (p=pre_break_penalty_code)or(p=post_break_penalty_code) then - begin define(kinsoku_base+j,p,tokanji(n)); - word_define(kinsoku_penalty_base+j,cur_val); - end - else confusion("kinsoku"); -@:this can't happen kinsoku}{\quad kinsoku@> - end -else - begin print_err("Invalid KANJI code for "); - if (p=pre_break_penalty_code) then print("pre") - else if (p=post_break_penalty_code) then print("post") - else print_char("?"); - print("breakpenalty ("); print_hex(n); print_char(")"); -@.Invalid KANJI code@> - help1("I'm skip this control sequences.");@/ - error; return; - end; -end; - -@ @= -begin scan_int; q:=get_kinsoku_pos(tokanji(cur_val),cur_pos); -cur_val_level:=int_val; cur_val:=0; -if (q<>no_entry)and(m=kinsoku_type(q)) then - scanned_result(kinsoku_penalty(q))(int_val); -end - -@ Following codes are used in |main_control|. - -@= -begin kp:=get_kinsoku_pos(cx,cur_pos); -if (kp<>no_entry) then - begin if (kinsoku_type(kp)=pre_break_penalty_code) then - begin if (not is_char_node(cur_q))and(type(cur_q)=penalty_node) then - penalty(cur_q):=penalty(cur_q)+kinsoku_penalty(kp) - else - begin main_p:=link(cur_q); link(cur_q):=new_penalty(kinsoku_penalty(kp)); - subtype(link(cur_q)):=kinsoku_pena; link(link(cur_q)):=main_p; - end; - end - else if (kinsoku_type(kp)=post_break_penalty_code) then - begin tail_append(new_penalty(kinsoku_penalty(kp))); - subtype(tail):=kinsoku_pena; - end; - end; -end; - -@ @= -begin kp:=get_kinsoku_pos(cur_chr,cur_pos); -if (kp<>no_entry) then - begin if (kinsoku_type(kp)=pre_break_penalty_code) then - if (not is_char_node(tail))and(type(tail)=penalty_node) then - penalty(tail):=penalty(tail)+kinsoku_penalty(kp) - else - begin tail_append(new_penalty(kinsoku_penalty(kp))); - subtype(tail):=kinsoku_pena; - end; - end; -end; - -@ @= -begin kp:=get_kinsoku_pos(cx,cur_pos); -if (kp<>no_entry) then - begin if (kinsoku_type(kp)=post_break_penalty_code) then - begin tail_append(new_penalty(kinsoku_penalty(kp))); - subtype(tail):=kinsoku_pena; - end; - end; -end; - -@ This is a part of section 32. - -The procedure |synch_dir| is used in |hlist_out| and |vlist_out|. - -@d dvi_yoko=0 -@d dvi_tate=1 -@d dvi_dtou=3 - -@= -@!dvi_dir:integer; {a \.{DVI} reader program thinks we direct to} -@!cur_dir:integer; {\TeX\ thinks we direct to} -@!page_dir:eight_bits; - -@ @= -page_dir:=dir_yoko; - -@ @= -procedure synch_dir; -var tmp:scaled; {temporary resister} -begin - case cur_dir of - dir_yoko: - if dvi_dir<>cur_dir then begin - synch_h; synch_v; dvi_out(dirchg); dvi_out(dvi_yoko); - dir_used:=true; - case dvi_dir of - dir_tate: begin tmp:=cur_h; cur_h:=-cur_v; cur_v:=tmp end; - dir_dtou: begin tmp:=cur_h; cur_h:=cur_v; cur_v:=-tmp end; - endcases; - dvi_h:=cur_h; dvi_v:=cur_v; dvi_dir:=cur_dir; - end; - dir_tate: - if dvi_dir<>cur_dir then begin - synch_h; synch_v; dvi_out(dirchg); dvi_out(dvi_tate); - dir_used:=true; - case dvi_dir of - dir_yoko: begin tmp:=cur_h; cur_h:=cur_v; cur_v:=-tmp end; - dir_dtou: begin cur_v:=-cur_v; cur_h:=-cur_h; end; - endcases; - dvi_h:=cur_h; dvi_v:=cur_v; dvi_dir:=cur_dir; - end; - dir_dtou: - if dvi_dir<>cur_dir then begin - synch_h; synch_v; dvi_out(dirchg); dvi_out(dvi_dtou); - dir_used:=true; - case dvi_dir of - dir_yoko: begin tmp:=cur_h; cur_h:=-cur_v; cur_v:=tmp end; - dir_tate: begin cur_v:=-cur_v; cur_h:=-cur_h; end; - endcases; - dvi_h:=cur_h; dvi_v:=cur_v; dvi_dir:=cur_dir; - end; - othercases - confusion("synch_dir"); - endcases -end; - -@ This function is called from |adjust_hlist| to used to check, whether -a list which pointed |box_p| contain a printing character. -If the list contain such a character, then return `true', otherwise `false'. -If the first matter is a character, |first_char| is stored it. -|last_char| is stored a last character. If no printing characters exist -in the list, |first_char| and |last_char| is null. -@^recursion@> - -@= -@!first_char:pointer; {first printable character} -@!last_char:pointer; {last printable character} -@!find_first_char:boolean; {find for a first printable character?} - -@ @= -function check_box(box_p:pointer):boolean; -label done; -var @!p:pointer; {run through the current box} -@!flag:boolean; {found any printable character?} -begin flag:=false; p:=box_p; -while p<>null do - begin if is_char_node(p) then - repeat - if find_first_char then - begin first_char:=p; find_first_char:=false - end; - last_char:=p; flag:=true; - if font_dir[font(p)]<>dir_default then p:=link(p); - p:=link(p); - if p=null then goto done; - until not is_char_node(p); - case type(p) of - hlist_node: - begin flag:=true; - if shift_amount(p)=0 then - begin if check_box(list_ptr(p)) then flag:=true; - end - else if find_first_char then find_first_char:=false - else last_char:=null; - end; - ligature_node: if check_box(lig_ptr(p)) then flag:=true; - ins_node,disp_node,mark_node,adjust_node,whatsit_node,penalty_node: - do_nothing; - othercases begin flag:=true; - if find_first_char then find_first_char:=false - else last_char:=null; - end; - endcases; - p:=link(p); - end; -done: check_box:=flag; -end; - -@ Following procedure |adjust_hlist| inserts \.{\\xkanjiskip} between -2byte-char and 1byte-char in hlist which pointed |p|. -Note that the skip is inserted into a place where too difficult to decide -whether inserting or not (i.e, before penalty, after penalty). - -If |pf| is true then insert |jchr_widow_penalty| that is penalty for -creating a widow KANJI character line. - -@d no_skip=0 -@d after_schar=1 {denote after single byte character} -@d after_wchar=2 {denote after double bytes character} - -@= -procedure adjust_hlist(p:pointer;pf:boolean); -label exit; -var q,s,t,u,v,x,z:pointer; - i,k:halfword; - insert_skip:no_skip..after_wchar; - cx:KANJI_code; {temporaly register for KANJI character} - ax:ASCII_code; {temporaly register for ASCII character} - do_ins:boolean; {for inserting |xkanji_skip| into prevous (or after) KANJI} -begin if link(p)=null then goto exit; -if auto_spacing>0 then - begin delete_glue_ref(space_ptr(p)); space_ptr(p):=kanji_skip; - add_glue_ref(kanji_skip); - end; -if auto_xspacing>0 then - begin delete_glue_ref(xspace_ptr(p)); xspace_ptr(p):=xkanji_skip; - add_glue_ref(xkanji_skip); - end; -u:=space_ptr(p); add_glue_ref(u); -s:=xspace_ptr(p); add_glue_ref(s); -if (not is_char_node(link(p))) {p1.0.9d} - and(type(link(p))=glue_node)and(subtype(link(p))=jfm_skip+1) then - begin v:=link(p); link(p):=link(v); - fast_delete_glue_ref(glue_ptr(v)); free_node(v,small_node_size); - end; -i:=0; insert_skip:=no_skip; p:=link(p); v:=p; q:=p; -while p<>null do - begin if is_char_node(p) then - begin repeat @; - q:=p; p:=link(p); incr(i); - if (i>5)and(pf) then - begin if is_char_node(v) then - if font_dir[font(v)]<>dir_default then v:=link(v); - v:=link(v); - end; - until not is_char_node(p); - end - else - begin case type(p) of - hlist_node: @; - ligature_node: @; - penalty_node,disp_node: @; - kern_node: if (insert_skip=after_schar)and(subtype(p)<>explicit) then - do_nothing else insert_skip:=no_skip; - math_node: @; - mark_node,adjust_node,ins_node,whatsit_node: - {These nodes are vanished when typeset is done} - do_nothing; - othercases insert_skip:=no_skip; - endcases; - q:=p; p:=link(p); - end; - end; -if (not is_char_node(q))and(type(q)=glue_node)and(subtype(q)=jfm_skip+1) then - begin fast_delete_glue_ref(glue_ptr(q)); - glue_ptr(q):=zero_glue; add_glue_ref(zero_glue); - end; -delete_glue_ref(u); delete_glue_ref(s); -if (v<>null)and(pf)and(i>5) then @; -exit: -end; - -@ @= -if font_dir[font(p)]<>dir_default then - begin KANJI(cx):=info(link(p)); - if insert_skip=after_schar then @; - p:=link(p); insert_skip:=after_wchar; - end -else - begin ax:=qo(character(p)); - if insert_skip=after_wchar then @; - if auto_xsp_code(ax)>=2 then - insert_skip:=after_schar else insert_skip:=no_skip; - end - -@ @= -begin find_first_char:=true; first_char:=null; last_char:=null; -if (shift_amount(p)=0) then - begin if check_box(list_ptr(p)) then - begin if first_char<>null then @; - if last_char<>null then - begin @; - end else insert_skip:=no_skip; - end else insert_skip:=no_skip; - end else insert_skip:=no_skip; -end - -@ @= -if font_dir[font(first_char)]<>dir_default then - begin KANJI(cx):=info(link(first_char)); - if insert_skip=after_schar then @ - else if insert_skip=after_wchar then @; - insert_skip:=after_wchar; - end -else - begin ax:=qo(character(first_char)); - if insert_skip=after_wchar then @; - if auto_xsp_code(ax)>=2 then - insert_skip:=after_schar else insert_skip:=no_skip; - end; - -@ @= -if font_dir[font(last_char)]<>dir_default then - begin insert_skip:=after_wchar; - if (is_char_node(link(p)))and(font_dir[font(link(p))]<>dir_default) then - begin @; p:=link(p); - end; - end -else - begin ax:=qo(character(last_char)); - if auto_xsp_code(ax)>=2 then - insert_skip:=after_schar else insert_skip:=no_skip; - end; - -@ @= -begin if (subtype(p)=before)and(insert_skip=after_wchar) then - begin ax:=qo("0"); @; - insert_skip:=no_skip; - end -else if (subtype(p)=after) then - begin ax:=qo("0"); insert_skip:=after_schar; - end -else insert_skip:=no_skip; -end - -@ @= -begin t:=lig_ptr(p); -if is_char_node(t) then - begin ax:=qo(character(t)); - if insert_skip=after_wchar then @; - while link(t)<>null do t:=link(t); - if is_char_node(t) then - begin ax:=qo(character(t)); - if auto_xsp_code(ax)>=2 then - insert_skip:=after_schar else insert_skip:=no_skip; - end; - end; -end - -@ @= -begin if is_char_node(link(p)) then - begin q:=p; p:=link(p); - if font_dir[font(p)]<>dir_default then - begin KANJI(cx):=info(link(p)); - if insert_skip=after_schar then @ - else if insert_skip=after_wchar then @; - p:=link(p); insert_skip:=after_wchar; - end - else - begin ax:=qo(character(p)); - if insert_skip=after_wchar then @; - if auto_xsp_code(ax)>=2 then - insert_skip:=after_schar else insert_skip:=no_skip; - end; - end -end - -@ @= -begin - begin x:=get_inhibit_pos(cx,cur_pos); - if x<>no_entry then - if (inhibit_xsp_type(x)=inhibit_both)or - (inhibit_xsp_type(x)=inhibit_previous) then - do_ins:=false else do_ins:=true - else do_ins:=true; - end; -if do_ins then - begin z:=new_glue(s); subtype(z):=xkanji_skip_code+1; - link(z):=link(q); link(q):=z; q:=z; - end; -end - -@ @= -begin if (auto_xsp_code(ax) mod 2)=1 then - begin x:=get_inhibit_pos(cx,cur_pos); - if x<>no_entry then - if (inhibit_xsp_type(x)=inhibit_both)or - (inhibit_xsp_type(x)=inhibit_after) then - do_ins:=false else do_ins:=true - else do_ins:=true; - end -else do_ins:=false; -if do_ins then - begin z:=new_glue(s); subtype(z):=xkanji_skip_code+1; - link(z):=link(q); link(q):=z; q:=z; - end; -end - -@ @= -begin z:=new_glue(u); subtype(z):=kanji_skip_code+1; -link(z):=link(q); link(q):=z; q:=z; -end - -@ @= -begin z:=new_glue(u); subtype(z):=kanji_skip_code+1; -link(z):=link(p); link(p):=z; p:=link(z); q:=z; -end - -@ @= -begin q:=v; p:=link(v); -if (is_char_node(v))and(font_dir[font(v)]<>dir_default) then - begin q:=p; p:=link(p); - end; -t:=q; s:=null; -@; -if (s<>null) then - begin s:=link(t); - if (not is_char_node(s))and(type(s)=penalty_node) then - penalty(s):=penalty(s)+jchr_widow_penalty - else if (jchr_widow_penalty<>0) then - begin s:=new_penalty(jchr_widow_penalty); subtype(s):=widow_pena; - link(s):=link(t); link(t):=s; t:=link(s); - while(not is_char_node(t)) do - begin if (type(t)=glue_node)or(type(t)=kern_node) then goto exit; - t:=link(t); - end; - z:=new_glue(u); subtype(z):=kanji_skip_code+1; - link(z):=link(s); link(s):=z; - end; - end; -end; - -@ @= -while(p<>null) do -begin if is_char_node(p) then - begin if font_dir[font(p)]<>dir_default then - begin KANJI(cx):=info(link(p)); i:=kcat_code(Hi(cx)); k:=0; - if (i=kanji)or(i=kana) then begin t:=q; s:=p; end; - p:=link(p); q:=p; - end - else begin k:=k+1; - if k>1 then begin q:=p; s:=null; end; - end; - end -else begin case type(p) of - penalty_node,mark_node,adjust_node,whatsit_node, - glue_node,kern_node,math_node,disp_node: - do_nothing; - othercases begin q:=p; s:=null; end; - endcases; - end; -p:=link(p); -end - -@ @= -procedure dir_out; -var @!this_box: pointer; {pointer to containing box} -begin this_box:=temp_ptr; - temp_ptr:=list_ptr(this_box); - if (type(temp_ptr)<>hlist_node)and(type(temp_ptr)<>vlist_node) then - confusion("dir_out"); - case box_dir(this_box) of - dir_yoko: - case box_dir(temp_ptr) of - dir_tate: {Tate in Yoko} - begin cur_v:=cur_v-height(this_box); cur_h:=cur_h+depth(temp_ptr) end; - dir_dtou: {DtoU in Yoko} - begin cur_v:=cur_v+depth(this_box); cur_h:=cur_h+height(temp_ptr) end; - endcases; - dir_tate: - case box_dir(temp_ptr) of - dir_yoko: {Yoko in Tate} - begin cur_v:=cur_v+depth(this_box); cur_h:=cur_h+height(temp_ptr) end; - dir_dtou: {DtoU in Tate} - begin - cur_v:=cur_v+depth(this_box)-height(temp_ptr); - cur_h:=cur_h+width(temp_ptr) - end; - endcases; - dir_dtou: - case box_dir(temp_ptr) of - dir_yoko: {Yoko in DtoU} - begin cur_v:=cur_v-height(this_box); cur_h:=cur_h+depth(temp_ptr) end; - dir_tate: {Tate in DtoU} - begin - cur_v:=cur_v+depth(this_box)-height(temp_ptr); - cur_h:=cur_h+width(temp_ptr) - end; - endcases; - endcases; - cur_dir:=box_dir(temp_ptr); - if type(temp_ptr)=vlist_node then vlist_out@+else hlist_out; -end; - -@ These routines are used to output diagnostic which related direction. - -@ @= -procedure print_dir(@!dir:eight_bits); {prints |dir| data} -begin if dir=dir_yoko then print_char("Y") -else if dir=dir_tate then print_char("T") -else if dir=dir_dtou then print_char("D") -end; -@# -procedure print_direction(@!d:integer); {print the direction represented by d} -begin case abs(d) of -dir_yoko: print("yoko"); -dir_tate: print("tate"); -dir_dtou: print("dtou"); -end; -if d<0 then print("(math)"); -print(" direction"); -end; - -@ The procedure |set_math_kchar| is same as |set_math_char| which -written in section 48. - -@= -procedure set_math_kchar(@!c:integer); -var p:pointer; {the new noad} -begin p:=new_noad; math_type(nucleus(p)):=math_jchar; -character(nucleus(p)):=qi(0); -math_kcode(p):=c; fam(nucleus(p)):=cur_jfam; -if font_dir[fam_fnt(fam(nucleus(p))+cur_size)]=dir_default then - begin print_err("Not two-byte family"); - help1("IGNORE.");@/ - error; - end; -type(p):=ord_noad; -link(tail):=p; tail:=p; -end; - -@ This section is a part of |main_control|. - -@= -if is_char_node(tail) then - begin cx:=qo(character(tail)); @; - end -else if type(tail)=ligature_node then - begin cx:=qo(character(lig_char(tail))); @; - end; -if direction=dir_tate then - begin if font_dir[main_f]=dir_tate then disp:=0 - else if font_dir[main_f]=dir_yoko then disp:=t_baseline_shift-y_baseline_shift - else disp:=t_baseline_shift; - main_f:=cur_tfont; - end -else - begin if font_dir[main_f]=dir_yoko then disp:=0 - else if font_dir[main_f]=dir_tate then disp:=y_baseline_shift-t_baseline_shift - else disp:=y_baseline_shift; - main_f:=cur_jfont; - end; -@; -ins_kp:=false; ligature_present:=false; -cur_l:=qi(get_jfm_pos(KANJI(cur_chr),main_f)); -main_i:=orig_char_info(main_f)(qi(0)); -goto main_loop_j+3; -@# -main_loop_j+1: space_factor:=1000; - fast_get_avail(main_p); font(main_p):=main_f; character(main_p):=cur_l; - link(tail):=main_p; tail:=main_p; last_jchr:=tail; - fast_get_avail(main_p); info(main_p):=KANJI(cur_chr); - link(tail):=main_p; tail:=main_p; - cx:=cur_chr; @; - ins_kp:=false; -again_2: - get_next; - main_i:=orig_char_info(main_f)(cur_l); - case cur_cmd of - kanji,kana,other_kchar: begin - cur_l:=qi(get_jfm_pos(KANJI(cur_chr),main_f)); goto main_loop_j+3; - end; - letter,other_char: begin ins_kp:=true; cur_l:=qi(0); goto main_loop_j+3; - end; - endcases; - x_token; - case cur_cmd of - kanji,kana,other_kchar: cur_l:=qi(get_jfm_pos(KANJI(cur_chr),main_f)); - letter,other_char: begin ins_kp:=true; cur_l:=qi(0); end; - char_given: begin - if (cur_chr>=0)and(cur_chr<256) then - begin ins_kp:=true; cur_l:=qi(0); - end - else cur_l:=qi(get_jfm_pos(KANJI(cur_chr),main_f)); - end; - char_num: begin scan_char_num; cur_chr:=cur_val; - if (cur_chr>=0)and(cur_chr<256) then - begin ins_kp:=true; cur_l:=qi(0); - end - else cur_l:=qi(get_jfm_pos(KANJI(cur_chr),main_f)); - end; - inhibit_glue: begin inhibit_glue_flag:=true; goto again_2; end; - othercases begin ins_kp:=max_halfword; - cur_l:=qi(0); cur_r:=non_char; lig_stack:=null; - end; - endcases; -@# -main_loop_j+3: - if ins_kp=true then @; - @; - if (ins_kp=false) then begin { Kanji -> Kanji } - goto main_loop_j+1; - end else if (ins_kp=true) then begin { Kanji -> Ascii } - {@;} - ins_kp:=false; goto main_loop; - end else begin { Kanji -> cs } - {@;} - goto reswitch; - end; - -@ @= -begin if (not is_char_node(tail))and(type(tail)=disp_node) then - begin if prev_disp=disp then - begin free_node(tail,small_node_size); tail:=prev_node; link(tail):=null; - end - else disp_dimen(tail):=disp; - end -else - if disp<>0 then - begin prev_node:=tail; tail_append(get_node(small_node_size)); - type(tail):=disp_node; disp_dimen(tail):=disp; prev_disp:=disp; - end; -end; - -@ @= -if disp<>0 then -begin if (not is_char_node(tail))and(type(tail)=disp_node) then - begin disp_dimen(tail):=0; - end -else - begin prev_node:=tail; tail_append(get_node(small_node_size)); - type(tail):=disp_node; disp_dimen(tail):=0; prev_disp:=disp; - end; -end; - -@ @= -cur_q:=tail; -if inhibit_glue_flag<>true then - begin if char_tag(main_i)=gk_tag then - begin main_k:=glue_kern_start(main_f)(main_i); - repeat main_j:=font_info[main_k].qqqq; - if next_char(main_j)=cur_l then - begin if op_byte(main_j)null then - begin while((type(gp)<>cur_r)and(link(gp)<>null)) do gp:=link(gp); - gq:=glue_ptr(gp); - end - else - begin gp:=get_node(small_node_size); font_glue[main_f]:=gp; - gq:=null; - end; - if gq=null then - begin type(gp):=cur_r; gq:=new_spec(zero_glue); - glue_ptr(gp):=gq; - main_k:=exten_base[main_f]+qi((qo(cur_r))*3); - width(gq):=font_info[main_k].sc; - stretch(gq):=font_info[main_k+1].sc; - shrink(gq):=font_info[main_k+2].sc; - add_glue_ref(gq); link(gp):=get_node(small_node_size); - gp:=link(gp); glue_ptr(gp):=null; link(gp):=null; - end; - tail_append(new_glue(gq)); subtype(tail):=jfm_skip+1; - goto skip_loop; - end - else begin - tail_append(new_kern(char_kern(main_f)(main_j))); - goto skip_loop; - end; - end; - incr(main_k); - until skip_byte(main_j)>=stop_flag; - end; -end; -skip_loop: inhibit_glue_flag:=false; - -@ @= -procedure print_kanji(@!s:KANJI_code); {prints a single character} -begin -if s>255 then - begin print_char(Hi(s)); print_char(Lo(s)); - end else print_char(s); -end; - -@* \[56] System-dependent changes. -@z diff --git a/language/japanese/ptex/ptexextra.c b/language/japanese/ptex/ptexextra.c deleted file mode 100644 index 2679caaba7..0000000000 --- a/language/japanese/ptex/ptexextra.c +++ /dev/null @@ -1,2319 +0,0 @@ -/* texmf.c: Hand-coded routines for TeX or Metafont in C. Originally - written by Tim Morgan, drawing from other Unix ports of TeX. This is - a collection of miscellany, everything that's easier (or only - possible) to do in C. - - This file is public domain. */ - -#define EXTERN /* Instantiate data from {tex,mf,mp}d.h here. */ - -/* This file is used to create texextra.c etc., with this line - changed to include texd.h, mfd.h, or mpd.h. The ?d.h file is what - #defines TeX or MF or MP, which avoids the need for a special - Makefile rule. */ -#include "texd.h" - -#include -#include -#include -#include -#include - -#include /* For `struct tm'. */ -#if defined (HAVE_SYS_TIME_H) -#include -#elif defined (HAVE_SYS_TIMEB_H) -#include -#endif - -#if defined(__STDC__) -#include -#endif - -#include /* Catch interrupts. */ - -#include - -/* {tex,mf}d.h defines TeX, MF, INI, and other such symbols. - Unfortunately there's no way to get the banner into this code, so - just repeat the text. */ -#ifdef TeX -#if defined (KANJI) -#include "ptexextra.h" -#elif defined (eTeX) -#include -#elif defined (pdfTeX) -#include -#elif defined (pdfeTeX) -#include -#elif defined (Omega) -#include -#else -#define BANNER "This is TeX, Version 3.141592" -#define COPYRIGHT_HOLDER "D.E. Knuth" -#define AUTHOR NULL -#define PROGRAM_HELP TEXHELP -#define DUMP_VAR TEXformatdefault -#define DUMP_LENGTH_VAR formatdefaultlength -#define DUMP_OPTION "fmt" -#define DUMP_EXT ".fmt" -#define INPUT_FORMAT kpse_tex_format -#define INI_PROGRAM "initex" -#define VIR_PROGRAM "virtex" -#endif -#define edit_var "TEXEDIT" -#endif /* TeX */ -#ifdef MF -#define BANNER "This is Metafont, Version 2.71828" -#define COPYRIGHT_HOLDER "D.E. Knuth" -#define AUTHOR NULL -#define PROGRAM_HELP MFHELP -#define DUMP_VAR MFbasedefault -#define DUMP_LENGTH_VAR basedefaultlength -#define DUMP_OPTION "base" -#ifdef DOS -#define DUMP_EXT ".bas" -#else -#define DUMP_EXT ".base" -#endif -#define INPUT_FORMAT kpse_mf_format -#define INI_PROGRAM "inimf" -#define VIR_PROGRAM "virmf" -#define edit_var "MFEDIT" -#endif /* MF */ -#ifdef MP -#define BANNER "This is MetaPost, Version 0.641" -#define COPYRIGHT_HOLDER "AT&T Bell Laboratories" -#define AUTHOR "John Hobby" -#define PROGRAM_HELP MPHELP -#define DUMP_VAR MPmemdefault -#define DUMP_LENGTH_VAR memdefaultlength -#define DUMP_OPTION "mem" -#define DUMP_EXT ".mem" -#define INPUT_FORMAT kpse_mp_format -#define INI_PROGRAM "inimpost" -#define VIR_PROGRAM "virmpost" -#define edit_var "MPEDIT" -#endif /* MP */ - -/* The main program, etc. */ - -/* What we were invoked as and with. */ -char **argv; -int argc; - -/* If the user overrides argv[0] with -progname. */ -static string user_progname; - -/* The C version of what might wind up in DUMP_VAR. */ -static const_string dump_name; - -/* The C version of the jobname, if given. */ -static const_string job_name; - -/* Full source file name. */ -extern string fullnameoffile; - -/* The filename for dynamic character translation, or NULL. */ -string translate_filename; -string default_translate_filename; - -/* Needed for --src-specials option. */ -static char *last_source_name; -static int last_lineno; -static boolean srcspecialsoption = false; -static void parse_src_specials_option P1H(const_string); - -/* The main body of the WEB is transformed into this procedure. */ -extern TEXDLL void mainbody P1H(void); - -/* Parsing a first %&-line in the input file. */ -static void parse_first_line P1H(const_string); - -/* Parse option flags. */ -static void parse_options P2H(int, string *); - -/* Try to figure out if we have been given a filename. */ -static string get_input_file_name P1H(void); - -#ifdef MP -/* name of TeX program to pass to makempx */ -static string mpost_tex_program = ""; -#endif - -#ifdef __STDC__ -#ifdef WIN32 -extern boolean bOem; -string locale_name = ".ACP"; -#else -string locale_name = ""; -#endif -#endif - -/* The entry point: set up for reading the command line, which will - happen in `topenin', then call the main body. */ - -void TEXDLL -maininit P2C(int, ac, string *, av) -{ - string main_input_file; - - /* Save to pass along to topenin. */ - argc = ac; - argv = av; - - /* Must be initialized before options are parsed. */ - interactionoption = 4; -#ifdef KANJI -#ifdef OUTJIS -prockanjicode = JIS; -#endif /* OUTJIS */ -#ifdef OUTEUC -prockanjicode = EUC; -#endif /* OUTEUC */ -#ifdef OUTSJIS -prockanjicode = SJIS; -#endif /* OUTSJIS */ -#endif /* KANJI */ - - /* If the user says --help or --version, we need to notice early. And - since we want the --ini option, have to do it before getting into - the web (which would read the base file, etc.). */ - parse_options (ac, av); - -#if defined(__STDC__) - /* Need to delay it because of win32 `-oem' option. Default value "" - means: get value from env. var LC_ALL, LC_CTYPE, or LANG */ - setlocale(LC_CTYPE, locale_name); -#endif - - /* Do this early so we can inspect program_invocation_name and - kpse_program_name below, and because we have to do this before - any path searching. */ - kpse_set_program_name (argv[0], user_progname); - - /* FIXME: gather engine names in a single spot. */ - xputenv("engine", TEXMFENGINENAME); - - /* Were we given a simple filename? */ - main_input_file = get_input_file_name(); - - /* Second chance to activate file:line:error style messages, this - time from texmf.cnf. */ - if (filelineerrorstylep < 0) { - filelineerrorstylep = 0; - } else if (!filelineerrorstylep) { - string file_line_error_style = kpse_var_value ("file_line_error_style"); - filelineerrorstylep = (file_line_error_style - && (*file_line_error_style == 't' - || *file_line_error_style == 'y' - || *file_line_error_style == '1')); - } - - /* If no dump default yet, and we're not doing anything special on - this run, we may want to look at the first line of the main input - file for a %& specifier. */ - if (parsefirstlinep < 0) { - parsefirstlinep = 0; - } else if (!parsefirstlinep) { - string parse_first_line = kpse_var_value ("parse_first_line"); - parsefirstlinep = (parse_first_line - && (*parse_first_line == 't' - || *parse_first_line == 'y' - || *parse_first_line == '1')); - } - if (parsefirstlinep && (!dump_name || !translate_filename)) { - parse_first_line (main_input_file); - } - /* Check whether there still is no translate_filename known. If so, - use the default_translate_filename. */ - /* FIXME: deprecated. */ - if (!translate_filename) { - translate_filename = default_translate_filename; - } - /* If we're preloaded, I guess everything is set up. I don't really - know any more, it's been so long since anyone preloaded. */ - if (readyalready != 314159) { - /* The `ini_version' variable is declared/used in the change files. */ - boolean virversion = false; - if (FILESTRCASEEQ (kpse_program_name, INI_PROGRAM)) { - iniversion = true; - } else if (FILESTRCASEEQ (kpse_program_name, VIR_PROGRAM)) { - virversion = true; -#ifdef TeX -#ifndef Omega - } else if (FILESTRCASEEQ (kpse_program_name, "mltex")) { - mltexp = true; -#endif /* !Omega */ -#ifdef eTeX /* For e-TeX compatibility mode... */ -#ifdef KANJI - } else if (FILESTRCASEEQ (kpse_program_name, "iniptex")) { - iniversion = true; - } else if (FILESTRCASEEQ (kpse_program_name, "virptex")) { - virversion = true; -#else /* KANJI */ - } else if (FILESTRCASEEQ (kpse_program_name, "initex")) { - iniversion = true; - } else if (FILESTRCASEEQ (kpse_program_name, "virtex")) { - virversion = true; -#endif /* KANJI */ -#endif /* eTeX */ -#endif /* TeX */ - } - - if (!dump_name) { - /* If called as *vir{mf,tex,mpost} use `plain'. Otherwise, use the - name we were invoked under. */ - dump_name = (virversion ? "plain" : kpse_program_name); - } - } - -#ifdef TeX -#if !defined(Omega) && !defined(eOmega) && !defined(Aleph) - /* Sanity check: -mltex and -enc only work in combination with -ini. */ - if (!iniversion) { - if (mltexp) { - fprintf(stderr, "-mltex only works with -ini\n"); - } - } -#endif -#endif - - /* If we've set up the fmt/base default in any of the various ways - above, also set its length. */ - if (dump_name) { - /* adjust array for Pascal and provide extension */ - DUMP_VAR = concat3 (" ", dump_name, DUMP_EXT); - DUMP_LENGTH_VAR = strlen (DUMP_VAR + 1); - } else { - /* For dump_name to be NULL is a bug. */ - abort(); - } - - /* Additional initializations. No particular reason for doing them - here instead of first thing in the change file; less symbols to - propagate through Webc, that's all. */ -#ifdef MF - kpse_set_program_enabled (kpse_mf_format, MAKE_TEX_MF_BY_DEFAULT, - kpse_src_compile); - kpse_set_program_enabled (kpse_base_format, MAKE_TEX_FMT_BY_DEFAULT, - kpse_src_compile); -#endif /* MF */ -#ifdef MP - kpse_set_program_enabled (kpse_mem_format, MAKE_TEX_FMT_BY_DEFAULT, - kpse_src_compile); -#endif /* MP */ -#ifdef TeX -#ifdef Omega - kpse_set_program_enabled (kpse_ocp_format, MAKE_OMEGA_OCP_BY_DEFAULT, - kpse_src_compile); - kpse_set_program_enabled (kpse_ofm_format, MAKE_OMEGA_OFM_BY_DEFAULT, - kpse_src_compile); - kpse_set_program_enabled (kpse_tfm_format, false, kpse_src_compile); -#else - kpse_set_program_enabled (kpse_tfm_format, MAKE_TEX_TFM_BY_DEFAULT, - kpse_src_compile); -#endif /* !Omega */ - kpse_set_program_enabled (kpse_tex_format, MAKE_TEX_TEX_BY_DEFAULT, - kpse_src_compile); - kpse_set_program_enabled (kpse_fmt_format, MAKE_TEX_FMT_BY_DEFAULT, - kpse_src_compile); - - if (shellenabledp < 0) { - shellenabledp = 0; - } else if (!shellenabledp) { - string shell_escape = kpse_var_value ("shell_escape"); - shellenabledp = (shell_escape - && (*shell_escape == 't' - || *shell_escape == 'y' - || *shell_escape == '1')); - } - if (!outputcomment) { - outputcomment = kpse_var_value ("output_comment"); - } -#endif /* TeX */ -} - -#ifndef WIN32 -/* The entry point: set up for reading the command line, which will - happen in `topenin', then call the main body. */ - -int -main P2C(int, ac, string *, av) -{ -#ifdef __EMX__ - _wildcard (&ac, &av); - _response (&ac, &av); -#endif - - maininit(ac, av); - - /* Call the real main program. */ - mainbody (); - return EXIT_SUCCESS; -} -#endif /* ! WIN32 */ - -/* This is supposed to ``open the terminal for input'', but what we - really do is copy command line arguments into TeX's or Metafont's - buffer, so they can handle them. If nothing is available, or we've - been called already (and hence, argc==0), we return with - `last=first'. */ - -void -topenin P1H(void) -{ - int i; - - buffer[first] = 0; /* In case there are no arguments. */ - - if (optind < argc) { /* We have command line arguments. */ - int k = first; - for (i = optind; i < argc; i++) { - char *ptr = &(argv[i][0]); - /* Don't use strcat, since in Omega the buffer elements aren't - single bytes. */ - while (*ptr) { - buffer[k++] = *(ptr++); - } - buffer[k++] = ' '; - } - argc = 0; /* Don't do this again. */ - buffer[k] = 0; - } - - /* Find the end of the buffer. */ - for (last = first; buffer[last]; ++last) - ; - - /* Make `last' be one past the last non-blank character in `buffer'. */ - /* ??? The test for '\r' should not be necessary. */ - for (--last; last >= first - && ISBLANK (buffer[last]) && buffer[last] != '\r'; --last) - ; - last++; - - /* One more time, this time converting to TeX's internal character - representation. */ -#ifndef Omega - for (i = first; i < last; i++) - buffer[i] = xord[buffer[i]]; -#endif -} - -/* IPC for TeX. By Tom Rokicki for the NeXT; it makes TeX ship out the - DVI file in a pipe to TeXView so that the output can be displayed - incrementally. Shamim Mohamed adapted it for Web2c. */ -#if defined (TeX) && defined (IPC) - -#include -#include -#ifndef O_NONBLOCK /* POSIX */ -#ifdef O_NDELAY /* BSD */ -#define O_NONBLOCK O_NDELAY -#else -#ifdef FNDELAY /* NeXT */ -#define O_NONBLOCK O_FNDELAY -#else -what the fcntl? cannot implement IPC without equivalent for O_NONBLOCK. -#endif /* no FNDELAY */ -#endif /* no O_NDELAY */ -#endif /* no O_NONBLOCK */ - -#ifndef IPC_PIPE_NAME /* $HOME is prepended to this. */ -#define IPC_PIPE_NAME "/.TeXview_Pipe" -#endif -#ifndef IPC_SERVER_CMD /* Command to run to start the server. */ -#define IPC_SERVER_CMD "open `which TeXview`" -#endif - -struct msg -{ - short namelength; /* length of auxiliary data */ - int eof; /* new eof for dvi file */ -#if 0 /* see usage of struct msg below */ - char more_data[0]; /* where the rest of the stuff goes */ -#endif -}; - -static char *ipc_name; -static struct sockaddr *ipc_addr; -static int ipc_addr_len; - -static int -ipc_make_name P1H(void) -{ - if (ipc_addr_len == 0) { - string s = getenv ("HOME"); - if (s) { - ipc_addr = (struct sockaddr*)xmalloc (strlen (s) + 40); - ipc_addr->sa_family = 0; - ipc_name = ipc_addr->sa_data; - strcpy (ipc_name, s); - strcat (ipc_name, IPC_PIPE_NAME); - ipc_addr_len = strlen (ipc_name) + 3; - } - } - return ipc_addr_len; -} - - -static int sock = -1; - -static int -ipc_is_open P1H(void) -{ - return sock >= 0; -} - - -static void -ipc_open_out P1H(void) { -#ifdef IPC_DEBUG - fputs ("tex: Opening socket for IPC output ...\n", stderr); -#endif - if (sock >= 0) { - return; - } - - if (ipc_make_name () < 0) { - sock = -1; - return; - } - - sock = socket (PF_UNIX, SOCK_STREAM, 0); - if (sock >= 0) { - if (connect (sock, ipc_addr, ipc_addr_len) != 0 - || fcntl (sock, F_SETFL, O_NONBLOCK) < 0) { - close (sock); - sock = -1; - return; - } -#ifdef IPC_DEBUG - fputs ("tex: Successfully opened IPC socket.\n", stderr); -#endif - } -} - - -static void -ipc_close_out P1H(void) -{ -#ifdef IPC_DEBUG - fputs ("tex: Closing output socket ...\n", stderr); -#endif - if (ipc_is_open ()) { - close (sock); - sock = -1; - } -} - - -static void -ipc_snd P3C(int, n, int, is_eof, char *, data) -{ - struct - { - struct msg msg; - char more_data[1024]; - } ourmsg; - -#ifdef IPC_DEBUG - fputs ("tex: Sending message to socket ...\n", stderr); -#endif - if (!ipc_is_open ()) { - return; - } - - ourmsg.msg.namelength = n; - ourmsg.msg.eof = is_eof; - if (n) { - strcpy (ourmsg.more_data, data); - } - n += sizeof (struct msg); -#ifdef IPC_DEBUG - fputs ("tex: Writing to socket...\n", stderr); -#endif - if (write (sock, &ourmsg, n) != n) { - ipc_close_out (); - } -#ifdef IPC_DEBUG - fputs ("tex: IPC message sent.\n", stderr); -#endif -} - - -/* This routine notifies the server if there is an eof, or the filename - if a new DVI file is starting. This is the routine called by TeX. - Omega defines str_start(#) as str_start_ar[# - too_big_char], with - too_big_char = biggest_char + 1 = 65536 (omstr.ch).*/ - -void -ipcpage P1C(int, is_eof) -{ - static boolean begun = false; - unsigned len = 0; - unsigned i; - string p = ""; - - if (!begun) { - string name; /* Just the filename. */ - string cwd = xgetcwd (); - - ipc_open_out (); -#ifndef Omega - len = strstart[outputfilename + 1] - strstart[outputfilename]; -#else - len = strstartar[outputfilename + 1 - 65536L] - - strstartar[outputfilename - 65536L]; -#endif - name = (string)xmalloc (len + 1); -#ifndef Omega - strncpy (name, &strpool[strstart[outputfilename]], len); -#else - for (i=0; i 0) { - free (p); - } -} -#endif /* TeX && IPC */ - -#if defined (TeX) || defined (MF) || defined (MP) -#ifndef Omega /* TCX and Omega get along like sparks and gunpowder. */ - -/* Return the next number following START, setting POST to the following - character, as in strtol. Issue a warning and return -1 if no number - can be parsed. */ - -static int -tcx_get_num P4C(int, upb, - unsigned, line_count, - string, start, - string *, post) -{ - int num = strtol (start, post, 0); - assert (post && *post); - if (*post == start) { - /* Could not get a number. If blank line, fine. Else complain. */ - string p = start; - while (*p && ISSPACE (*p)) - p++; - if (*p != 0) - fprintf (stderr, "%s:%d: Expected numeric constant, not `%s'.\n", - translate_filename, line_count, start); - num = -1; - } else if (num < 0 || num > upb) { - fprintf (stderr, "%s:%d: Destination charcode %d <0 or >%d.\n", - translate_filename, line_count, num, upb); - num = -1; - } - - return num; -} - -/* Update the xchr, xord, and xprn arrays for TeX, allowing a - translation table specified at runtime via an external file. - Look for the character translation file FNAME along the same path as - tex.pool. If no suffix in FNAME, use .tcx (don't bother trying to - support extension-less names for these files). */ - -/* FIXME: A new format ought to be introduced for these files. */ - -void -readtcxfile P1H(void) -{ - string orig_filename; - if (!find_suffix (translate_filename)) { - translate_filename = concat (translate_filename, ".tcx"); - } - orig_filename = translate_filename; - translate_filename - = kpse_find_file (translate_filename, kpse_web2c_format, true); - if (translate_filename) { - string line; - unsigned line_count = 0; - FILE *translate_file = xfopen (translate_filename, FOPEN_R_MODE); - while (line = read_line (translate_file)) { - int first; - string start2; - string comment_loc = strchr (line, '%'); - if (comment_loc) - *comment_loc = 0; - - line_count++; - - first = tcx_get_num (255, line_count, line, &start2); - if (first >= 0) { - string start3; - int second; - int printable; - - second = tcx_get_num (255, line_count, start2, &start3); - if (second >= 0) { - /* I suppose we could check for nonempty junk following the - "printable" code, but let's not bother. */ - string extra; - - /* If they mention a second code, make that the internal number. */ - xord[first] = second; - xchr[second] = first; - - printable = tcx_get_num (1, line_count, start3, &extra); - if (printable == -1) - printable = 0; - /* Don't allow the 7bit ASCII set to become unprintable. */ - if (32 <= second && second <= 126) - printable = 1; - } else { - second = first; /* else make internal the same as external */ - /* If they mention a charcode, call it printable. */ - printable = 1; - } - - xprn[second] = printable; - } - free (line); - } - xfclose(translate_file, translate_filename); - } else { - WARNING1 ("Could not open char translation file `%s'", orig_filename); - } -} -#endif /* !Omega */ -#endif /* TeX || MF || MP [character translation] */ - -/* Normalize quoting of filename -- that is, only quote if there is a space, - and always use the quote-name-quote style. */ -string -normalize_quotes P2C(const_string, name, const_string, mesg) -{ - boolean quoted = false; - boolean must_quote = (strchr(name, ' ') != NULL); - /* Leave room for quotes and NUL. */ - string ret = (string)xmalloc(strlen(name)+3); - string p; - const_string q; - p = ret; - if (must_quote) - *p++ = '"'; - for (q = name; *q; q++) { - if (*q == '"') - quoted = !quoted; - else - *p++ = *q; - } - if (must_quote) - *p++ = '"'; - *p = '\0'; - if (quoted) { - fprintf(stderr, "! Unbalanced quotes in %s %s\n", mesg, name); - uexit(1); - } - return ret; -} - -/* Getting the input filename. */ -string -get_input_file_name P1H(void) -{ - string input_file_name = NULL; - - if (argv[optind] && argv[optind][0] != '&' && argv[optind][0] != '\\') { - /* Not &format, not \input, so assume simple filename. */ - string name = normalize_quotes(argv[optind], "argument"); - boolean quoted = (name[0] == '"'); - if (quoted) { - /* Overwrite last quote and skip first quote. */ - name[strlen(name)-1] = '\0'; - name++; - } - input_file_name = kpse_find_file(name, INPUT_FORMAT, false); - if (quoted) { - /* Undo modifications */ - name[strlen(name)] = '"'; - name--; - } - argv[optind] = name; - } - return input_file_name; -} - -/* Reading the options. */ - -/* Test whether getopt found an option ``A''. - Assumes the option index is in the variable `option_index', and the - option table in a variable `long_options'. */ -#define ARGUMENT_IS(a) STREQ (long_options[option_index].name, a) - -/* SunOS cc can't initialize automatic structs, so make this static. */ -static struct option long_options[] - = { { DUMP_OPTION, 1, 0, 0 }, - { "help", 0, 0, 0 }, - { "ini", 0, &iniversion, 1 }, - { "interaction", 1, 0, 0 }, - { "halt-on-error", 0, &haltonerrorp, 1 }, - { "kpathsea-debug", 1, 0, 0 }, - { "progname", 1, 0, 0 }, - { "version", 0, 0, 0 }, - { "recorder", 0, &recorder_enabled, 1 }, -#ifdef TeX -#ifdef IPC - { "ipc", 0, &ipcon, 1 }, - { "ipc-start", 0, &ipcon, 2 }, -#endif /* IPC */ -#if !defined(Omega) && !defined(eOmega) && !defined(Aleph) - { "mltex", 0, &mltexp, 1 }, -#endif /* !Omega && !eOmega && !Aleph */ - { "output-comment", 1, 0, 0 }, - { "output-directory", 1, 0, 0 }, - { "shell-escape", 0, &shellenabledp, 1 }, - { "no-shell-escape", 0, &shellenabledp, -1 }, - { "debug-format", 0, &debugformatfile, 1 }, - { "src-specials", 2, 0, 0 }, -#endif /* TeX */ -#if defined (TeX) || defined (MF) || defined (MP) - { "file-line-error-style", 0, &filelineerrorstylep, 1 }, - { "no-file-line-error-style", 0, &filelineerrorstylep, -1 }, - /* Shorter option names for the above. */ - { "file-line-error", 0, &filelineerrorstylep, 1 }, - { "no-file-line-error", 0, &filelineerrorstylep, -1 }, - { "jobname", 1, 0, 0 }, - { "parse-first-line", 0, &parsefirstlinep, 1 }, - { "no-parse-first-line", 0, &parsefirstlinep, -1 }, -#if !defined(Omega) && !defined(eOmega) && !defined(Aleph) - { "translate-file", 1, 0, 0 }, - { "default-translate-file", 1, 0, 0 }, - { "8bit", 0, &eightbitp, 1 }, -#endif /* !Omega && !eOmega && !Aleph */ -#endif /* TeX || MF || MP */ -#if defined (TeX) || defined (MF) - { "mktex", 1, 0, 0 }, - { "no-mktex", 1, 0, 0 }, -#endif /* TeX or MF */ -#ifdef MP - { "T", 0, &troffmode, 1 }, - { "troff", 0, &troffmode, 1 }, - { "tex", 1, 0, 0 }, -#endif /* MP */ -#ifdef KANJI - { "kanji", 1, 0, 0 }, -#endif /* KANJI */ - { 0, 0, 0, 0 } }; - - -static void -parse_options P2C(int, argc, string *, argv) -{ - int g; /* `getopt' return code. */ - int option_index; - - for (;;) { - g = getopt_long_only (argc, argv, "+", long_options, &option_index); - - if (g == -1) /* End of arguments, exit the loop. */ - break; - - if (g == '?') { /* Unknown option. */ - /* FIXME: usage (argv[0]); replaced by continue. */ - continue; - } - - assert (g == 0); /* We have no short option names. */ - - if (ARGUMENT_IS ("kpathsea-debug")) { - kpathsea_debug |= atoi (optarg); - - } else if (ARGUMENT_IS ("progname")) { - user_progname = optarg; - - } else if (ARGUMENT_IS ("jobname")) { - job_name = normalize_quotes(optarg, "jobname"); - - } else if (ARGUMENT_IS (DUMP_OPTION)) { - dump_name = optarg; - if (!user_progname) user_progname = optarg; - dumpoption = true; - - } else if (ARGUMENT_IS ("output-directory")) { - output_directory = optarg; - -#ifdef TeX - } else if (ARGUMENT_IS ("output-comment")) { - unsigned len = strlen (optarg); - if (len < 256) { - outputcomment = optarg; - } else { - WARNING2 ("Comment truncated to 255 characters from %d. (%s)", - len, optarg); - outputcomment = (string)xmalloc (256); - strncpy (outputcomment, optarg, 255); - outputcomment[255] = 0; - } - -#ifdef IPC - } else if (ARGUMENT_IS ("ipc-start")) { - ipc_open_out (); - /* Try to start up the other end if it's not already. */ - if (!ipc_is_open ()) { - if (system (IPC_SERVER_CMD) == 0) { - unsigned i; - for (i = 0; i < 20 && !ipc_is_open (); i++) { - sleep (2); - ipc_open_out (); - } - } - } -#endif /* IPC */ - } else if (ARGUMENT_IS ("src-specials")) { - last_source_name = xstrdup(""); - /* Option `--src" without any value means `auto' mode. */ - if (optarg == NULL) { - insertsrcspecialeverypar = true; - insertsrcspecialauto = true; - srcspecialsoption = true; - srcspecialsp = true; - } else { - parse_src_specials_option(optarg); - } -#endif /* TeX */ -#if defined (TeX) || defined (MF) || defined (MP) -#ifndef Omega - } else if (ARGUMENT_IS ("translate-file")) { - translate_filename = optarg; - } else if (ARGUMENT_IS ("default-translate-file")) { - default_translate_filename = optarg; -#if defined(WIN32) && defined(OEM) - } else if (ARGUMENT_IS ("oem")) { - /* This should switch the locale to the current OEM code page */ - locale_name = ".OCP"; - bOem = true; -#endif -#endif /* !Omega */ -#endif /* TeX || MF || MP */ - -#if defined (TeX) || defined (MF) - } else if (ARGUMENT_IS ("mktex")) { - kpse_maketex_option (optarg, true); - - } else if (ARGUMENT_IS ("no-mktex")) { - kpse_maketex_option (optarg, false); -#endif /* TeX or MF */ -#if defined (MP) - } else if (ARGUMENT_IS ("tex")) { - mpost_tex_program = optarg; -#endif /* MP */ - } else if (ARGUMENT_IS ("interaction")) { - /* These numbers match @d's in *.ch */ - if (STREQ (optarg, "batchmode")) { - interactionoption = 0; - } else if (STREQ (optarg, "nonstopmode")) { - interactionoption = 1; - } else if (STREQ (optarg, "scrollmode")) { - interactionoption = 2; - } else if (STREQ (optarg, "errorstopmode")) { - interactionoption = 3; - } else { - WARNING1 ("Ignoring unknown argument `%s' to --interaction", optarg); - } -#if defined(KANJI) - } else if (ARGUMENT_IS ("kanji")) { - /* These numbers match @d's in *.ch */ - if (STREQ (optarg, "jis")) { - prockanjicode = JIS; - } else if (STREQ (optarg, "euc")) { - prockanjicode = EUC; - } else if (STREQ (optarg, "sjis")) { - prockanjicode = SJIS; - } else { - WARNING1 ("Ignoring unknown argument `%s' to --kanji", optarg); - } -#endif /* KANJI */ - - } else if (ARGUMENT_IS ("help")) { - usagehelp (PROGRAM_HELP, BUG_ADDRESS); - - } else if (ARGUMENT_IS ("version")) { - printversionandexit (BANNER, COPYRIGHT_HOLDER, AUTHOR); - - } /* Else it was a flag; getopt has already done the assignment. */ - } -} - -#if defined(TeX) -void -parse_src_specials_option P1C(const_string, opt_list) -{ - char * toklist = xstrdup(opt_list); - char * tok; - insertsrcspecialauto = false; - tok = strtok (toklist, ", "); - while (tok) { - if (strcmp (tok, "everypar") == 0 - || strcmp (tok, "par") == 0 - || strcmp (tok, "auto") == 0) { - insertsrcspecialauto = true; - insertsrcspecialeverypar = true; - } else if (strcmp (tok, "everyparend") == 0 - || strcmp (tok, "parend") == 0) - insertsrcspecialeveryparend = true; - else if (strcmp (tok, "everycr") == 0 - || strcmp (tok, "cr") == 0) - insertsrcspecialeverycr = true; - else if (strcmp (tok, "everymath") == 0 - || strcmp (tok, "math") == 0) - insertsrcspecialeverymath = true; - else if (strcmp (tok, "everyhbox") == 0 - || strcmp (tok, "hbox") == 0) - insertsrcspecialeveryhbox = true; - else if (strcmp (tok, "everyvbox") == 0 - || strcmp (tok, "vbox") == 0) - insertsrcspecialeveryvbox = true; - else if (strcmp (tok, "everydisplay") == 0 - || strcmp (tok, "display") == 0) - insertsrcspecialeverydisplay = true; - else if (strcmp (tok, "none") == 0) { - /* This one allows to reset an option that could appear in texmf.cnf */ - insertsrcspecialauto = insertsrcspecialeverypar = - insertsrcspecialeveryparend = insertsrcspecialeverycr = - insertsrcspecialeverymath = insertsrcspecialeveryhbox = - insertsrcspecialeveryvbox = insertsrcspecialeverydisplay = false; - } else { - WARNING1 ("Ignoring unknown argument `%s' to --src-specials", tok); - } - tok = strtok(0, ", "); - } - free(toklist); - srcspecialsp=insertsrcspecialauto | insertsrcspecialeverypar | - insertsrcspecialeveryparend | insertsrcspecialeverycr | - insertsrcspecialeverymath | insertsrcspecialeveryhbox | - insertsrcspecialeveryvbox | insertsrcspecialeverydisplay; - srcspecialsoption = true; -} -#endif - -/* If the first thing on the command line (we use the globals `argv' and - `optind') is a normal filename (i.e., does not start with `&' or - `\'), and if we can open it, and if its first line is %&FORMAT, and - FORMAT is a readable dump file, then set DUMP_VAR to FORMAT. - Also call kpse_reset_program_name to ensure the correct paths for the - format are used. */ -static void -parse_first_line P1C(const_string, filename) -{ - FILE *f = filename ? fopen (filename, FOPEN_R_MODE) : NULL; - if (f) { - string first_line = read_line (f); - xfclose (f, filename); - - /* We deal with the general format "%&fmt --translate-file=tcx" */ - /* The idea of using this format came from Wlodzimierz Bzyl - */ - if (first_line && first_line[0] == '%' && first_line[1] == '&') { - /* Parse the first line into at most three space-separated parts. */ - char *s; - char *part[4]; - int npart; - char **parse; - - for (s = first_line+2; ISBLANK(*s); ++s) - ; - npart = 0; - while (*s && npart != 3) { - part[npart++] = s; - while (*s && *s != ' ') s++; - while (*s == ' ') *s++ = '\0'; - } - part[npart] = NULL; - parse = part; - /* Look at what we've got. Very crude! */ - if (*parse && **parse != '-') { - /* A format name */ - if (dump_name) { - /* format already determined, do nothing. */ - } else { - string f_name = concat (part[0], DUMP_EXT); - string d_name = kpse_find_file (f_name, DUMP_FORMAT, false); - if (d_name && kpse_readable_file (d_name)) { - dump_name = xstrdup (part[0]); - kpse_reset_program_name (dump_name); - /* Tell TeX/MF/MP we have a %&name line... */ - dumpline = true; - } - free (f_name); - } - parse++; - } - /* The tcx stuff, if any. Should we support the -translate-file - form as well as --translate-file? */ - if (*parse) { - if (translate_filename) { - /* TCX file already set, do nothing. */ - } else if (STREQ (*parse, "--translate-file")) { - s = *(parse+1); - } else if (STREQ (*parse, "-translate-file")) { - s = *(parse+1); - } else if (STRNEQ (*parse, "--translate-file=", 17)) { - s = *parse+17; - } else if (STRNEQ (*parse, "-translate-file=", 16)) { - s = *parse+16; - } - /* Just set the name, no sanity checks here. */ - /* FIXME: remove trailing spaces. */ - if (s && *s) { - translate_filename = xstrdup(s); - } - } - } - if (first_line) - free (first_line); - } -} - -/* Return true if FNAME is acceptable as a name for \openout, \openin, or - \input. */ - -static boolean -opennameok P3C(const_string, fname, const_string, check_var, - const_string, default_choice) -{ - /* We distinguish three cases: - 'a' (any) allows any file to be opened. - 'r' (restricted) means disallowing special file names. - 'p' (paranoid) means being really paranoid: disallowing special file - names and restricting output files to be in or below - the working directory or $TEXMFOUTPUT, while input files - must be below the current directory, $TEXMFOUTPUT, or - (implicitly) in the system areas. - We default to "paranoid". The error messages from TeX will be somewhat - puzzling... - This function contains several return statements... */ - - char mess[8]; - const_string open_choice = kpse_var_value (check_var); - - if (strcmp(check_var, "openin_any") == 0) - strcpy(mess, "reading"); - else if (strcmp(check_var, "openout_any") == 0) - strcpy(mess, "writing"); - else - mess[0] = '\0'; - - if (!open_choice) open_choice = default_choice; - - if (*open_choice == 'a' || *open_choice == 'y' || *open_choice == '1') - return true; - -#if defined (unix) && !defined (MSDOS) - { - const_string base = xbasename (fname); - /* Disallow .rhosts, .login, etc. Allow .tex (for LaTeX). */ - if (base[0] == 0 || - (base[0] == '.' && !IS_DIR_SEP(base[1]) && !STREQ (base, ".tex"))) { - fprintf(stderr, "%s: Not %s to %s (%s = %s).\n", - program_invocation_name, mess, fname, check_var, open_choice); - return false; - } - } -#else - /* Other OSs don't have special names? */ -#endif - - if (*open_choice == 'r' || *open_choice == 'n' || *open_choice == '0') - return true; - - /* Paranoia supplied by Charles Karney... */ - if (kpse_absolute_p (fname, false)) { - const_string texmfoutput = kpse_var_value ("TEXMFOUTPUT"); - /* Absolute pathname is only OK if TEXMFOUTPUT is set, it's not empty, - fname begins the TEXMFOUTPUT, and is followed by / */ - if (!texmfoutput || *texmfoutput == '\0' - || fname != strstr (fname, texmfoutput) - || !IS_DIR_SEP(fname[strlen(texmfoutput)])) { - fprintf(stderr, "%s: Not %s to %s (%s = %s).\n", - program_invocation_name, mess, fname, check_var, open_choice); - return false; - } - } - /* For all pathnames, we disallow "../" at the beginning or "/../" - anywhere. */ - if (fname[0] == '.' && fname[1] == '.' && IS_DIR_SEP(fname[2])) { - fprintf(stderr, "%s: Not %s to %s (%s = %s).\n", - program_invocation_name, mess, fname, check_var, open_choice); - return false; - } else { - const_string dotpair = strstr (fname, ".."); - /* If dotpair[2] == DIR_SEP, then dotpair[-1] is well-defined. */ - if (dotpair && IS_DIR_SEP(dotpair[2]) && IS_DIR_SEP(dotpair[-1])) { - fprintf(stderr, "%s: Not %s to %s (%s = %s).\n", - program_invocation_name, mess, fname, check_var, open_choice); - return false; - } - } - - /* We passed all tests. */ - return true; -} - -boolean openinnameok P1C(const_string, fname) -{ - /* For input default to all. */ - return opennameok (fname, "openin_any", "a"); -} - -boolean openoutnameok P1C(const_string, fname) -{ - /* For output, default to paranoid. */ - return opennameok (fname, "openout_any", "p"); -} - -/* All our interrupt handler has to do is set TeX's or Metafont's global - variable `interrupt'; then they will do everything needed. */ -#ifdef WIN32 -/* Win32 doesn't set SIGINT ... */ -BOOL WINAPI -catch_interrupt (DWORD arg) -{ - switch (arg) { - case CTRL_C_EVENT: - case CTRL_BREAK_EVENT: - interrupt = 1; - return TRUE; - default: - /* No need to set interrupt as we are exiting anyway */ - return FALSE; - } -} -#else /* not WIN32 */ -static RETSIGTYPE -catch_interrupt P1C (int, arg) -{ - interrupt = 1; -#ifdef OS2 - (void) signal (SIGINT, SIG_ACK); -#else - (void) signal (SIGINT, catch_interrupt); -#endif /* not OS2 */ -} -#endif /* not WIN32 */ - -/* Besides getting the date and time here, we also set up the interrupt - handler, for no particularly good reason. It's just that since the - `fix_date_and_time' routine is called early on (section 1337 in TeX, - ``Get the first line of input and prepare to start''), this is as - good a place as any. */ - -void -get_date_and_time P4C(integer *, minutes, integer *, day, - integer *, month, integer *, year) -{ - time_t clock = time ((time_t *) 0); - struct tm *tmptr = localtime (&clock); - - *minutes = tmptr->tm_hour * 60 + tmptr->tm_min; - *day = tmptr->tm_mday; - *month = tmptr->tm_mon + 1; - *year = tmptr->tm_year + 1900; - - { -#ifdef SA_INTERRUPT - /* Under SunOS 4.1.x, the default action after return from the - signal handler is to restart the I/O if nothing has been - transferred. The effect on TeX is that interrupts are ignored if - we are waiting for input. The following tells the system to - return EINTR from read() in this case. From ken@cs.toronto.edu. */ - - struct sigaction a, oa; - - a.sa_handler = catch_interrupt; - sigemptyset (&a.sa_mask); - sigaddset (&a.sa_mask, SIGINT); - a.sa_flags = SA_INTERRUPT; - sigaction (SIGINT, &a, &oa); - if (oa.sa_handler != SIG_DFL) - sigaction (SIGINT, &oa, (struct sigaction *) 0); -#else /* no SA_INTERRUPT */ -#ifdef WIN32 - SetConsoleCtrlHandler(catch_interrupt, TRUE); -#else /* not WIN32 */ - RETSIGTYPE (*old_handler) P1H(int); - - old_handler = signal (SIGINT, catch_interrupt); - if (old_handler != SIG_DFL) - signal (SIGINT, old_handler); -#endif /* not WIN32 */ -#endif /* no SA_INTERRUPT */ - } -} - -/* - Generating a better seed numbers - */ -integer -getrandomseed() -{ -#if defined (HAVE_GETTIMEOFDAY) - struct timeval tv; - gettimeofday(&tv, NULL); - return (tv.tv_usec + 1000000 * tv.tv_usec); -#elif defined (HAVE_FTIME) - struct timeb tb; - ftime(&tb); - return (tb.millitm + 1000 * tb.time); -#else - time_t clock = time ((time_t*)NULL); - struct tm *tmptr = localtime(&clock); - return (tmptr->tm_sec + 60*(tmptr->tm_min + 60*tmptr->tm_hour)); -#endif -} - -/* Read a line of input as efficiently as possible while still looking - like Pascal. We set `last' to `first' and return `false' if we get - to eof. Otherwise, we return `true' and set last = first + - length(line except trailing whitespace). */ - -boolean -input_line P1C(FILE *, f) -{ - int i; - -#ifdef KANJI -/* new line input method */ - static int injis=0; -#endif - - /* Recognize either LF or CR as a line terminator. */ - last = first; -#ifdef KANJI -/* new line input method */ - while (last < bufsize-3 && (i = getc (f)) != EOF && i != '\n' && i != '\r') { - int j; - if (i == '\033') { /* ESC */ - if ((i = getc(f)) == '$') { /* Kanji-In */ - i = getc(f); - if (i == '@' || i == 'B') { - injis = 1; - } else { - buffer[last++] = '\033'; - buffer[last++] = '$'; - if(i == EOF) { - break; - } else if(i == '\n') { - break; - } else if(i == '\r') { - j = getc(f); - if(j != '\n') ungetc(j, f); - else i = j; - break; - } else { - buffer[last++] = i; - } - } - } else if (i == '(') { /* Kanji-out */ - i = getc(f); - if (i == 'J' || i == 'B' || i == 'H') { - injis = 0; - } else { - buffer[last++] = '\033'; - buffer[last++] = '('; - if(i == EOF) { - break; - } else if(i == '\n') { - break; - } else if(i == '\r') { - j = getc(f); - if(j != '\n') ungetc(j, f); - else i = j; - break; - } else { - buffer[last++] = i; - } - } - } else { - buffer[last++] = '\033'; - if(i == EOF) { - break; - } else if(i == '\n') { - break; - } else if(i == '\r') { - j = getc(f); - if(j != '\n') ungetc(j, f); - else i = j; - break; - } else { - buffer[last++] = i; - } - } - } else { /* rather than ESC */ - if (injis == 0) { - buffer[last++] = i; - } else { - j = getc(f); - if(j == EOF) { - buffer[last++] = i; - i = j; - break; - } else if(j == '\n') { - buffer[last++] = i; - i = j; - break; - } else if(j == '\r') { - buffer[last++] = i; - i = j; - j = getc(f); - if(j != '\n') ungetc(j, f); - else i = j; - break; - /* JIS encoding */ - } else { - if (prockanjicode==SJIS) { - i = JIStoSJIS(i << 8 | j); - } else { - i = JIStoEUC(i << 8 | j); - } - buffer[last++] = (i >> 8) & 0xff; - buffer[last++] = i & 0xff; - } - } - } - } - - if(i == EOF || i == '\n' || i == '\r') - injis = 0; -#else /* KANJI */ - while (last < bufsize && (i = getc (f)) != EOF && i != '\n' && i != '\r') - buffer[last++] = i; -#endif /* KANJI */ - - if (i == EOF && errno != EINTR && last == first) - return false; - - /* We didn't get the whole line because our buffer was too small. */ - if (i != EOF && i != '\n' && i != '\r') { - fprintf (stderr, "! Unable to read an entire line---bufsize=%u.\n", - (unsigned) bufsize); - fputs ("Please increase buf_size in texmf.cnf.\n", stderr); - uexit (1); - } - - buffer[last] = ' '; - if (last >= maxbufstack) - maxbufstack = last; - - /* If next char is LF of a CRLF, read it. */ - if (i == '\r') { - while ((i = getc (f)) == EOF && errno == EINTR) - ; - if (i != '\n') - ungetc (i, f); - } - - /* Trim trailing whitespace. */ - while (last > first && ISBLANK (buffer[last - 1])) - --last; - - /* Don't bother using xord if we don't need to. */ -#ifndef Omega - for (i = first; i <= last; i++) - buffer[i] = xord[buffer[i]]; -#endif - -#ifdef KANJI - for (i = last+1; (i < last + 5 && i < bufsize) ; i++) - buffer[i] = '\0'; -#endif - - return true; -} - -/* This string specifies what the `e' option does in response to an - error message. */ -static char *edit_value = EDITOR; - -/* This procedure originally due to sjc@s1-c. TeX & Metafont call it when - the user types `e' in response to an error, invoking a text editor on - the erroneous source file. FNSTART is how far into FILENAME the - actual filename starts; FNLENGTH is how long the filename is. */ - -void -calledit P4C(packedASCIIcode *, filename, - poolpointer, fnstart, - integer, fnlength, - integer, linenumber) -{ - char *temp, *command; - char c; - int sdone, ddone, i; - - sdone = ddone = 0; - filename += fnstart; - - /* Close any open input files, since we're going to kill the job. */ - for (i = 1; i <= inopen; i++) - xfclose (inputfile[i], "inputfile"); - - /* Replace the default with the value of the appropriate environment - variable or config file value, if it's set. */ - temp = kpse_var_value (edit_var); - if (temp != NULL) - edit_value = temp; - - /* Construct the command string. The `11' is the maximum length an - integer might be. */ - command = (string) xmalloc (strlen (edit_value) + fnlength + 11); - - /* So we can construct it as we go. */ - temp = command; - - while ((c = *edit_value++) != 0) - { - if (c == '%') - { - switch (c = *edit_value++) - { - case 'd': - if (ddone) - FATAL ("call_edit: `%%d' appears twice in editor command"); - sprintf (temp, "%ld", linenumber); - while (*temp != '\0') - temp++; - ddone = 1; - break; - - case 's': - if (sdone) - FATAL ("call_edit: `%%s' appears twice in editor command"); - for (i =0; i < fnlength; i++) - *temp++ = Xchr (filename[i]); - sdone = 1; - break; - - case '\0': - *temp++ = '%'; - /* Back up to the null to force termination. */ - edit_value--; - break; - - default: - *temp++ = '%'; - *temp++ = c; - break; - } - } - else - *temp++ = c; - } - - *temp = 0; - - /* Execute the command. */ -#ifdef WIN32 - /* Win32 reimplementation of the system() command - provides opportunity to call it asynchronously */ - if (win32_system(command, true) != 0 ) -#else - if (system (command) != 0) -#endif - fprintf (stderr, "! Trouble executing `%s'.\n", command); - - /* Quit, since we found an error. */ - uexit (1); -} - -/* Read and write dump files. As distributed, these files are - architecture dependent; specifically, BigEndian and LittleEndian - architectures produce different files. These routines always output - BigEndian files. This still does not guarantee them to be - architecture-independent, because it is possible to make a format - that dumps a glue ratio, i.e., a floating-point number. Fortunately, - none of the standard formats do that. */ - -#if !defined (WORDS_BIGENDIAN) && !defined (NO_DUMP_SHARE) /* this fn */ - -/* This macro is always invoked as a statement. It assumes a variable - `temp'. */ - -#define SWAP(x, y) temp = (x); (x) = (y); (y) = temp - - -/* Make the NITEMS items pointed at by P, each of size SIZE, be the - opposite-endianness of whatever they are now. */ - -static void -swap_items P3C(char *, p, int, nitems, int, size) -{ - char temp; - - /* Since `size' does not change, we can write a while loop for each - case, and avoid testing `size' for each time. */ - switch (size) - { - /* 16-byte items happen on the DEC Alpha machine when we are not - doing sharable memory dumps. */ - case 16: - while (nitems--) - { - SWAP (p[0], p[15]); - SWAP (p[1], p[14]); - SWAP (p[2], p[13]); - SWAP (p[3], p[12]); - SWAP (p[4], p[11]); - SWAP (p[5], p[10]); - SWAP (p[6], p[9]); - SWAP (p[7], p[8]); - p += size; - } - break; - - case 8: - while (nitems--) - { - SWAP (p[0], p[7]); - SWAP (p[1], p[6]); - SWAP (p[2], p[5]); - SWAP (p[3], p[4]); - p += size; - } - break; - - case 4: - while (nitems--) - { - SWAP (p[0], p[3]); - SWAP (p[1], p[2]); - p += size; - } - break; - - case 2: - while (nitems--) - { - SWAP (p[0], p[1]); - p += size; - } - break; - - case 1: - /* Nothing to do. */ - break; - - default: - FATAL1 ("Can't swap a %d-byte item for (un)dumping", size); - } -} -#endif /* not WORDS_BIGENDIAN and not NO_DUMP_SHARE */ - - -/* Here we write NITEMS items, each item being ITEM_SIZE bytes long. - The pointer to the stuff to write is P, and we write to the file - OUT_FILE. */ - -void -do_dump P4C(char *, p, int, item_size, int, nitems, FILE *, out_file) -{ -#if !defined (WORDS_BIGENDIAN) && !defined (NO_DUMP_SHARE) - swap_items (p, nitems, item_size); -#endif - - if (fwrite (p, item_size, nitems, out_file) != nitems) - { - fprintf (stderr, "! Could not write %d %d-byte item(s).\n", - nitems, item_size); - uexit (1); - } - - /* Have to restore the old contents of memory, since some of it might - get used again. */ -#if !defined (WORDS_BIGENDIAN) && !defined (NO_DUMP_SHARE) - swap_items (p, nitems, item_size); -#endif -} - - -/* Here is the dual of the writing routine. */ - -void -do_undump P4C(char *, p, int, item_size, int, nitems, FILE *, in_file) -{ - if (fread (p, item_size, nitems, in_file) != nitems) - FATAL2 ("Could not undump %d %d-byte item(s)", nitems, item_size); - -#if !defined (WORDS_BIGENDIAN) && !defined (NO_DUMP_SHARE) - swap_items (p, nitems, item_size); -#endif -} - -/* Look up VAR_NAME in texmf.cnf; assign either the value found there or - DFLT to *VAR. */ - -void -setupboundvariable P3C(integer *, var, const_string, var_name, integer, dflt) -{ - string expansion = kpse_var_value (var_name); - *var = dflt; - - if (expansion) { - integer conf_val = atoi (expansion); - /* It's ok if the cnf file specifies 0 for extra_mem_{top,bot}, etc. - But negative numbers are always wrong. */ - if (conf_val < 0 || (conf_val == 0 && dflt > 0)) { - fprintf (stderr, - "%s: Bad value (%ld) in texmf.cnf for %s, keeping %ld.\n", - program_invocation_name, - (long) conf_val, var_name + 1, (long) dflt); - } else { - *var = conf_val; /* We'll make further checks later. */ - } - free (expansion); - } -} - -/* FIXME -- some (most?) of this can/should be moved to the Pascal/WEB side. */ -#if defined(TeX) || defined(MP) || defined(MF) -static void -checkpoolpointer (poolpointer poolptr, size_t len) -{ - if (poolptr + len >= poolsize) { - fprintf (stderr, "\nstring pool overflow [%i bytes]\n", - (int)poolsize); /* fixme */ - exit(1); - } -} - -#if !defined(pdfTeX) && !defined(pdfeTeX) -static int -maketexstring(const_string s) -{ - size_t len; - assert (s != 0); - len = strlen(s); - checkpoolpointer (poolptr, len); - while (len-- > 0) - strpool[poolptr++] = *s++; - return (makestring()); -} -#endif - -strnumber -makefullnamestring() -{ - return maketexstring(fullnameoffile); -} - -strnumber -getjobname() -{ - strnumber ret = curname; - if (job_name != NULL) - ret = maketexstring(job_name); - return ret; -} -#endif - -#if defined(TeX) -int -compare_paths P2C(const_string, p1, const_string, p2) -{ - int ret; - while ( -#ifdef MONOCASE_FILENAMES - (((ret = (toupper(*p1) - toupper(*p2))) == 0) && (*p2 != 0)) -#else - (((ret = (*p1 - *p2)) == 0) && (*p2 != 0)) -#endif - || (IS_DIR_SEP(*p1) && IS_DIR_SEP(*p2))) { - p1++, p2++; - } - ret = (ret < 0 ? -1 : (ret > 0 ? 1 : 0)); - return ret; -} - -string -gettexstring P1C(strnumber, s) -{ - poolpointer i, len; - string name; -#ifndef Omega - len = strstart[s + 1] - strstart[s]; -#else - len = strstartar[s + 1 - 65536L] - strstartar[s - 65536L]; -#endif - name = (string)xmalloc (len + 1); -#ifndef Omega - strncpy (name, (string)&strpool[strstart[s]], len); -#else - /* Don't use strncpy. The strpool is not made up of chars. */ - for (i=0; i= poolsize) { - fprintf (stderr, "\nstring pool overflow\n"); /* fixme */ - exit (1); - } - s = buf; - while (*s) - strpool[poolptr++] = *s++; - - s = filename; - while (*s) - strpool[poolptr++] = *s++; - - return (oldpoolptr); -} -#endif - -#ifdef MP -/* Invoke makempx (or troffmpx) to make sure there is an up-to-date - .mpx file for a given .mp file. (Original from John Hobby 3/14/90) */ - -#include - -#ifndef MPXCOMMAND -#define MPXCOMMAND "makempx" -#endif - -boolean -callmakempx P2C(string, mpname, string, mpxname) -{ - int ret; - string cnf_cmd = kpse_var_value ("MPXCOMMAND"); - - if (cnf_cmd && STREQ (cnf_cmd, "0")) { - /* If they turned off this feature, just return success. */ - ret = 0; - - } else { - /* We will invoke something. Compile-time default if nothing else. */ - string cmd; - string qmpname = normalize_quotes(mpname, "mpname"); - string qmpxname = normalize_quotes(mpxname, "mpxname"); - if (!cnf_cmd) - cnf_cmd = xstrdup (MPXCOMMAND); - - if (troffmode) - cmd = concatn (cnf_cmd, " -troff ", - qmpname, " ", qmpxname, NULL); - else if (mpost_tex_program && *mpost_tex_program) - cmd = concatn (cnf_cmd, " -tex=", mpost_tex_program, " ", - qmpname, " ", qmpxname, NULL); - else - cmd = concatn (cnf_cmd, " -tex ", qmpname, " ", qmpxname, NULL); - - /* Run it. */ - ret = system (cmd); - free (cmd); - free (qmpname); - free (qmpxname); - } - - free (cnf_cmd); - return ret == 0; -} -#endif /* MP */ - -/* Metafont/MetaPost fraction routines. Replaced either by assembler or C. - The assembler syntax doesn't work on Solaris/x86. */ -#ifndef TeX -#if defined (__sun__) || defined (__cplusplus) -#define NO_MF_ASM -#endif -#if defined(WIN32) && !defined(NO_MF_ASM) -#include "lib/mfmpw32.c" -#elif defined (__i386__) && defined (__GNUC__) && !defined (NO_MF_ASM) -#include "lib/mfmpi386.asm" -#else -/* Replace fixed-point fraction routines from mf.web and mp.web with - Hobby's floating-point C code. */ - -/**************************************************************** -Copyright 1990 - 1995 by AT&T Bell Laboratories. - -Permission to use, copy, modify, and distribute this software -and its documentation for any purpose and without fee is hereby -granted, provided that the above copyright notice appear in all -copies and that both that the copyright notice and this -permission notice and warranty disclaimer appear in supporting -documentation, and that the names of AT&T Bell Laboratories or -any of its entities not be used in advertising or publicity -pertaining to distribution of the software without specific, -written prior permission. - -AT&T disclaims all warranties with regard to this software, -including all implied warranties of merchantability and fitness. -In no event shall AT&T be liable for any special, indirect or -consequential damages or any damages whatsoever resulting from -loss of use, data or profits, whether in an action of contract, -negligence or other tortious action, arising out of or in -connection with the use or performance of this software. -****************************************************************/ - -/********************************************************** - The following is by John Hobby - **********************************************************/ - -#ifndef FIXPT - -/* These replacements for takefraction, makefraction, takescaled, makescaled - run about 3 to 11 times faster than the standard versions on modern machines - that have fast hardware for double-precision floating point. They should - produce approximately correct results on all machines and agree exactly - with the standard versions on machines that satisfy the following conditions: - 1. Doubles must have at least 46 mantissa bits; i.e., numbers expressible - as n*2^k with abs(n)<2^46 should be representable. - 2. The following should hold for addition, subtraction, and multiplcation but - not necessarily for division: - A. If the true answer is between two representable numbers, the computed - answer must be one of them. - B. When the true answer is representable, this must be the computed result. - 3. Dividing one double by another should always produce a relative error of - at most one part in 2^46. (This is why the mantissa requirement is - 46 bits instead of 45 bits.) - 3. In the absence of overflow, double-to-integer conversion should truncate - toward zero and do this in an exact fashion. - 4. Integer-to-double convesion should produce exact results. - 5. Dividing one power of two by another should yield an exact result. - 6. ASCII to double conversion should be exact for integer values. - 7. Integer arithmetic must be done in the two's-complement system. -*/ -#define ELGORDO 0x7fffffff -#define TWEXP31 2147483648.0 -#define TWEXP28 268435456.0 -#define TWEXP16 65536.0 -#define TWEXP_16 (1.0/65536.0) -#define TWEXP_28 (1.0/268435456.0) - -integer -ztakefraction P2C(integer, p, integer, q) /* Approximate p*q/2^28 */ -{ register double d; - register integer i; - d = (double)p * (double)q * TWEXP_28; - if ((p^q) >= 0) { - d += 0.5; - if (d>=TWEXP31) { - if (d!=TWEXP31 || (((p&077777)*(q&077777))&040000)==0) - aritherror = true; - return ELGORDO; - } - i = (integer) d; - if (d==i && (((p&077777)*(q&077777))&040000)!=0) --i; - } else { - d -= 0.5; - if (d<= -TWEXP31) { - if (d!= -TWEXP31 || ((-(p&077777)*(q&077777))&040000)==0) - aritherror = true; - return -ELGORDO; - } - i = (integer) d; - if (d==i && ((-(p&077777)*(q&077777))&040000)!=0) ++i; - } - return i; -} - -integer -ztakescaled P2C(integer, p, integer, q) /* Approximate p*q/2^16 */ -{ register double d; - register integer i; - d = (double)p * (double)q * TWEXP_16; - if ((p^q) >= 0) { - d += 0.5; - if (d>=TWEXP31) { - if (d!=TWEXP31 || (((p&077777)*(q&077777))&040000)==0) - aritherror = true; - return ELGORDO; - } - i = (integer) d; - if (d==i && (((p&077777)*(q&077777))&040000)!=0) --i; - } else { - d -= 0.5; - if (d<= -TWEXP31) { - if (d!= -TWEXP31 || ((-(p&077777)*(q&077777))&040000)==0) - aritherror = true; - return -ELGORDO; - } - i = (integer) d; - if (d==i && ((-(p&077777)*(q&077777))&040000)!=0) ++i; - } - return i; -} - -/* Note that d cannot exactly equal TWEXP31 when the overflow test is made - because the exact value of p/q cannot be strictly between (2^31-1)/2^28 - and 8/1. No pair of integers less than 2^31 has such a ratio. -*/ -integer -zmakefraction P2C(integer, p, integer, q) /* Approximate 2^28*p/q */ -{ register double d; - register integer i; -#ifdef DEBUG - if (q==0) confusion(47); -#endif /* DEBUG */ - d = TWEXP28 * (double)p /(double)q; - if ((p^q) >= 0) { - d += 0.5; - if (d>=TWEXP31) {aritherror=true; return ELGORDO;} - i = (integer) d; - if (d==i && ( ((q>0 ? -q : q)&077777) - * (((i&037777)<<1)-1) & 04000)!=0) --i; - } else { - d -= 0.5; - if (d<= -TWEXP31) {aritherror=true; return -ELGORDO;} - i = (integer) d; - if (d==i && ( ((q>0 ? q : -q)&077777) - * (((i&037777)<<1)+1) & 04000)!=0) ++i; - } - return i; -} - -/* Note that d cannot exactly equal TWEXP31 when the overflow test is made - because the exact value of p/q cannot be strictly between (2^31-1)/2^16 - and 2^15/1. No pair of integers less than 2^31 has such a ratio. -*/ -integer -zmakescaled P2C(integer, p, integer, q) /* Approximate 2^16*p/q */ -{ register double d; - register integer i; -#ifdef DEBUG - if (q==0) confusion(47); -#endif /* DEBUG */ - d = TWEXP16 * (double)p /(double)q; - if ((p^q) >= 0) { - d += 0.5; - if (d>=TWEXP31) {aritherror=true; return ELGORDO;} - i = (integer) d; - if (d==i && ( ((q>0 ? -q : q)&077777) - * (((i&037777)<<1)-1) & 04000)!=0) --i; - } else { - d -= 0.5; - if (d<= -TWEXP31) {aritherror=true; return -ELGORDO;} - i = (integer) d; - if (d==i && ( ((q>0 ? q : -q)&077777) - * (((i&037777)<<1)+1) & 04000)!=0) ++i; - } - return i; -} - -#endif /* not FIXPT */ -#endif /* not assembler */ -#endif /* not TeX, i.e., MF or MP */ - -#ifdef MF -/* On-line display routines for Metafont. Here we use a dispatch table - indexed by the MFTERM or TERM environment variable to select the - graphics routines appropriate to the user's terminal. stdout must be - connected to a terminal for us to do any graphics. */ - -#ifdef MFNOWIN -#undef AMIGAWIN -#undef EPSFWIN -#undef HP2627WIN -#undef MFTALKWIN -#undef NEXTWIN -#undef REGISWIN -#undef SUNWIN -#undef TEKTRONIXWIN -#undef UNITERMWIN -#undef WIN32WIN -#undef X11WIN -#endif - -#ifdef AMIGAWIN -extern int mf_amiga_initscreen P1H(void); -extern void mf_amiga_updatescreen P1H(void); -extern void mf_amiga_blankrectangle P4H(screencol, screencol, screenrow, screenrow); -extern void mf_amiga_paintrow P4H(screenrow, pixelcolor, transspec, screencol); -#endif -#ifdef EPSFWIN -extern int mf_epsf_initscreen P1H(void); -extern void mf_epsf_updatescreen P1H(void); -extern void mf_epsf_blankrectangle P4H(screencol, screencol, screenrow, screenrow); -extern void mf_epsf_paintrow P4H(screenrow, pixelcolor, transspec, screencol); -#endif -#ifdef HP2627WIN -extern int mf_hp2627_initscreen P1H(void); -extern void mf_hp2627_updatescreen P1H(void); -extern void mf_hp2627_blankrectangle P4H(screencol, screencol, screenrow, screenrow); -extern void mf_hp2627_paintrow P4H(screenrow, pixelcolor, transspec, screencol); -#endif -#ifdef MFTALKWIN -extern int mf_mftalk_initscreen P1H(void); -extern void mf_mftalk_updatescreen P1H(void); -extern void mf_mftalk_blankrectangle P4H(screencol, screencol, screenrow, screenrow); -extern void mf_mftalk_paintrow P4H(screenrow, pixelcolor, transspec, screencol); -#endif -#ifdef NEXTWIN -extern int mf_next_initscreen P1H(void); -extern void mf_next_updatescreen P1H(void); -extern void mf_next_blankrectangle P4H(screencol, screencol, screenrow, screenrow); -extern void mf_next_paintrow P4H(screenrow, pixelcolor, transspec, screencol); -#endif -#ifdef REGISWIN -extern int mf_regis_initscreen P1H(void); -extern void mf_regis_updatescreen P1H(void); -extern void mf_regis_blankrectangle P4H(screencol, screencol, screenrow, screenrow); -extern void mf_regis_paintrow P4H(screenrow, pixelcolor, transspec, screencol); -#endif -#ifdef SUNWIN -extern int mf_sun_initscreen P1H(void); -extern void mf_sun_updatescreen P1H(void); -extern void mf_sun_blankrectangle P4H(screencol, screencol, screenrow, screenrow); -extern void mf_sun_paintrow P4H(screenrow, pixelcolor, transspec, screencol); -#endif -#ifdef TEKTRONIXWIN -extern int mf_tektronix_initscreen P1H(void); -extern void mf_tektronix_updatescreen P1H(void); -extern void mf_tektronix_blankrectangle P4H(screencol, screencol, screenrow, screenrow); -extern void mf_tektronix_paintrow P4H(screenrow, pixelcolor, transspec, screencol); -#endif -#ifdef UNITERMWIN -extern int mf_uniterm_initscreen P1H(void); -extern void mf_uniterm_updatescreen P1H(void); -extern void mf_uniterm_blankrectangle P4H(screencol, screencol, screenrow, screenrow); -extern void mf_uniterm_paintrow P4H(screenrow, pixelcolor, transspec, screencol); -#endif -#ifdef WIN32WIN -extern int mf_win32_initscreen P1H(void); -extern void mf_win32_updatescreen P1H(void); -extern void mf_win32_blankrectangle P4H(screencol, screencol, screenrow, screenrow); -extern void mf_win32_paintrow P4H(screenrow, pixelcolor, transspec, screencol); -#endif -#ifdef X11WIN -extern int mf_x11_initscreen P1H(void); -extern void mf_x11_updatescreen P1H(void); -extern void mf_x11_blankrectangle P4H(screencol, screencol, screenrow, screenrow); -extern void mf_x11_paintrow P4H(screenrow, pixelcolor, transspec, screencol); -#endif -extern int mf_trap_initscreen P1H(void); -extern void mf_trap_updatescreen P1H(void); -extern void mf_trap_blankrectangle P4H(screencol, screencol, screenrow, screenrow); -extern void mf_trap_paintrow P4H(screenrow, pixelcolor, transspec, screencol); - - -/* This variable, `mfwsw', contains the dispatch tables for each - terminal. We map the Pascal calls to the routines `init_screen', - `update_screen', `blank_rectangle', and `paint_row' into the - appropriate entry point for the specific terminal that MF is being - run on. */ - -struct mfwin_sw -{ - char *mfwsw_type; /* Name of terminal a la TERMCAP. */ - int (*mfwsw_initscreen) P1H(void); - void (*mfwsw_updatescrn) P1H(void); - void (*mfwsw_blankrect) P4H(screencol, screencol, screenrow, screenrow); - void (*mfwsw_paintrow) P4H(screenrow, pixelcolor, transspec, screencol); -} mfwsw[] = -{ -#ifdef AMIGAWIN - { "amiterm", mf_amiga_initscreen, mf_amiga_updatescreen, - mf_amiga_blankrectangle, mf_amiga_paintrow }, -#endif -#ifdef EPSFWIN - { "epsf", mf_epsf_initscreen, mf_epsf_updatescreen, - mf_epsf_blankrectangle, mf_epsf_paintrow }, -#endif -#ifdef HP2627WIN - { "hp2627", mf_hp2627_initscreen, mf_hp2627_updatescreen, - mf_hp2627_blankrectangle, mf_hp2627_paintrow }, -#endif -#ifdef MFTALKWIN - { "mftalk", mf_mftalk_initscreen, mf_mftalk_updatescreen, - mf_mftalk_blankrectangle, mf_mftalk_paintrow }, -#endif -#ifdef NEXTWIN - { "next", mf_next_initscreen, mf_next_updatescreen, - mf_next_blankrectangle, mf_next_paintrow }, -#endif -#ifdef REGISWIN - { "regis", mf_regis_initscreen, mf_regis_updatescreen, - mf_regis_blankrectangle, mf_regis_paintrow }, -#endif -#ifdef SUNWIN - { "sun", mf_sun_initscreen, mf_sun_updatescreen, - mf_sun_blankrectangle, mf_sun_paintrow }, -#endif -#ifdef TEKTRONIXWIN - { "tek", mf_tektronix_initscreen, mf_tektronix_updatescreen, - mf_tektronix_blankrectangle, mf_tektronix_paintrow }, -#endif -#ifdef UNITERMWIN - { "uniterm", mf_uniterm_initscreen, mf_uniterm_updatescreen, - mf_uniterm_blankrectangle, mf_uniterm_paintrow }, -#endif -#ifdef WIN32WIN - { "win32term", mf_win32_initscreen, mf_win32_updatescreen, - mf_win32_blankrectangle, mf_win32_paintrow }, -#endif -#ifdef X11WIN - { "xterm", mf_x11_initscreen, mf_x11_updatescreen, - mf_x11_blankrectangle, mf_x11_paintrow }, -#endif - - /* Always support this. */ - { "trap", mf_trap_initscreen, mf_trap_updatescreen, - mf_trap_blankrectangle, mf_trap_paintrow }, - -/* Finally, we must have an entry with a terminal type of NULL. */ - { NULL, NULL, NULL, NULL, NULL } - -}; /* End of the array initialization. */ - - -/* This is a pointer to the mfwsw[] entry that we find. */ -static struct mfwin_sw *mfwp; - - -/* The following are routines that just jump to the correct - terminal-specific graphics code. If none of the routines in the - dispatch table exist, or they fail, we produce trap-compatible - output, i.e., the same words and punctuation that the unchanged - mf.web would produce. */ - - -/* This returns true if we can do window operations, else false. */ - -boolean -initscreen P1H(void) -{ - /* If MFTERM is set, use it. */ - const_string tty_type = kpse_var_value ("MFTERM"); - - if (tty_type == NULL) - { -#if defined (AMIGA) - tty_type = "amiterm"; -#elif defined (WIN32) - tty_type = "win32term"; -#elif defined (OS2) || defined (__DJGPP__) /* not AMIGA nor WIN32 */ - tty_type = "mftalk"; -#else /* not (OS2 or WIN32 or __DJGPP__ or AMIGA) */ - /* If DISPLAY is set, we are X11; otherwise, who knows. */ - boolean have_display = getenv ("DISPLAY") != NULL; - tty_type = have_display ? "xterm" : getenv ("TERM"); - - /* If we don't know what kind of terminal this is, or if Metafont - isn't being run interactively, don't do any online output. */ - if (tty_type == NULL - || (!STREQ (tty_type, "trap") && !isatty (fileno (stdout)))) - return 0; -#endif /* not (OS2 or WIN32 or __DJGPP__ or AMIGA) */ - } - - /* Test each of the terminals given in `mfwsw' against the terminal - type, and take the first one that matches, or if the user is running - under Emacs, the first one. */ - for (mfwp = mfwsw; mfwp->mfwsw_type != NULL; mfwp++) { - if (!strncmp (mfwp->mfwsw_type, tty_type, strlen (mfwp->mfwsw_type)) - || STREQ (tty_type, "emacs")) - if (mfwp->mfwsw_initscreen) - return ((*mfwp->mfwsw_initscreen) ()); - else { - fprintf (stderr, "mf: Couldn't initialize online display for `%s'.\n", - tty_type); - break; - } - } - - /* We disable X support by default, since most sites don't use it, and - variations in X configurations seem impossible to overcome - automatically. Too frustrating for everyone involved. */ - if (STREQ (tty_type, "xterm")) { - fputs ("\nmf: Window support for X was not compiled into this binary.\n", - stderr); - fputs ("mf: There may be a binary called `mfw' on your system which\n", - stderr); - fputs ("mf: does contain X window support.\n\n", stderr); - fputs ("mf: If you need to recompile, remember to give the --with-x\n", - stderr); - fputs ("mf: option to configure\n\n", stderr); - fputs ("mf: (Or perhaps you just failed to specify the mode.)\n", stderr); - } - - /* The current terminal type wasn't found in any of the entries, or - initalization failed, so silently give up, assuming that the user - isn't on a terminal that supports graphic output. */ - return 0; -} - - -/* Make sure everything is visible. */ - -void -updatescreen P1H(void) -{ - if (mfwp->mfwsw_updatescrn) - (*mfwp->mfwsw_updatescrn) (); -} - - -/* This sets the rectangle bounded by ([left,right], [top,bottom]) to - the background color. */ - -void -blankrectangle P4C(screencol, left, screencol, right, - screenrow, top, screenrow, bottom) -{ - if (mfwp->mfwsw_blankrect) - (*mfwp->mfwsw_blankrect) (left, right, top, bottom); -} - - -/* This paints ROW, starting with the color INIT_COLOR. - TRANSITION_VECTOR then specifies the length of the run; then we - switch colors. This goes on for VECTOR_SIZE transitions. */ - -void -paintrow P4C(screenrow, row, pixelcolor, init_color, - transspec, transition_vector, screencol, vector_size) -{ - if (mfwp->mfwsw_paintrow) - (*mfwp->mfwsw_paintrow) (row, init_color, transition_vector, vector_size); -} -#endif /* MF */ diff --git a/language/japanese/ptex/ptexextra.h b/language/japanese/ptex/ptexextra.h deleted file mode 100644 index ebde5e41a4..0000000000 --- a/language/japanese/ptex/ptexextra.h +++ /dev/null @@ -1,61 +0,0 @@ -/* ptexextra.h: banner etc. for pTeX. - - This is included by pTeX, from ptexextra.c -*/ - -string based_prog_name = "TeX"; -const_string PTEXHELP[] = { - "Usage: ptex [option] texfile", - " : ptex [option] &format texfile", - "", - "-fmt=NAME use NAME instead of program name or %&format.", - "-halt-on-error stop processing at the first error", - "[-no]-file-line-error disable/enable file:line:error style messages", - "-ini be iniptex.", - "-interaction=STRING set interaction mode (STRING=batchmode|nonstopmode|", - " scrollmode|errorstopmode)", -#ifdef IPC - "-ipc send DVI output to a socket as well as the usual", - " output file", - "-ipc-start as -ipc, and also start the server at the other end", -#endif /* IPC */ - "-jobname=STRING set the job name to STRING", - "-kanji=STRING set Japanese encoding (STRING=euc|jis|sjis)", - "-kpathsea-debug=NUMBER set path searching debugging flags according to", - " the bits of NUMBER", - "[-no]-mktex=FMT disable/enable mktexFMT generation (FMT=tex/tfm)", - "-mltex enable MLTeX extensions such as \\charsubdef", - "-output-comment=STRING use STRING for DVI file comment instead of date", - "-output-directory=DIR use DIR as the directory to write files to", - "[-no]-parse-first-line disable/enable parsing of the first line of the", - " input file", - "-progname=STRING set program (and fmt) name to STRING", - "-recorder enable filename recorder", - "[-no]-shell-escape disable/enable \\write18{SHELL COMMAND}", - "-src-specials insert source specials into the DVI file", - "-src-specials=WHERE insert source specials in certain places of", - " the DVI file. WHERE is a comma-separated value", - " list: cr display hbox math par parend vbox", - "-translate-file=TCXNAME use the TCX file TCXNAME", - "-help print this message and exit.", - "-version print version information and exit.", - NULL -}; - -#define BANNER "This is pTeX, Version 3.141592-p3.1.9" -#define COPYRIGHT_HOLDER "D.E. Knuth" -#define AUTHOR NULL -#define PROGRAM_HELP PTEXHELP -#define BUG_ADDRESS "www-ptex@ascii.co.jp" -#define DUMP_VAR TEXformatdefault -#define DUMP_LENGTH_VAR formatdefaultlength -#define DUMP_OPTION "fmt" -#define DUMP_EXT ".fmt" -#define INPUT_FORMAT kpse_tex_format -#define INI_PROGRAM "iniptex" -#define VIR_PROGRAM "virptex" - -#ifdef Xchr -#undef Xchr -#define Xchr(x) (x) -#endif /* Xchr */ diff --git a/language/japanese/ptex/ptexhelp.h b/language/japanese/ptex/ptexhelp.h deleted file mode 100644 index bd8cd0b652..0000000000 --- a/language/japanese/ptex/ptexhelp.h +++ /dev/null @@ -1,71 +0,0 @@ -/* ptexhelp.h: for the --help option" -*/ -#ifndef PTEXHELP_H -#define PTEXHELP_H -#define HELP_H - -#ifdef TeX -/* ptexextra.h */ -#undef TEXPOOLNAME -#define TEXPOOLNAME "ptex.pool" -#endif /* TeX */ - -#ifdef TFTOPL -string based_prog_name = "TFtoPL"; -const_string PTEXTFTOPLHELP[] = { -"Usage: tftopl [option] tfmfile [plfile]", -"", -" -verbose output progress reports.", -" -version print version information and exit.", -" -help print this message and exit.", -" -kanji={jis|euc|sjis} plfile kanji code.", -NULL }; -#endif /* TFTOPL */ - -#ifdef PLTOTF -string based_prog_name = "PLtoTF"; -const_string PTEXPLTOTFHELP[] = { -"Usage: pltotf [option] plfile [tfmfile]", -"", -" -verbose output progress reports.", -" -version print version information and exit.", -" -help print this message and exit.", -" -kanji={jis|euc|sjis} plfile kanji code.", -NULL }; -#endif /* PLTOTF */ - -#ifdef BIBTEX -string based_prog_name = "BibTeX"; -const_string JBIBTEXHELP[] = { -"Usage: jbibtex [option] auxfile", -"", -" -min-crossrefs=INTEGER minimum number of cross-refs required", -" for automatic cite_list inclusion (default 2).", -" -terse do silently.", -" -version print version information and exit.", -" -help print this message and exit.", -" -kanji={jis|euc|sjis} kanji code for output-file.", -NULL }; -#endif /* BIBTEX */ - -#ifdef DVITYPE -string based_prog_name = "DVItype"; -const_string PDVITYPEHELP[] = { -"Usage: pdvitype [option] dvifile", -"", -" -dpi=REAL assumed device resolution in pixels per inch", -" (default 300.0).", -" -magnification=INTEGER overrride the postamble's magnification.", -" -max-pages=INTEGER maximum number of pages (default 1000000).", -" -output-level=1..4 verbosity level.", -" 1: terse, 2: medium-level, 3: verbose,", -" 4: plus check for postamble(default).", -" -page-start=PAGE type, e.g., `1.*.-5' to specify the first page", -" with \\count0=1, \\count2=4.", -" (see the TeX book chapter 15).", -" -show-opcodes show opcodes in dicimal.", -" -version print version information and exit.", -" -help print this message and exit.", -NULL }; -#endif /* DVITYPE */ -#endif /* PTEXHELP_H */ diff --git a/language/japanese/ptex/tftopl.ch b/language/japanese/ptex/tftopl.ch deleted file mode 100644 index 5ec3f96586..0000000000 --- a/language/japanese/ptex/tftopl.ch +++ /dev/null @@ -1,544 +0,0 @@ -% This is a change file for TFtoPL -% -% (03/27/1998) KN TFtoPL p1.4 (3.1, Web2c 7.2) -% -@x [0] l.45 - pTeX: -\def\title{TF\lowercase{to}PL changes for C} -@y -\def\title{TF\lowercase{to}PL changes for C, and for KANJI} -@z - -@x [2] l.64 - pTeX: -@d banner=='This is TFtoPL, Version 3.1' {printed when the program starts} -@y -@d banner=='This is Nihongo TFtoPL, Version 3.2-p1.5' - {printed when the program starts} -@d jis_enc==0 -@d euc_enc==1 -@d sjis_enc==2 -@z - -@x [2] l.91 - pTeX: -procedure initialize; {this procedure gets things started properly} -@y -procedure initialize; {this procedure gets things started properly} -var @!k:integer; {all-purpose initiallization index} -@z - -@x [2] l.97 - pTeX: - tfm_file_array := cast_to_byte_pointer (xmalloc (1003)); -@y - tfm_file_array := cast_to_byte_pointer (xmalloc (1003+4)); -@z - -@x [7] l.149 - pTeX: - print_ln (version_string); -@y - print_ln (version_string); - print ('process kanji code is '); - case proc_kanji_code of - jis_enc: print('jis'); - euc_enc: print('euc'); - sjis_enc: print('sjis'); - end; - print_ln('.'); -@z - -@x [18.20] l.438 - pTeX: -@d index == index_type -@y -@d index == index_type -@d yoko_id_byte = 11 {id byte for YOKO-kumi kanji tfm files} -@d tate_id_byte = 9 {id byte for TATE-kumi kanji tfm files} -@d tfm_format = 1 {normal tfm formated metric files} -@d jfm_format = 2 {jfm formated metric files for YOKO-kumi kanji} -@d vfm_format = 3 {vfm formated metric files for TATE-kumi kanji} -@z - -@x [18.20] l.448 - pTeX: -@!tfm_file_array: pointer_to_byte; {the input data all goes here} -@y -@!tfm_file_array: pointer_to_byte; {the input data all goes here} -@!file_format:tfm_format..vfm_format; {format of tfm file} -@!nt:0..@'77777; {number of words in the character type table} -@!ng:0..@'77777; {number of words in the glue table} -@z - -@x [20] l.434 - pTeX: Read JFM header -read(tfm_file,tfm[1]); lf:=tfm[0]*@'400+tfm[1]; -@y -read(tfm_file,tfm[1]); lf:=tfm[0]*@'400+tfm[1]; -if lf=yoko_id_byte then - begin file_format:=jfm_format; - print_ln('Input file is in YOKO-kumi kanji tfm format.'); - write_ln(pl_file,'(COMMENT THIS IS A KANJI FORMAT FILE)'); - end -else if lf=tate_id_byte then - begin file_format:=vfm_format; - print_ln('Input file is in TATE-kumi kanji tfm format.'); - write_ln(pl_file,'(COMMENT THIS IS A KANJI FORMAT FILE)'); - write_ln(pl_file,'(DIRECTION TATE)'); - end -else begin file_format:=tfm_format; nt:=0; tmp_ptr:=2; - end; -if file_format<>tfm_format then - begin if eof(tfm_file) then abort('The input file is only two bytes long!'); - read(tfm_file,tfm[2]); - if eof(tfm_file) then abort('The input file is only three bytes long!'); - read(tfm_file,tfm[3]); nt:=tfm[2]*@'400+tfm[3]; - if eof(tfm_file) then abort('The input file is only four bytes long!'); - read(tfm_file,tfm[4]); - if eof(tfm_file) then abort('The input file is only five bytes long!'); - read(tfm_file,tfm[5]); lf:=tfm[4]*@'400+tfm[5]; - tmp_ptr:=6; - end; -@z - -@x [20] l.445 - pTeX: put the rest of the file into tfm[6] and after -for tfm_ptr:=2 to 4*lf-1 do -@y -for tfm_ptr:=tmp_ptr to 4*lf-1 do -@z - -@x [21] l.468 - pTeX: the location of subfile sizes is different -begin tfm_ptr:=2;@/ -@y -begin -if file_format<>tfm_format then - begin tfm_ptr:=6; check_sum_value:=28; - end -else - begin tfm_ptr:=2; check_sum_value:=24; - end; -@z - -@x [21] l.485 - pTeX: ng has to be treated specially -if (bc>ec+1)or(ec>255) then abort('The character code range ', -@.The character code range...@> - bc:1,'..',ec:1,'is illegal!'); -if (nw=0)or(nh=0)or(nd=0)or(ni=0) then - abort('Incomplete subfiles for character dimensions!'); -@.Incomplete subfiles...@> -if ne>256 then abort('There are ',ne:1,' extensible recipes!'); -@.There are ... recipes@> -if lf<>6+lh+(ec-bc+1)+nw+nh+nd+ni+nl+nk+ne+np then - abort('Subfile sizes don''t add up to the stated total!'); -@.Subfile sizes don't add up...@> -@y -case file_format of -tfm_format: begin - if (bc>ec+1)or(ec>255) then abort('The character code range ', -@.The character code range...@> - bc:1,'..',ec:1,'is illegal!'); - if (nw=0)or(nh=0)or(nd=0)or(ni=0) then - abort('Incomplete subfiles for character dimensions!'); -@.Incomplete subfiles...@> - if ne>256 then abort('There are ',ne:1,' extensible recipes!'); -@.There are ... recipes@> - if lf<>6+lh+(ec-bc+1)+nw+nh+nd+ni+nl+nk+ne+np then - abort('Subfile sizes don''t add up to the stated total!'); -@.Subfile sizes don't add up...@> - end; -jfm_format,vfm_format: begin ng:=ne; - if (bc>ec+1)or(ec>255)or(bc<>0) then abort('The character code range ', -@.The character code range...@> - bc:1,'..',ec:1,'is illegal!'); - if (nw=0)or(nh=0)or(nd=0)or(ni=0) then - abort('Incomplete subfiles for character dimensions!'); -@.Incomplete subfiles...@> - if lf<>7+nt+lh+(ec-bc+1)+nw+nh+nd+ni+nl+nk+ng+np then - abort('Sum of subfile sizes (', - 7+nt+lh+(ec-bc+1)+nw+nh+nd+ni+nl+nk+ng+np:1, - ') is not equal to the stated total ', lf:1); -@.Subfile sizes don't add up...@> - end; -end; -@z - -@x [23] l.506 - pTeX: declare type_base. -@!char_base,@!width_base,@!height_base,@!depth_base,@!italic_base, -@!lig_kern_base,@!kern_base,@!exten_base,@!param_base:integer; - {base addresses for the subfiles} -@y -@!char_base,@!width_base,@!height_base,@!depth_base,@!italic_base, -@!lig_kern_base,@!kern_base,@!exten_base,@!param_base:integer; -@!type_base,@!glue_base:integer; {base addresses for the subfiles} -@!check_sum_value:integer; {either 24 (normal case) or 28 (kanji case)} -@z - -@x [24] l.510 - pTeX: define type_base -@ @= -begin char_base:=6+lh-bc; -@y -@ @= -begin -if file_format<>tfm_format then - begin type_base:=7+lh; - char_base:=type_base+nt-bc; { bc should be zero ...} - end -else char_base:=6+lh-bc; -@z - -@x [24] l.517 - pTeX: define glue_base -kern_base:=lig_kern_base+nl; -exten_base:=kern_base+nk; -param_base:=exten_base+ne-1; -@y -kern_base:=lig_kern_base+nl; -exten_base:=kern_base+nk; -glue_base:=exten_base; -param_base:=exten_base+ne-1; -@z - -@x [25] l.529 - pTeX: must change check_sum from macro (=24) to variable -@d check_sum=24 -@d design_size=check_sum+4 -@d scheme=design_size+4 -@d family=scheme+40 -@d random_word=family+20 -@y -@d check_sum==check_sum_value -@d design_size==check_sum+4 -@d scheme==design_size+4 -@d family==scheme+40 -@d random_word==family+20 -@z - -@x [25] l.549 - pTeX: add definition of glue macro -@d kern(#)==4*(kern_base+#) {here \#\ is an index, not a character} -@y -@d kern(#)==4*(kern_base+#) {here \#\ is an index, not a character} -@d glue(#)==4*(glue_base+#) {likewise} -@z - -@x [63] l.1003 - pTeX: Name of parameter for kanji-font -else if (i<=13)and(font_type=mathex) then - if i=8 then out('DEFAULTRULETHICKNESS') - else out('BIGOPSPACING',i-8:1) -else out('PARAMETER D ',i:1) -@y -else if (i<=13)and(font_type=mathex) then - if i=8 then out('DEFAULTRULETHICKNESS') - else out('BIGOPSPACING',i-8:1) -else if (i<=9)and(file_format<>tfm_format) then - if i=8 then out('EXTRASTRETCH') - else out('EXTRASHRINK') -else out('PARAMETER D ',i:1) -@z - -@x [64] l.1027 - pTeX: Add printing of newline at end of program -if nk>0 then for i:=0 to nk-1 do check_fix(kern(i))('Kern'); -@.Kern n is too big@> -@y -if nk>0 then for i:=0 to nk-1 do check_fix(kern(i))('Kern'); -@.Kern n is too big@> -if file_format<>tfm_format then - begin if ng>0 then for i:=0 to ng-1 do check_fix(glue(i))('Glue'); -@.Glue n is too big@> - end; -@z - -@x [68] l.1068 - pTeX: we print GLUEKERN instead of LIGTABLE - begin left; out('LIGTABLE'); out_ln;@/ -@y - begin left; - if file_format<>tfm_format then out('GLUEKERN') else out('LIGTABLE'); - out_ln;@/ -@z - -@x [69] l.1090 - pTeX: we print Glue/kern instead of Ligature/kern - print('Ligature/kern starting index for character '); print_octal(c); - print_ln(' is too large;'); print_ln('so I removed it.'); reset_tag(c); -@.Ligature/kern starting index...@> -@y - case file_format of - tfm_format: print('Ligature/kern '); -@.Ligature/kern starting index...@> - jfm_format,vfm_format: print('Glue/kern '); -@.Glue/kern index starging index...@> - end; - print('starting index for character '); print_octal(c); - print_ln(' is too large;'); print_ln('so I removed it.'); reset_tag(c); -@z - -@x [76] l.1179 - pTeX: if kanji format, output a glue step not a ligature step -else @; -@y -else if file_format=tfm_format then @ -else if (file_format=jfm_format)or(file_format=vfm_format) then - @; -@z - -@x [78] l.1238 - pTeX: -for c:=bc to ec do if width_index(c)>0 then -@y -for c:=bc to ec do -if width_index(c)=0 then - begin if file_format<>tfm_format then - bad('width index of type ',c:1,' is zero!!') - end -else if width_index(c)>0 then -@z - -@x [78] l.1246 - pTeX: the 'character' table is really the 'type' table - left; out('CHARACTER'); out_char(c); out_ln; -@y - left; - if file_format<>tfm_format then - begin out('TYPE'); tfm[0]:=c; out_octal(0,1); - end - else - begin out('CHARACTER'); out_char(c); - end; - out_ln; -@z - -@x [78] l.1251 - pTeX: types can only have tags equal to 0 or 1 - case tag(c) of - no_tag: do_nothing; - lig_tag: @; - list_tag: @; - ext_tag: @; - end; {there are no other cases} - right; - end -@y - case tag(c) of - no_tag: do_nothing; - lig_tag: @; - list_tag: if file_format<>tfm_format then - bad('the tag of type ',c:1,' must be 0 or 1') - else @; - ext_tag: if file_format<>tfm_format then - bad('the tag of type ',c:1,' must be 0 or 1') - else @; - end; {there are no other cases} - right; - end -@z - -@x [96] l.1539 - pTeX: -var tfm_ptr:index; {an index into |tfm|} -@y -var tfm_ptr,tmp_ptr:index; {an index into |tfm|} -@z - -@x [98] l.1566 - pTeX: declare kanji conversion subroutines and externals -@p begin initialize;@/ -@y -@p -@; -begin initialize;@/ -@z - -@x [99] l.1570 - pTeX: don't check extensible recipes and list the char_type table -@; -@y -if file_format<>tfm_format then - begin @; - end -else - begin @; - end; -@z - -@x -const n_options = 4; {Pascal won't count array lengths for us.} -@y -const n_options = 5; {Pascal won't count array lengths for us.} -@z -@x - usage_help (TFTOPL_HELP, nil); -@y - usage_help (PTEX_TFTOPL_HELP, nil); -@z -@x - end else if argument_is ('version') then begin - print_version_and_exit (banner, nil, 'D.E. Knuth'); -@y - end else if argument_is ('version') then begin - print_version_and_exit (banner, nil, 'D.E. Knuth'); - - end else if argument_is ('kanji') then begin - @; -@z - -@x -@ An element with all zeros always ends the list. -@y -@ kanji option - -@ = -long_options[current_option].name := 'kanji'; -long_options[current_option].has_arg := 1; -long_options[current_option].flag := 0; -long_options[current_option].val := 0; -incr(current_option); - -@ An element with all zeros always ends the list. -@z - -@x [99] l.1751 - pTeX: -@* Index. -@y -@* For Japanese Font Metric routines. % pTeX: -We need to include some routines for handling kanji character. - -@d max_kanji=7237 {number of the kanji characters - 1} - -@= -@!this_code:integer; {to hold jis code of the current kanji character} -@!this_type:integer; {to hold |char_type| of the current kanji character} -@!type_index:integer; {index into |char_type| table} -@!type_num:integer; {index into |char_info| table} -@!type_count:integer; {number of chars with the same type} -@!kanji_index:integer; {index into |kanji_type| array} -@!kanji_type:array[0..max_kanji] of -1..255; {kanji type index} - -@ @= -begin if nonexistent(tfm[k+1]) then - correct_bad_char('Glue step for')(k+1) -@.Glue step for nonexistent...@> -else - begin left; out('GLUE'); out_char(tfm[k+1]); - if tfm[k+3]>=ng then - begin bad('Glue index too large.'); -@.Glue index too large@> - out(' R 0.0 R 0.0 R 0.0'); - end - else begin out_fix(glue(3*tfm[k+3])); - out_fix(glue(3*tfm[k+3]+1)); - out_fix(glue(3*tfm[k+3]+2)); - end; - right; - end; -end; - -@ list the |char_type| table in a similar way to the type table - -@= -this_code:=tfm[4*type_base+0]*@'400+tfm[4*type_base+1]; -this_type:=tfm[4*type_base+2]*@'400+tfm[4*type_base+3]; -if (this_code<>0)or(this_type<>0) then - begin bad('the first entry in char_type is not zero. I''ll zero it.'); - print_ln('JIS code is ', this_code:1, '. Type is ', this_type:1, '.'); - end; -for kanji_index:=0 to max_kanji do kanji_type[kanji_index]:=-1; -for type_index:=1 to nt-1 do - begin this_code:=tfm[4*type_base + type_index * 4 + 0] * 256 + - tfm[4*type_base + type_index * 4 + 1]; - this_type:=tfm[4*type_base + type_index * 4 + 2] * 256 + - tfm[4*type_base + type_index * 4 + 3]; - if not valid_jis_code(this_code) then - bad('jis code ', this_code:1, - ' in char_type table entry ', type_index:1, - ' is not valid. Ignoring it.') - else if (this_type <= 0) or (this_type > ec) then - bad('type ', this_type:1, ' of jis code ', this_code:1, - ' in char_type table is not valid. Ignoring character.') - else - kanji_type[jis_to_index(this_code)] := this_type; - end; -@# -for type_num:=1 to ec do - begin left; out('CHARSINTYPE'); - tfm[0]:=type_num; out_octal(0,1); out_ln; - type_count:=0; - for kanji_index:=0 to max_kanji do - if kanji_type[kanji_index]=type_num then - begin incr(type_count); - if (type_count mod 14)=0 then out_ln; - out_kanji(index_to_jis(kanji_index)); out(' '); - end; - if type_count=0 then bad('type ', type_num:1, 'has no characters in it!'); - out_ln; right; - end; - -@ Some subroutines to handle kanji codes and i/o - -@= -@!xchr:array[char] of byte; {specifiles conversion of output charcter} - -@ @= -for k:=@'0 to @'37 do xchr[k]:='?'; -for k:=@'40 to 255 do xchr[k]:=k; - -@ @= -procedure out_kanji(jis_code:integer); { prints a kanji character } -var @!cx:integer; {KANJI code} -i:0..4; {index of array} -begin@/ -if charcode_format=charcode_octal then - begin cx:=jis_code; out(' J '); {specify jiscode format} - dig[0]:=Hi(cx) div 16; dig[1]:=Hi(cx) mod 16; - dig[2]:=Lo(cx) div 16; dig[3]:=Lo(cx) mod 16; - for i:=0 to 3 do - if dig[i]<10 then out(dig[i]) else - case dig[i] of - 10: out('A'); 11: out('B'); 12: out('C'); - 13: out('D'); 14: out('E'); 15: out('F'); - end; - end -else begin - if (proc_kanji_code=sjis_enc) then cx:=JIStoSJIS(jis_code) - else cx:=JIStoEUC(jis_code); - out(xchr[Hi(cx)]); out(xchr[Lo(cx)]); - end; -end; - -@ @= -function valid_jis_code(cx:integer):boolean; -var first_byte, second_byte:integer; { jis code bytes } -begin valid_jis_code:=true; -first_byte:=cx div @'400; second_byte:=cx mod @'400; -if (first_byte<@"21) - or((first_byte>@"28)and(first_byte<@"30)) - or(first_byte>@"74) then valid_jis_code:=false; -if (second_byte<@"21)or(second_byte>@"7E) then valid_jis_code:=false; -end; - -@ @= -function index_to_jis(ix:integer):integer; -begin -if ix<=8*94+94-1 then - index_to_jis:=(ix div 94 + @"21) * @'400 + (ix mod 94 + @"21) -else - index_to_jis:=((ix+7 * 94) div 94 + @"21) * @'400 + ((ix+7*94) mod 94 + @"21) -end; - -@ @= -function jis_to_index(cx:integer):integer; -var first_byte,second_byte:integer; { jis code bytes } -begin -first_byte:=cx div @'400 - @"21; -second_byte:=cx mod @'400 - @"21; -if first_byte<=8 then - jis_to_index:=first_byte*94+second_byte -else - jis_to_index:=(first_byte-7)*94+second_byte; -end - -@ output kanji code. - -@ = -@!proc_kanji_code:jis_enc..sjis_enc; - -@ @ = -ifdef('OUTJIS') proc_kanji_code:=jis_enc; endif('OUTJIS')@/ -ifdef('OUTEUC') proc_kanji_code:=euc_enc; endif('OUTEUC')@/ -ifdef('OUTSJIS') proc_kanji_code:=sjis_enc; endif('OUTSJIS')@/ - -@ @= - if strcmp(optarg, 'jis') = 0 then - proc_kanji_code:=jis_enc - else if strcmp(optarg, 'euc') = 0 then - proc_kanji_code:=euc_enc - else if strcmp(optarg, 'sjis') = 0 then - proc_kanji_code:=sjis_enc - else - print_ln('Bad kanjicode encoding', optarg, '.'); - -@* Index. -@z diff --git a/language/japanese/ptex/usage.c b/language/japanese/ptex/usage.c deleted file mode 100644 index 490065dbc3..0000000000 --- a/language/japanese/ptex/usage.c +++ /dev/null @@ -1,28 +0,0 @@ -#include "config.h" - -/*** lib/usage.c: Output a help message (from help.h). ***/ -void -usage P1C(const_string, str) -{ - fprintf (stderr, "Try `%s --help' for more information.\n", str); - uexit (1); -} - -/* Call usage if the program exits by printing the help message. - MESSAGE is an NULL-terminated array or strings which make up the - help message. Each string is printed on a separate line. - We use arrays instead of a single string to work around compiler - limitations (sigh). -*/ -void -usagehelp P2C(const_string*, message, const_string, bug_email) -{ - if (!bug_email) - bug_email = "www-ptex@ascii.co.jp"; - while (*message) { - fprintf(stdout, "%s\n", *message); - ++message; - } - fprintf(stdout, "\nEmail bug reports to %s.\n", bug_email); - uexit(0); -} diff --git a/language/japanese/ptex/version.c b/language/japanese/ptex/version.c deleted file mode 100644 index 63a9b2b3a1..0000000000 --- a/language/japanese/ptex/version.c +++ /dev/null @@ -1,54 +0,0 @@ -#include "config.h" -#include "kanji.h" - -/*** lib/printversion.c: Output for the option --version. ***/ -void -printversionandexit P3C(const_string, banner, - const_string, copyright_holder, const_string, author) -{ - extern string versionstring; /* from web2c/lib/version.c */ - extern string based_prog_name; - extern KPSEDLL string kpathsea_version_string;/* from kpathsea/version.c */ - string prog_name, prog_version; - string work_banner; - unsigned len; - -#if TERM_CODE == JIS - string term_code=" (JIS)"; -#elif TERM_CODE == SJIS - string term_code=" (SJIS)"; -#else - string term_code=" (EUC)"; -#endif - - work_banner = xstrdup(banner); - /* attention!: sizeof(s) = strlen(s) + 1 */ - prog_name = strtok(work_banner, ",") + sizeof("This is ") - 1; - prog_version = strtok(NULL, ",") + sizeof(" Version ") - 1; - - /* The Web2c version string starts with a space. */ - printf ("%s %s%s%s\n", prog_name, prog_version, term_code, versionstring); - puts (kpathsea_version_string); - - if (copyright_holder) { - printf ("Copyright (C) 1999 %s.\n", copyright_holder); - if (!author) - author = copyright_holder; - } - - puts ("Kpathsea is copyright (C) 1999 Free Software Foundation, Inc."); - - puts ("There is NO warranty. Redistribution of this software is"); - fputs ("covered by the terms of ", stdout); - /* DVIcopy is GPL'd, so no additional words needed. */ - if (/*copyright_holder && */!STREQ (prog_name, "DVIcopy")) { - printf ("both the %s copyright and\n", prog_name); - } - puts ("the GNU General Public License."); - puts ("For more information about these matters, see the files"); - printf ("named COPYING and the %s source.\n", prog_name); - printf ("Primary author of %s: %s.\n", based_prog_name, author); - puts ("Kpathsea written by Karl Berry and others."); - - uexit (0); -} diff --git a/language/japanese/uptex-base/00readme_uptex.txt b/language/japanese/uptex-base/00readme_uptex.txt index be76b25379..99972d0a2c 100644 --- a/language/japanese/uptex-base/00readme_uptex.txt +++ b/language/japanese/uptex-base/00readme_uptex.txt @@ -1,5 +1,5 @@ upTeX, upLaTeX --- unicode version of ASCII pTeX, pLaTeX -2019.05.12 Ver1.25 +2020.02.22 Ver1.26 TANAKA, Takuji ttk(at)t-lab(dot)opal(dot)ne(dot)jp [ Contents ] @@ -24,6 +24,7 @@ No warranty. ASCII MEDIA WORKS http://ascii.asciimw.jp/pb/ptex/ (dead link) https://web.archive.org/web/20161229061414/http://ascii.asciimw.jp/pb/ptex/ (web archive) + https://asciidwango.github.io/ptex/ (by DWANGO Co., Ltd.) [2] upTeX, upLaTeX ― unicode version of pTeX, pLaTeX http://www.t-lab.opal.ne.jp/tex/uptex_en.html diff --git a/language/japanese/uptex-base/01uptex_doc_utf8.txt b/language/japanese/uptex-base/01uptex_doc_utf8.txt index 525bbd1fe5..aebc0e62e9 100644 --- a/language/japanese/uptex-base/01uptex_doc_utf8.txt +++ b/language/japanese/uptex-base/01uptex_doc_utf8.txt @@ -1,5 +1,5 @@ upTeX, upLaTeX --- 内部unicode版 pTeX, pLaTeX ã®å®Ÿè£… -2019.05.12 Ver1.25 +2020.02.22 Ver1.26 TANAKA, Takuji ttk(at)t-lab(dot)opal(dot)ne(dot)jp â—‡ upTeX開発ã®ã­ã‚‰ã„ @@ -176,7 +176,7 @@ pTeX を中心ã«æŽ¨ç§»ã—ã¦ããŸæ—¥æœ¬ã® TeX ユーザー㌠ã“ã®ä»•æ§˜ã¯ pTeX ã§ã‚‚åŒæ§˜ã¨ãªã£ã¦ã„る。 <14> æ–°ã—ã \kchar, \kchardef プリミティヴをを追加。 \char`<文字>, \chardef ã§ã¯æ–‡å­—コードãŒ255以下ã®å ´åˆã«ã¯æ¬§æ–‡å‹•ä½œã€ - 265以上ã®å ´åˆã«ã¯å’Œæ–‡å‹•ä½œã¨ãªã‚‹ã€‚ + 256以上ã®å ´åˆã«ã¯å’Œæ–‡å‹•ä½œã¨ãªã‚‹ã€‚ \kchar`<文字>, \kchardef ã§ã¯æ–‡å­—コード範囲ã«ã‚ˆã‚‰ãšå’Œæ–‡å‹•ä½œã¨ãªã‚‹ã€‚ <15> 従æ¥ãƒ‡ãƒ•ã‚©ãƒ«ãƒˆã®ãƒ•ã‚©ãƒ³ãƒˆã¯set2ã®ç¯„囲ã§æ¸ˆã‚€ã‚ˆã†ã«ã—〠set3ã‚’å«ã‚€ãƒ•ã‚©ãƒ³ãƒˆ(vf)ã¯ã‚ªãƒ—ションã¨ã—ã¦ã„ãŸãŒã€ @@ -451,15 +451,16 @@ kcatcodeã¯åŽŸå‰‡ã¨ã—ã¦Unicodeã®block毎ã«ä¸Žãˆã‚‰ã‚Œã‚‹ã€‚ (0x92) 0xAC00.. 0xD7AF <19> Hangul Syllables (0x93) 0xD7B0.. 0xD7FF <19> Hangul Jamo Extended-B (0x98) 0xF900.. 0xFAFF <16> CJK Compatibility Ideographs - (0xFD) 0x1B000..0x1B0FF <17> Kana Supplement - (0xFE) 0x1B100..0x1B12F <17> Kana Extended-A - (0xFF) 0x1B130..0x1B16F <17> Small Kana Extension - (0x122) 0x20000..0x2A6FF <16> CJK Unified Ideographs Extension B - (0x123) 0x2A700..0x2B73F <16> CJK Unified Ideographs Extension C - (0x124) 0x2B740..0x2B81F <16> CJK Unified Ideographs Extension D - (0x125) 0x2B820..0x2CEAF <16> CJK Unified Ideographs Extension E - (0x126) 0x2CEB0..0x2F7FF <16> CJK Unified Ideographs Extension F - (0x127) 0x2F800..0x2FFFF <16> CJK Compatibility Ideographs Supplement + (0x103) 0x1B000..0x1B0FF <17> Kana Supplement + (0x104) 0x1B100..0x1B12F <17> Kana Extended-A + (0x105) 0x1B130..0x1B16F <17> Small Kana Extension + (0x129) 0x20000..0x2A6FF <16> CJK Unified Ideographs Extension B + (0x12A) 0x2A700..0x2B73F <16> CJK Unified Ideographs Extension C + (0x12B) 0x2B740..0x2B81F <16> CJK Unified Ideographs Extension D + (0x12C) 0x2B820..0x2CEAF <16> CJK Unified Ideographs Extension E + (0x12D) 0x2CEB0..0x2F7FF <16> CJK Unified Ideographs Extension F + (0x12E) 0x2F800..0x2FFFF <16> CJK Compatibility Ideographs Supplement + (0x12F) 0x30000..0x3134F <16> CJK Unified Ideographs Extension G (上記ã®æ–‡å­—ã®ç¯„囲ã¯å®Ÿè£…ã«åŸºã¥ã„ã¦ãŠã‚Šã€Blocks.txtã«è¨˜è¿°ã•ã‚Œã¦ã„る範囲より広ã„å ´åˆãŒã‚ã‚‹) â—‹Unicode blockã®ä¾‹å¤– (0x1FD) 0xAA, 0xBA, 0xC0..0xD6, 0xD8..0xF6, 0xF8..0xFF <15> Latin-1 Letters @@ -498,8 +499,6 @@ updvitype å‹•ã„ã¦ã„る。無å•é¡Œã€‚ upbibtex ã»ã¼å‹•ã„ã¦ã„る。ã—ã‹ã—ã€jalpha.bst 使用時㫠一部ã®ã‚¨ãƒ³ãƒˆãƒªãƒ¼ã§euc動作ã¨åŒç­‰ã«ãªã‚‰ãªã„å•é¡ŒãŒã‚る。 ukinsoku.tex JIS X 0213 ã«å¯¾å¿œã—ãŸã€‚ -CMap UTF8-UTF16 - TeX Live svn ã« r26540 ã§å–ã‚Šè¾¼ã¾ã‚ŒãŸã€‚ â—Ž 別ã®é…布ã«å«ã‚ãŸã‚‚ã® otfパッケージ japanese-otf-uptex ã¨ã—ã¦å…¬é–‹ã€CTANã«ç™»éŒ²ã—ãŸã€‚ (以å‰ã¯ otfbeta-uptex-x.xx.tar.xz ã¨ã—ã¦å…¬é–‹ã—ã¦ã„ãŸã€‚) @@ -512,6 +511,11 @@ convbkmk.rb dvipsã§ã®bookmark作æˆã®ãŸã‚ã®rubyスクリプト。 convbkmk ã¨ã—ã¦CTANã«ç™»éŒ²ã—ãŸã€‚ https://ctan.org/pkg/convbkmk https://github.com/t-tk/convbkmk +CMap UTF8-UTF16 + TeX Live svn ã« r26540 ã§å–ã‚Šè¾¼ã¾ã‚ŒãŸã€‚ + 一次é…布㯠http://www.t-lab.opal.ne.jp/tex/uptex.html + uptex-fonts ã®é…布ã«å«ã¾ã‚Œã¦ã„る。 + https://github.com/texjporg/uptex-fonts â—Ž 日本語TeX開発コミュニティã«ç§»ç®¡ã—ãŸã‚‚ã® upjisr-h.tfmãªã© JIS X 0208ã®ç¯„囲ã§ã¯ã»ã¼Unicodeã«ç§»æ¤å‡ºæ¥ã¦ã„ã‚‹ã¨æ€ã†ã€‚ @@ -541,20 +545,23 @@ dvipdfmx TeX Live svn ã« r24509 ã‚ãŸã‚Šã§å–ã‚Šè¾¼ã¾ã‚ŒãŸã€‚ set3ã‚‚å«ã‚ã¦å‹•ã„ã¦ã„る。 ãŸã ã—ã€set3ã§ã€ã€Œå†…部コードãŒUTF-32, CMapãŒUniXXX-UTF16ã€ã§ã‚ã‚‹ã“㨠を仮定ã—ãŸãƒãƒ¼ãƒ‰ã‚³ãƒ¼ãƒ‡ã‚£ãƒ³ã‚°ã«ãªã£ã¦ã„ã‚‹ãŠã‚Šã€æŸ”軟性ã¯ä¹ã—ã„。 - bookmark 作æˆã¯ UTF8-UCS2, UTF8-UTF16 ã® CMAP ã¾ãŸã¯ã€ + bookmark 作æˆã¯ UTF8-UCS2, UTF8-UTF16 ã® CMap ã¾ãŸã¯ã€ convbkmk.rbã®-oオプションを必è¦ã¨ã™ã‚‹ã€‚ dvi2tty TeX Live svn ã« r24634 ã‚ãŸã‚Šã§å–ã‚Šè¾¼ã¾ã‚ŒãŸã€‚ dvi2tty ã® NTT JTeX/pTeX 対応版を upTeX 対応ã«ã—ãŸã€‚ オプション -J を変更ã—〠-U, -E を新設ã—ãŸã€‚ ã•ã‚‰ã«ã€T1,TS1,OT2,T2A,T2B,T2C,X2エンコーディング対応機能㌠TeX Live ã« r39942 ã‚ãŸã‚Šã§å–ã‚Šè¾¼ã¾ã‚ŒãŸã€‚ + https://github.com/t-tk/dvi2tty mendex TeX Live r33962 ã‚ãŸã‚Šã§ã€è¦‹å‡ºã—ã‚’Unicode対応ã¨ã—ãŸã€‚ ã•ã‚‰ã« r47721 ã‚ãŸã‚Šã§è¦‹å‡ºã—ã®ãƒ‡ãƒ•ã‚©ãƒ«ãƒˆã‚¨ãƒ³ã‚³ãƒ¼ãƒ‡ã‚£ãƒ³ã‚°ã‚’UTF-8ã¨ã—ãŸã€‚ + https://github.com/texjporg/tex-jp-build upmendex mendex をベースã«æ–°è¦ã«ä½œæˆã—ãŸã€‚ mendex ã®å†…部コードをUnicode化ã—ã€ICUã«ã‚ˆã‚‹ã‚½ãƒ¼ãƒˆã€ 読ã¿ã‚’JIS X 0213ã®ã‹ãªã«å¯¾å¿œã€CJK対応ã€ãƒ©ãƒ†ãƒ³æ–‡å­—(å«éžè‹±èªž)対応〠キリル文字対応ã€ã‚®ãƒªã‚·ãƒ£æ–‡å­—対応ã¨ãªã£ã¦ã„る。 TeX Live svn ã« r39638 ã‚ãŸã‚Šã§å–ã‚Šè¾¼ã¾ã‚ŒãŸã€‚ + https://github.com/t-tk/upmendex-package upmpost TeX Live r35188 ã‚ãŸã‚Šã§upmetapostã®åå‰ã§å–ã‚Šè¾¼ã¾ã‚Œã€ ç¾åœ¨upmpostã®åå‰ã«ãªã£ã¦ã„る。 ãŸã ã—ã€ãŠãらãuptex-0.30ã®é ƒã¨åŒæ§˜ã€ diff --git a/language/japanese/uptex-base/02uptex_changelog_utf8.txt b/language/japanese/uptex-base/02uptex_changelog_utf8.txt index 672cbcdcd5..63c6b74d0c 100644 --- a/language/japanese/uptex-base/02uptex_changelog_utf8.txt +++ b/language/japanese/uptex-base/02uptex_changelog_utf8.txt @@ -1,12 +1,30 @@ ### ChangeLog / 変更履歴 -2019.09.22 +2020.02.29 Ver1.26-20200229a + samples: + Update. + 01uptex_doc_utf8.txt: + Update. + +2020.02.22 Ver1.26-20200222a + TeXLive svn r53078 base + Build/source/texk/web2c/uptexdir: + * uptex-m.ch, uppltotf.ch, uptftopl.ch, updvitype.ch, upbibtex.ch, + uptex_version.h: + Update upTeX version number. + * uptex-m.ch, kanji.c: + Update reference of Unicode blocks to + "Blocks-13.0.0.txt Date: 2019-07-10, 19:06:00 GMT [KW]". + * COPYRIGHT, COPYRIGHT.ja: + Update copyright year. Master/texmf-dist/tex/uptex/uptex-base: * ukinsoku.tex: - Revert setting of kcatcode for block - "Halfwidth and Fullwidth Forms" to work around - for bug of Ver1.24 - https://github.com/texjporg/uptex-base/issues/3 + Import from GitHub + https://github.com/texjporg/uptex-base + samples: + Update. + 00readme_uptex.txt, 01uptex_doc_utf8.txt: + Update. 2019.05.12 Ver1.25-20190512a TeXLive svn r51021 base diff --git a/language/japanese/uptex-base/LICENSE b/language/japanese/uptex-base/LICENSE index f6c6963da1..ef63725348 100644 --- a/language/japanese/uptex-base/LICENSE +++ b/language/japanese/uptex-base/LICENSE @@ -1,6 +1,6 @@ Copyright (c) 2010 ASCII MEDIA WORKS -Copyright (c) 2016-2019 Takuji Tanaka -Copyright (c) 2016-2019 Japanese TeX Development Community +Copyright (c) 2016-2020 Takuji Tanaka +Copyright (c) 2016-2020 Japanese TeX Development Community All rights reserved. Redistribution and use in source and binary forms, with or without diff --git a/language/japanese/uptex-base/Makefile b/language/japanese/uptex-base/Makefile deleted file mode 100644 index 507a3c53e7..0000000000 --- a/language/japanese/uptex-base/Makefile +++ /dev/null @@ -1,21 +0,0 @@ -KANJI = -kanji=utf8 -FONTMAP = -f ipaex.map -f uptex-ipaex.map -TEXMF = $(shell kpsewhich -var-value=TEXMFHOME) - -all: - echo Nothing to be built. - -.PHONY: install -install: - mkdir -p ${TEXMF}/doc/uptex/uptex-base - cp ./LICENSE ${TEXMF}/doc/uptex/uptex-base/ - cp ./README.md ${TEXMF}/doc/uptex/uptex-base/ - cp ./*.txt ${TEXMF}/doc/uptex/uptex-base/ - cp ./Makefile ${TEXMF}/doc/uptex/uptex-base/ - mkdir -p ${TEXMF}/doc/uptex/uptex-base/samples - cp ./samples/* ${TEXMF}/doc/uptex/uptex-base/samples/ - mkdir -p ${TEXMF}/tex/uptex/uptex-base - cp ./uptex.tex ${TEXMF}/tex/uptex/uptex-base/ - cp ./ukinsoku.tex ${TEXMF}/tex/uptex/uptex-base/ - cp ./*.ini ${TEXMF}/tex/uptex/uptex-base/ - cp ./euptex.src ${TEXMF}/tex/uptex/uptex-base/ diff --git a/language/japanese/uptex-base/README.md b/language/japanese/uptex-base/README.md index 6338b9fa79..b8168c0a58 100644 --- a/language/japanese/uptex-base/README.md +++ b/language/japanese/uptex-base/README.md @@ -17,6 +17,6 @@ the 3-clause BSD license (see [LICENSE](./LICENSE)). ## Release Date -2019-09-22 +2020-02-29 Japanese TeX Development Community diff --git a/language/japanese/uptex-base/samples/show_kcat.tex b/language/japanese/uptex-base/samples/show_kcat.tex index f68bfffa39..618bc40830 100644 --- a/language/japanese/uptex-base/samples/show_kcat.tex +++ b/language/japanese/uptex-base/samples/show_kcat.tex @@ -33,6 +33,7 @@ \message{\kc{ð«  }{2B820}}% U+2B820 CJK Unified Ideographs Extension E \message{\kc{𬺰}{2CEB0}}% U+2CEB0 CJK Unified Ideographs Extension F \message{\kc{丽}{2F800}}% U+2F800 CJK Compatibility Ideographs Supplement +\message{\kc{ð°€€}{30000}}% U+30000 CJK Unified Ideographs Extension G \message{kana:} \message{\kc{ã‚}{3042}}% U+3042 Hiragana @@ -238,8 +239,10 @@ \message{\kco{10C80}}% Old Hungarian \message{\kco{10D00}}% Hanifi Rohingya \message{\kco{10E60}}% Rumi Numeral Symbols +\message{\kco{10E80}}% Yezidi \message{\kco{10F00}}% Old Sogdian \message{\kco{10F30}}% Sogdian +\message{\kco{10FB0}}% Chorasmian \message{\kco{10FE0}}% Elymaic \message{\kco{11000}}% Brahmi \message{\kco{11080}}% Kaithi @@ -261,6 +264,7 @@ \message{\kco{11700}}% Ahom \message{\kco{11800}}% Dogra \message{\kco{118A0}}% Warang Citi +\message{\kco{11900}}% Dives Akuru \message{\kco{119A0}}% Nandinagari \message{\kco{11A00}}% Zanabazar Square \message{\kco{11A50}}% Soyombo @@ -270,6 +274,7 @@ \message{\kco{11D00}}% Masaram Gondi \message{\kco{11D60}}% Gunjala Gondi \message{\kco{11EE0}}% Makasar +\message{\kco{11FB0}}% Lisu Supplement \message{\kco{11FC0}}% Tamil Supplement \message{\kco{12000}}% Cuneiform \message{\kco{12400}}% Cuneiform Numbers and Punctuation @@ -286,6 +291,8 @@ \message{\kco{16FE0}}% Ideographic Symbols and Punctuation \message{\kco{17000}}% Tangut \message{\kco{18800}}% Tangut Components +\message{\kco{18B00}}% Khitan Small Script +\message{\kco{18D00}}% Tangut Supplement \message{\kco{1B170}}% Nushu \message{\kco{1BC00}}% Duployan \message{\kco{1BCA0}}% Shorthand Format Controls @@ -320,9 +327,59 @@ \message{\kco{1F900}}% Supplemental Symbols and Pictographs \message{\kco{1FA00}}% Chess Symbols \message{\kco{1FA70}}% Symbols and Pictographs Extended-A +\message{\kco{1FB00}}% Symbols for Legacy Computing \message{\kco{E0000}}% Tags \message{\kco{E0100}}% Variation Selectors Supplement \message{\kco{F0000}}% Supplementary Private Use Area-A \message{\kco{100000}}% Supplementary Private Use Area-B + +%%% block separation +\message{check block separation default:} +\message{\KC{§}{00A7}}% U+00A7 Latin-1 Supplement +\message{\KC{À}{00C0}}% U+00C0 "Latin-1 Letters" in Latin-1 Supplement +\message{\KC{ï¼}{FF10}}% U+FF10 "Fullwidth ASCII variants" in Halfwidth and Fullwidth Forms +\message{\KC{ï¼ }{FF20}}% U+FF20 Halfwidth and Fullwidth Forms +\message{\KC{ヲ}{FF66}}% U+FF66 "Halfwidth Katakana variants" in Halfwidth and Fullwidth Forms + + +\message{1st:} +\kcatcode"00A7=18% U+00A7+§ Latin-1 Supplement, symbols +\kcatcode"00C0=18% U+00C0:À Latin-1 Supplement, Latin-1 letters +\kcatcode"FF10=18% U+FF10:ï¼ "Fullwidth ASCII variants" in Halfwidth and Fullwidth Forms +\kcatcode"FF20=18% U+FF20:ï¼  Halfwidth and Fullwidth Forms +\kcatcode"FF66=18% U+FF66:ヲ "Halfwidth Katakana variants" in Halfwidth and Fullwidth Forms +\message{\KC{§}{00A7}}% U+00A7 Latin-1 Supplement +\message{\KC{À}{00C0}}% U+00C0 "Latin-1 Letters" in Latin-1 Supplement +\message{\KC{ï¼}{FF10}}% U+FF10 "Fullwidth ASCII variants" in Halfwidth and Fullwidth Forms +\message{\KC{ï¼ }{FF20}}% U+FF20 Halfwidth and Fullwidth Forms +\message{\KC{ヲ}{FF66}}% U+FF66 "Halfwidth Katakana variants" in Halfwidth and Fullwidth Forms + + +\message{2nd:} +\kcatcode"00A7=17% U+00A7+§ Latin-1 Supplement, symbols +\kcatcode"00C0=18% U+00C0:À Latin-1 Supplement, Latin-1 letters +\kcatcode"FF10=16% U+FF10:ï¼ "Fullwidth ASCII variants" in Halfwidth and Fullwidth Forms +\kcatcode"FF20=17% U+FF20:ï¼  Halfwidth and Fullwidth Forms +\kcatcode"FF66=18% U+FF66:ヲ "Halfwidth Katakana variants" in Halfwidth and Fullwidth Forms +\message{\KC{§}{00A7}}% U+00A7 Latin-1 Supplement +\message{\KC{À}{00C0}}% U+00C0 "Latin-1 Letters" in Latin-1 Supplement +\message{\KC{ï¼}{FF10}}% U+FF10 "Fullwidth ASCII variants" in Halfwidth and Fullwidth Forms +\message{\KC{ï¼ }{FF20}}% U+FF20 Halfwidth and Fullwidth Forms +\message{\KC{ヲ}{FF66}}% U+FF66 "Halfwidth Katakana variants" in Halfwidth and Fullwidth Forms + + +\message{3rd:} +\kcatcode"00A7=18% U+00A7+§ Latin-1 Supplement, symbols +\kcatcode"00C0=17% U+00C0:À Latin-1 Supplement, Latin-1 letters +\kcatcode"FF10=19% U+FF10:ï¼ "Fullwidth ASCII variants" in Halfwidth and Fullwidth Forms +\kcatcode"FF20=18% U+FF20:ï¼  Halfwidth and Fullwidth Forms +\kcatcode"FF66=17% U+FF66:ヲ "Halfwidth Katakana variants" in Halfwidth and Fullwidth Forms +\message{\KC{§}{00A7}}% U+00A7 Latin-1 Supplement +\message{\KC{À}{00C0}}% U+00C0 "Latin-1 Letters" in Latin-1 Supplement +\message{\KC{ï¼}{FF10}}% U+FF10 "Fullwidth ASCII variants" in Halfwidth and Fullwidth Forms +\message{\KC{ï¼ }{FF20}}% U+FF20 Halfwidth and Fullwidth Forms +\message{\KC{ヲ}{FF66}}% U+FF66 "Halfwidth Katakana variants" in Halfwidth and Fullwidth Forms + + \end diff --git a/language/japanese/uptex-base/samples/testrun.bat b/language/japanese/uptex-base/samples/testrun.bat index ca3d43f07a..2d68b95c76 100755 --- a/language/japanese/uptex-base/samples/testrun.bat +++ b/language/japanese/uptex-base/samples/testrun.bat @@ -1,135 +1,135 @@ -del *.dvi *.aux *.log *.ps *.pdf *.1 *.mpx - -rem misc -for %%f in (misc set3) ^ -do ( ^ -uplatex %%f-check-utf8 && ^ -uplatex "\def\withhyperref{dvipdfmx}\input" %%f-check-utf8.tex && ^ -uplatex "\def\withhyperref{dvipdfmx}\input" %%f-check-utf8.tex && ^ -updvitype -kanji=uptex %%f-check-utf8.dvi > %%f-check-utf8.pdvitype && ^ -updvipdfmx %%f-check-utf8 && ^ -uplatex "\def\withhyperref{dvips}\input" %%f-check-utf8.tex && ^ -updvips %%f-check-utf8 && ^ -uplatex %%f-check-utf8 ) -for %%f in (misc) ^ -do ( ^ -uplatex %%f-check-v-utf8 && ^ -uplatex "\def\withhyperref{dvipdfmx}\input" %%f-check-v-utf8.tex && ^ -uplatex "\def\withhyperref{dvipdfmx}\input" %%f-check-v-utf8.tex && ^ -updvitype -kanji=uptex %%f-check-v-utf8.dvi > %%f-check-v-utf8.pdvitype && ^ -updvipdfmx -l %%f-check-v-utf8 && ^ -uplatex "\def\withhyperref{dvips}\input" %%f-check-v-utf8.tex && ^ -updvips -t landscape %%f-check-v-utf8 && ^ -uplatex %%f-check-v-utf8 ) - -rem kinsoku -uplatex kinsoku-chk-utf8 -dvipdfmx kinsoku-chk-utf8 -updvips kinsoku-chk-utf8 - -rem widow -platex widow -move widow.dvi widow-platex.dvi -dvipdfmx widow-platex.dvi -uplatex widow -move widow.dvi widow-u-uptex.dvi -dvipdfmx widow-u-uptex.dvi - -rem uptex -uptex sangoku-uptex -dvipdfmx sangoku-uptex -updvips sangoku-uptex - -rem uplatex -uplatex sangoku-uplatex -dvipdfmx sangoku-uplatex -updvips sangoku-uplatex - -rem aozora -for %%c in (ujarticle ujreport ujbook utarticle utreport utbook) ^ -do ( ^ -uplatex aozora-%%c-utf8 && ^ -dvipdfmx aozora-%%c-utf8 && ^ -updvips aozora-%%c-utf8 ) - -rem adobe -for %%c in (jp kr gb cns) ^ -do ( ^ -uptex adobe-%%c-utf8 && ^ -updvipdfmx adobe-%%c-utf8 && ^ -updvips adobe-%%c-utf8 ) - -rem jbib -uplatex jbib2-utf8.tex -upjbibtex -kanji=uptex --kanji-internal=uptex jbib2-utf8 -uplatex jbib2-utf8.tex -uplatex jbib2-utf8.tex - -rem jmpost -for %%f in (area jstr) ^ -do ( ^ -upjmpost -kanji=uptex -tex=uplatex %%f-uptex.mp && ^ -uplatex %%f-uptex-incl.tex && ^ -updvips %%f-uptex-incl.dvi && ^ -updvipdfmx %%f-uptex-incl.dvi ) - -rem updvi2tty -platex -kanji=jis simple-jis.tex -move simple-jis.dvi simple-jis-platex.dvi -for %%f in (j e s u) ^ -do ( ^ -updvi2tty -w 62 -o simple-jis-platex-%%f.dvi2tty -E %%f simple-jis-platex.dvi ) -uplatex simple-u-jis.tex -move simple-u-jis.dvi simple-u-jis-uptex.dvi -for %%f in (j e s u) ^ -do ( ^ -updvi2tty -w 62 -o simple-u-jis-uptex-%%f.dvi2tty -E %%f simple-u-jis-uptex.dvi ) - - -rem -rem following samples require the utf package -rem - -rem utf -uplatex utfsmpl-uplatex -updvipdfmx utfsmpl-uplatex -updvips utfsmpl-uplatex - -rem -rem following samples require the otf package -rem - -rem otf -uplatex otfsmpl-uplatex -updvipdfmx otfsmpl-uplatex -updvips otfsmpl-uplatex - -rem adobe -for %%c in (jp kr gb cns) ^ -do ( ^ -uplatex "\def\adobe{%%c}\input" adobe-cid && ^ -move adobe-cid.dvi adobe-%%c-mc-cid.dvi && ^ -updvipdfmx adobe-%%c-mc-cid && ^ -updvips adobe-%%c-mc-cid ) -for %%c in (jp kr cns) ^ -do ( ^ -uplatex "\def\adobe{%%c}\def\family{gt}\input" adobe-cid && ^ -move adobe-cid.dvi adobe-%%c-gt-cid.dvi && ^ -updvipdfmx adobe-%%c-gt-cid && ^ -updvips adobe-%%c-gt-cid ) - -rem uotftest -for %%o in (default deluxe expert bold noreplace) ^ -do ( ^ -uplatex "\def\option{%%o}\def\class{ujarticle}\input" uotftest-utf8.tex && ^ -move uotftest-utf8.dvi uotftest-%%o-h-uplatex.dvi && ^ -updvipdfmx uotftest-%%o-h-uplatex.dvi && ^ -uplatex "\def\option{%%o}\def\class{utarticle}\input" uotftest-utf8.tex && ^ -move uotftest-utf8.dvi uotftest-%%o-v-uplatex.dvi && ^ -updvipdfmx uotftest-%%o-v-uplatex.dvi && ^ -platex "\def\option{%%o}\def\class{jarticle}\input" uotftest.tex && ^ -move uotftest.dvi uotftest-%%o-h-platex.dvi && ^ -dvipdfmx uotftest-%%o-h-platex.dvi && ^ -platex "\def\option{%%o}\def\class{tarticle}\input" uotftest.tex && ^ -move uotftest.dvi uotftest-%%o-v-platex.dvi && ^ -dvipdfmx uotftest-%%o-v-platex.dvi ) +del *.dvi *.aux *.log *.ps *.pdf *.1 *.mpx + +rem misc +for %%f in (misc set3) ^ +do ( ^ +uplatex %%f-check-utf8 && ^ +uplatex "\def\withhyperref{dvipdfmx}\input" %%f-check-utf8.tex && ^ +uplatex "\def\withhyperref{dvipdfmx}\input" %%f-check-utf8.tex && ^ +updvitype -kanji=uptex %%f-check-utf8.dvi > %%f-check-utf8.pdvitype && ^ +updvipdfmx %%f-check-utf8 && ^ +uplatex "\def\withhyperref{dvips}\input" %%f-check-utf8.tex && ^ +updvips %%f-check-utf8 && ^ +uplatex %%f-check-utf8 ) +for %%f in (misc) ^ +do ( ^ +uplatex %%f-check-v-utf8 && ^ +uplatex "\def\withhyperref{dvipdfmx}\input" %%f-check-v-utf8.tex && ^ +uplatex "\def\withhyperref{dvipdfmx}\input" %%f-check-v-utf8.tex && ^ +updvitype -kanji=uptex %%f-check-v-utf8.dvi > %%f-check-v-utf8.pdvitype && ^ +updvipdfmx -l %%f-check-v-utf8 && ^ +uplatex "\def\withhyperref{dvips}\input" %%f-check-v-utf8.tex && ^ +updvips -t landscape %%f-check-v-utf8 && ^ +uplatex %%f-check-v-utf8 ) + +rem kinsoku +uplatex kinsoku-chk-utf8 +dvipdfmx kinsoku-chk-utf8 +updvips kinsoku-chk-utf8 + +rem widow +platex widow +move widow.dvi widow-platex.dvi +dvipdfmx widow-platex.dvi +uplatex widow +move widow.dvi widow-u-uptex.dvi +dvipdfmx widow-u-uptex.dvi + +rem uptex +uptex sangoku-uptex +dvipdfmx sangoku-uptex +updvips sangoku-uptex + +rem uplatex +uplatex sangoku-uplatex +dvipdfmx sangoku-uplatex +updvips sangoku-uplatex + +rem aozora +for %%c in (ujarticle ujreport ujbook utarticle utreport utbook) ^ +do ( ^ +uplatex aozora-%%c-utf8 && ^ +dvipdfmx aozora-%%c-utf8 && ^ +updvips aozora-%%c-utf8 ) + +rem adobe +for %%c in (jp kr gb cns) ^ +do ( ^ +uptex adobe-%%c-utf8 && ^ +updvipdfmx adobe-%%c-utf8 && ^ +updvips adobe-%%c-utf8 ) + +rem jbib +uplatex jbib2-utf8.tex +upjbibtex -kanji=uptex --kanji-internal=uptex jbib2-utf8 +uplatex jbib2-utf8.tex +uplatex jbib2-utf8.tex + +rem jmpost +for %%f in (area jstr) ^ +do ( ^ +upjmpost -kanji=uptex -tex=uplatex %%f-uptex.mp && ^ +uplatex %%f-uptex-incl.tex && ^ +updvips %%f-uptex-incl.dvi && ^ +updvipdfmx %%f-uptex-incl.dvi ) + +rem updvi2tty +platex -kanji=jis simple-jis.tex +move simple-jis.dvi simple-jis-platex.dvi +for %%f in (j e s u) ^ +do ( ^ +updvi2tty -w 62 -o simple-jis-platex-%%f.dvi2tty -E %%f simple-jis-platex.dvi ) +uplatex simple-u-jis.tex +move simple-u-jis.dvi simple-u-jis-uptex.dvi +for %%f in (j e s u) ^ +do ( ^ +updvi2tty -w 62 -o simple-u-jis-uptex-%%f.dvi2tty -E %%f simple-u-jis-uptex.dvi ) + + +rem +rem following samples require the utf package +rem + +rem utf +uplatex utfsmpl-uplatex +updvipdfmx utfsmpl-uplatex +updvips utfsmpl-uplatex + +rem +rem following samples require the otf package +rem + +rem otf +uplatex otfsmpl-uplatex +updvipdfmx otfsmpl-uplatex +updvips otfsmpl-uplatex + +rem adobe +for %%c in (jp kr gb cns) ^ +do ( ^ +uplatex "\def\adobe{%%c}\input" adobe-cid && ^ +move adobe-cid.dvi adobe-%%c-mc-cid.dvi && ^ +updvipdfmx adobe-%%c-mc-cid && ^ +updvips adobe-%%c-mc-cid ) +for %%c in (jp kr cns) ^ +do ( ^ +uplatex "\def\adobe{%%c}\def\family{gt}\input" adobe-cid && ^ +move adobe-cid.dvi adobe-%%c-gt-cid.dvi && ^ +updvipdfmx adobe-%%c-gt-cid && ^ +updvips adobe-%%c-gt-cid ) + +rem uotftest +for %%o in (default deluxe expert bold noreplace) ^ +do ( ^ +uplatex "\def\option{%%o}\def\class{ujarticle}\input" uotftest-utf8.tex && ^ +move uotftest-utf8.dvi uotftest-%%o-h-uplatex.dvi && ^ +updvipdfmx uotftest-%%o-h-uplatex.dvi && ^ +uplatex "\def\option{%%o}\def\class{utarticle}\input" uotftest-utf8.tex && ^ +move uotftest-utf8.dvi uotftest-%%o-v-uplatex.dvi && ^ +updvipdfmx uotftest-%%o-v-uplatex.dvi && ^ +platex "\def\option{%%o}\def\class{jarticle}\input" uotftest.tex && ^ +move uotftest.dvi uotftest-%%o-h-platex.dvi && ^ +dvipdfmx uotftest-%%o-h-platex.dvi && ^ +platex "\def\option{%%o}\def\class{tarticle}\input" uotftest.tex && ^ +move uotftest.dvi uotftest-%%o-v-platex.dvi && ^ +dvipdfmx uotftest-%%o-v-platex.dvi ) -- cgit v1.2.3