/
cweb Source Code  for   T cweb Source Code  for   T

cweb Source Code for T - PowerPoint Presentation

TravelingSoulmate
TravelingSoulmate . @TravelingSoulmate
Follow
342 views
Uploaded On 2022-08-02

cweb Source Code for T - PPT Presentation

E X Why How and What Martin Ruckert August 2021 Fakultät für Informatik und Mathematk Why Why do we want cweb Source Code of T E X Toolchain Modification Debugging ID: 933046

web tex patch cweb tex web cweb patch ktex files code info char change file etex source define ctex

Share:

Link:

Embed:

Download Presentation from below link

Download Presentation The PPT/PDF document "cweb Source Code for T" is the property of its rightful owner. Permission is granted to download and print the materials on this web site for personal, non-commercial use only, and to display it on your personal computer provided you do not modify the materials and that you retain all copyright notices contained in the materials. By downloading content from our website, you accept the terms of this agreement.


Presentation Transcript

Slide1

cweb Source Code for TEX Why, How, and WhatMartin Ruckert, August 2021

Fakultät für Informatik undMathematk

Slide2

Why? Why do we want cweb Source Code of TEX ?Toolchain Modification

DebuggingEducationExperiments

2

Example:

ktex.w

tex.web

+ etex.ch

+ 32bit pointer type

+

kpathsea

library

=

ktex.w

It is not the purest implementation of

T

E

X

.

It is a useful basis.

It is still close to the original

T

E

X

.

DEMO

Slide3

Why? Why do we want cweb Source Code of TEX ?Toolchain

ModificationDebuggingEducationExperiments

3

ktex.w

ktex.tex

ktex.c

ktex.dvi

ktex

ktex.fmt

klatex.fmt

cweave

ctangle

gcc

tex

*

latex.ltx

bplain.tex

Slide4

Why? Why do we want cweb Source Code of TEX ?Toolchain Modification

DebuggingEducationExperiments

4

ktex.w

ktex.tex

ktex.c

ktex.dvi

ktex

ktex.fmt

klatex.fmt

cweave

ctangle

gcc

tex

*

latex.ltx

bplain.tex

Slide5

Why? Why do we want cweb Source Code of TEX ?Toolchain Modification

DebuggingEducationExperiments

5

Example:

HintView

, the HINT viewer.

Backend:

literate

cweb programs

User Interface:

C (Windows)

Java (Android)

Rendering:

OpenGL

Programming Environment

MS Visual Studio (Windows)

Android Studio (Android)

Slide6

Why? Why do we want cweb Source Code of TEX ?Toolchain Modification

DebuggingEducationExperiments

6

lig_node

:

ffi

f

f

i

lig_node

:

ffi

f

f

i

disc_node

replace_count = 1pre_break

= f-post_break = fi

ignore_node

:

info

= 1list

=

ignore_node

:

info

= 0list

= null

Slide7

Why? Why do we want cweb Source Code of TEX ?Toolchain Modification

DebuggingEducationExperiments

7

Slide8

How ?Start with tex.webApply web change files, e.g. ε-TEX Apply patch filesConvert web file to cweb file run web2wapply patch fileApply cweb change files, e.g. for kTE

X For TEX related projects

Extract code and Link

8

Slide9

How ?Start with tex.webApply web change files, e.g. ε-TEX Apply patch files

Convert web file to cweb file run web2wapply patch fileApply cweb change files, e.g. for kT

E

X

For

T

E

X

related projects

Extract code and Link9

The basis:

ctex.w

Close to Don Knuth's original T

EXPasses trip testNo command lineNo kpathsearch

tex.web

web2w

tex.w

ctex.patch

ctex.w

systematic

changesindividual

changes

Slide10

How ?Start with tex.webApply web change files, e.g. ε-TEXApply patch filesConvert web file to cweb file run web2wapply patch files

Apply cweb change files, e.g. for kTEX

For

T

E

X

related projects

Extract code and Link

10

The extended basis:

ectex.w

etex.web

web2w

etex.w

ectex.patch

ctex.patch

ectex.w

systematic

changes

individual

changes

tex.web

etex.ch

Extended features of

ε-

T

E

X

Slide11

How ?Start with tex.webApply web change files, e.g. ε-TEXApply patch filesConvert web file to cweb file run web2wapply patch filesApply cweb change files, e.g. for k

TEX

For

T

E

X

related projects

Extract code and Link

11

Large constants, e.g. 64

b

it memory words

Extended features of ε-TEX

etex.web

web2w

etex64.w

ectex.patch

ctex.patch

ectex64.w

systematic changes

individual

changes

tex.web

etex.ch

etex64.web

tex64.patch

enlarging constants

Slide12

How ?Start with tex.webApply web change files, e.g. ε-TEX Apply patch filesConvert web file to cweb file run web2wapply patch filesApply cweb change files, e.g. for k

TEX For T

E

X

related projects

Extract code and Link

12

T

E

X

Live compatible

T

EX engine

etex.web

web2w

etex64.w

ectex.patch

ctex.patch

ectex64.wsystematic

changesindividual

changes

tex.web

etex.ch

etex64.web

tex64.patch

enlarging constants

ktex.w

k

tex.ch

Slide13

What?systematic changes: Macrosweb2w translation of WEB macros to cweb macrosWEB: @d define(#)==if global then

geq_define(#)@+else

eq_define

(#)

...

@<

Assignments

@>=

set_font

:

define(cur_font_loc, data, cur_chr);cweb:@d define(A, B, C)

if (global) geq_define(A, B, C);@+

else eq_define(A, B, C

)13

Slide14

What?systematic changes: Macros14

New in web2w

version

1.0

WEB:

@d

char_info_end

(#)==#].

qqqq

@d

char_info

(#)==font_info[

char_base[#]+char_info_end

... cur_h

:=cur_h+char_width(f)(char_info

(f)(c));cweb:@d

char_info(A, B) font_info[

char_base[A]+B].qqqq

...

cur_h=cur_h+char_width

(f,

char_info(f, c));

Slide15

What?individual changes: nonlocal goto @<Error hand...@>=

static

void

jump_out

(void)

- {@+

goto

end_of_TEX

;

+ {@+ close_files_and_terminate(); exit(0); } 15

Slide16

What?individual changes: cwebmac.tex has no \L @<

Types...@>=

typedef

int

scaled; /*this type is used for scaled integers*/

-

typedef

int32_t nonnegative_integer; /*$0\L x<2^{31}$*/+ typedef int32_t nonnegative_integer; /*$0\le x<2^{31}$*/ typedef

int8_t small_number; /*this type is self-explanatory*/

16

Slide17

What?individual changes: single character strings @<Put each...@>=

- primitive('-', discretionary, 1);

+ primitive

("-", discretionary, 1);

@!@:

Single-character primitives -}{\quad\.{\\-}@>

17

Slide18

What?individual changes: use / as directory separator- @

d TEX_area "

TeXinputs

:"

+ @

d

TEX_area

"

TeXinputs

/"

@.TeXinputs@>- @d TEX_font_area "TeXfonts:"+ @d TEX_font_area "

TeXfonts/" @.

TeXfonts@>

18