1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
39
40
41
42
43
44
45
46
47
48
49
50
51
52
53
54
55
56
57
58
59
60
61
62
63
64
65
66
67
68
69
70
71
72
73
74
75
76
77
78
79
80
81
82
83
84
85
86
87
88
89
90
91
92
93
94
95
96
97
98
99
100
101
102
103
104
105
106
107
108
109
110
111
112
113
114
115
116
117
118
119
120
121
122
123
124
125
126
127
128
129
130
131
132
133
134
135
136
137
138
139
140
141
142
143
144
145
146
147
148
149
150
151
152
153
154
155
156
|
<!DOCTYPE HTML PUBLIC "-//W3C//DTD HTML 3.2 Final//EN">
<html>
<head>
<META http-equiv="content-type" content="text/html; charset=ISO-8859-2">
<title lang="pl"> Sprawa przekodowywania wej¶cia </title>
</head>
<body lang="pl" link="#808080" vlink="#bfbfbf">
<center>
<table bgcolor="white" cellpadding="20"> </table>
<p><br></p>
<table width="90%" border="0" cellpadding="30" cellspacing=0 bgcolor="white">
<tr><td><center><font size="+3">
O¶miobitowe wprowadzanie<br>
polskich znaków w TeXu<br>
(w implementacjach opartych na web2c) </font>
</center></td></tr>
<tr><td><p>
Istnieje kilka sposobów kodowania polskich znaków w
dokumencie TeXowym. Najbardziej komfortowa jest notacja
,,naturalna'' o¶miobitowa, tzn. zastosowanie jakiej¶
strony kodowej (np. cp852, cp1250, ISO 8859-2 (Latin 2),
itp.). S± dwa zasadnicze sposoby nauczenia TeXa
przetwarzania tak zapisanego tekstu. Jeden polega na
zastosowaniu znaków aktywnych. Drugi wymaga wsparcia ze
strony samej implementacji TeXa polegaj±cego na
przekodowywaniu znaków z wej¶cia na odpowiednie
pozycje znaków w stosowanych fontach.
Ka¿dy z wymienionych sposobów ma swoje wady i
zalety.</p>
<p>Przekodowywanie znaków narodowych przez samego TeXa
jest dostêpne od dawna w emTeXu i sbTeXu (MS DOG),
natomiast w popularnych dystrybucjach UNIXowych
opartych na web2c pojawi³o siê dos³ownie przed chwil±
(je¶li pamiêtaæ, ¿e chwila w TeXu mo¿e trwaæ pó³
roku; w porównaniu z wiekiem TeXa jest to czas
zaniedbywalny). W zwi±zku z tym przekodowanie sta³o siê
dostêpne równie¿ w fpTeXu --- opartej na web2c
dystrybucji TeXa dla Windows 95/98/NT. A poniewa¿
MikTeX (te¿ Windows) nie zamierza byæ w tej kwestii w
tyle, mo¿na mieæ nadziejê, ¿e wkrótce praktycznie ka¿dy
licz±cy siê TeX bêdzie móg³ przekodowywaæ.</p>
<p><font size="-1">Implementacja przekodowywania, pod
tajemnicz± nazw± TCX zosta³a wprowadzona do dystrybucji
web2c ju¿ jaki¶ czas temu. Wkrótce jednak przeciwnicy
tego rozwi±zania (zwi±zani z ekip± LaTeXa 2e) wymogli
jego unieczynnienie w ¼ród³ach (<code>#ifdef 0</code> z
podejrzanym komentarzem). Praca z o¶miobitowym tekstem
jest dla polskich u¿ytkowników czym¶ zupe³nie
podstawowym. Dlatego te¿ niewielka ekipa polskich
u¿ytkowników (Staszek Wawrykiewicz, W³odek Bzyl i ni¿ej
podpisany) podjê³a próbê przeforsowania wprowadzenia na
nowo do web2c procedur przekodowuj±cych.
Przedsiêwziêcie to powiod³o siê (g³ównie dziêki zapa³owi
i energii Staszka).</font></p>
<p>Warto tu jeszcze zaznaczyæ, ¿e wprowadzenie
przekodowywania nie narusza licencji TeXa. Jak wiadomo,
jedyn± osob± w³adn± aby wprowadzaæ zmiany w TeXu jest
Don Knuth. Nie dotyczy to wszak¿e drobnych szczegó³ów
zwi±zanych ze specyfik± danego systemu operacyjnego
(¶rodowiska obliczeniowego), w którym dana implementacja
TeXa ma dzia³aæ. W istocie TeX ma mechanizm zamiany
dowolnego (jednobajtowego) kodu u¿ywanego w dokumentach
na reprezentacjê opart± na ASCII i u¿ywan± w pliku .dvi
(reprezentacja ta odzwierciedla uk³ad znaków w fontach).
Mechanizm przekodowywania zosta³ przewidziany z my¶l± o
komputerach pracuj±cych w EBCDICu (który jest istotnie
odmienny od ASCII). Wierzymy, ¿e ¶rodowisko
obliczeniowe pos³uguj±ce siê kodem (na przyk³ad) ISO
8859-2 te¿ jest ¶rodowiskiem ,,nie-ASCII'' i ¿e w
zwi±zku z tym pracuj±ca w nim implementacja TeXa mo¿e
mieæ w odpowiednie tablice w programie w³o¿one
odwzorowanie ISO 8859-2 w uk³ad fontów. W zwi±zku z
mnogo¶ci± stosowanych ,,stron kodowych'' zaszycie
odwzorowania w kompilat TeXa jest niepraktyczne.
Dlatego web2c oferuje rewelacyjne uproszczenie: tabelê
opisuj±c± przekodowanie mo¿na zadaæ przy pomocy opcji
polecenia uruchamiaj±cego TeXa.</p>
</td></tr>
<tr bgcolor="black"><td><font color="white">
<p><strong>Jak siê tego u¿ywa?</strong></p>
<p> W nowej wersji web2c (7.3) i w konsekwencji teTeXa
(1.0) TeX reaguje na dodatkow± opcjê
<code>--translate-file</code> wskazuj±c± plik z tablic±
konwersji. Opcji tej u¿ywa siê przy normalnym wywo³aniu
TeXa (a nie jak w emTeXu przy generowaniu formatu).<br>
Poka¼na kolekcja tablic konwersji jest dystrybuowana z
samym web2c (i w konsekwencji powinna byæ dostêpna w
dystrybucjach pochodnych). S± tu w szczególno¶ci
tablice przekodowuj±ce do uk³adu fontów PL (tylko
polskie znaki): il2-pl.tcx -- dla ISO 8859-2 (Latin-2),
cp1250-pl.tcx -- Code Page 1250 (Windows), cp852-pl.tcx
-- tzw. IBM Latin 2, maz-pl.tcx -- Mazowia, a jak¿e,
oraz amiga-pl.tcx -- dla kodu AmigaPL.</p>
<p>Przyk³ad: pod Linuksem poni¿sze wywo³anie przetwarza
dokument MeXowy z polskimi znakami w notacji
,,naturalnej'':</p>
<pre>mex -translate-file=il2-pl mojdokument.tex</pre>
<p>Istnieje alternatywny sposób informowania TeXa o
sposobie kodowania danego pliku. Web2c ,,od zawsze''
reagowa³o na pierwsz± liniê pliku zaczynaj±c± siê w taki
sposób</p>
<pre>%&mex</pre>
<p>za³adowaniem odpowiedniego formatu (tutaj MeXa). W
nowej wersji ten mechanizm zosta³ rozszerzony.
Nastêpuj±ca linia</p>
<pre>%&mex --translate-file=il2-pl</pre>
<p>oprócz formatu zadaje równie¿ kodowanie pliku. Mo¿na
równie¿ pomin±æ nazwê formatu:</p>
<pre>%& --translate-file=il2-pl</pre>
<p>U¿ycie opcji <code>--translate-file</code> w pierwszej
linii pliku sprawia, ¿e dokument zawiera jawn± informacjê
o kodzie, który zosta³ w nim u¿yty. Dziêki temu nie
trzeba zgadywaæ, w jakim kodzie kolega przys³a³ nam plik
(zmora emTeXa). Dziêki za¶ obecno¶ci kompletu plików .tcx
w dystrybucji wystarczy uruchomiæ na dokumencie TeXa bez
¿adnych dodatkowych opcji, aby uzyskaæ poprawny
wydruk.</p>
<p>TeX poszukuje pliku opisuj±cego przekodowanie w
bie¿±cym katalogu oraz w miejscu w³a¶ciwym dla plików
<tt>.pool</tt> czyli domy¶lnie
<code>texmf/web2c</code>.</p>
<p>Opcji -translate-file mo¿na u¿ywaæ równie¿ w wywo³aniu
initexa, ale bêdzie ona w mocy tylko w czasie jego
pracy. Po co to komu? Mo¿na wyobraziæ sobie format
oparty na MeXu definiuj±cy makra o nazwach zawieraj±cych
polskie znaki. W pliku takiego formatu nazwy makr
by³yby zakodowane w notacji wewnêtrznej. A zatem format
by³by nadal niezale¿ny od notacji wej¶ciowej! Przy
przetwarzaniu dokumentu mo¿naby nadal wskazaæ dowoln±
stronê kodow± dla wej¶cia i dawa³aby ona dostêp do makr
o polskich nazwach. Jak siê zdaje web2c jest pierwsz±
na ¶wiecie implementacjê TeXa o takich
mo¿liwo¶ciach.</p> </font></td></tr>
<tr>
<td>
<table width="100%" cellpadding=0 border=0 cellspacing=0><tr><td>
<a href="mailto:wolinski@mimuw.edu.pl">Marcin Woliñski</a>
</td>
</tr></table>
</table>
</center>
</body>
</html>
|