EncTeX pro MikTeX

Tomas Mraz mraz at kpsoft.cz
Tue Dec 8 10:16:27 CET 1998


TeXu zdar,

>> >>Mam dotaz, jestli se uz nekdo pokousel aplikovat encTeX do MikTeXu.
>> >> Jak velky by to byl problem? (VC++ 5.0 mam k dispozici).
>> >Aplikujte enctex.ch na tex.web a je to. :-)


Pred nedavnem jsem se ptal, jestli nekdo zkusil aplikovat encTeX do MiKTeXu.
Protoze to nikdo nezkusil, rozhodl jsem se o to pokusit sam. Vzhledem k
tomu, ze o formatu Web jsem toho mnoho nevedel, chvili mi trvalo, nez jsem
pochopil co je nutne udelat. Nakonec se mi to sice podarilo (a nebylo to ani
moc tezke), jenze bohuzel vysledek se nedostavil.

MiKTeX je postaven na vlastnim prekladaci z Pascalu do C (C4P).
Problem je totiz v tom, ze MiKTeX prevadi pascalsky typ char na signed char
v C, coz by nebylo az tak na zavadu, ale horsi je, ze C4P nepreklada zcela
korektne konverzi datovych typu. Navic si myslim, ze ani v encTeXu neni
prace s hodnotami xchr a xord (pri jejich zmene a vyvolani jejich hodnoty
pomoci primitivu) zcela korektni.

Konkretne se jedna o tyto pasaze:

@x [26.414] l.8358 - encTeX: accessing the xord/xchr
if m=math_code_base then scanned_result(ho(math_code(cur_val)))(int_val)
@y
if m=xord_code_base then scanned_result(xord[cur_val])(int_val)
%melo by byt spise: xord[chr(cur_val)]
else if m=xchr_code_base then scanned_result(xchr[cur_val])(int_val)
%melo by byt spise ord(xchr[cur_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)
@z

@x [49.1232] l.22980 - encTeX: setting a new value to xchr/xord
  if p<math_code_base then define(p,data,cur_val)
@y
  if p<256 then xord[p]:=cur_val
%melo by byt spise: xord[chr(p)]
  else if p<512 then xchr[p-256]:=cur_val
%melo by byt spise: xchr[p-256]:=chr(cur_val)
  else if p<768 then xprn[p-512]:=cur_val
  else if p<math_code_base then define(p,data,cur_val)
@z

Pak za predpokladu (ktery ovsem MiKTeX nesplnuje), ze chr prevadi cisla
0-255 na znaky a ord zpet ze znaku na cisla 0-255 by vse fungovalo. Bohuzel
C4P v MiKTeXu prevadi zcela nepochopitelne chr(x) na (int)(x) misto
spravneho prevodu (char)(x). A podobne i ord(x) prevadi na (x), kde by
spravne melo byt pro typ char prevod na (unsigned char)(x).

Tomas Mraz





More information about the csTeX mailing list