summaryrefslogtreecommitdiff
path: root/info/tex-virtual-academy-pl/poczatki/spw.html
blob: 2f3e4cc186167b0bd0d448b9bef31220630a6ef1 (plain)
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&nbsp;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&nbsp;emTeXu i sbTeXu (MS DOG),
              natomiast w&nbsp;popularnych dystrybucjach UNIXowych
              opartych na web2c pojawi³o siê dos³ownie przed chwil±
              (je¶li pamiêtaæ, ¿e chwila w&nbsp;TeXu mo¿e trwaæ pó³
              roku; w&nbsp;porównaniu z wiekiem TeXa jest to czas
              zaniedbywalny).  W zwi±zku z tym przekodowanie sta³o siê
              dostêpne równie¿ w&nbsp;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>