KickJava   Java API By Example, From Geeks To Geeks.

Java > Open Source Codes > com > teamkonzept > lib > TKLaTeXConverter


1 package com.teamkonzept.lib;
2
3 /**
4  * Konvertierungsklasse fuer LaTeX-Codierung
5  * @author $Author: alex $
6  * @version $Revision: 1.1 $
7 */

8 public class TKLaTeXConverter extends TKConverter {
9
10     public final static String JavaDoc CONV_ID = "LT";
11     public final static String JavaDoc CONV_NAME = "LATEX";
12     private final static int MAX_BYTES_CHAR = 21;
13     
14     public String JavaDoc getName()
15     {
16         return CONV_NAME;
17     }
18
19     public int getMaxBytesPerChar()
20     {
21         return MAX_BYTES_CHAR;
22     }
23
24     public int minCharSize(int byteCount)
25     {
26         return byteCount;
27     }
28
29     public final static String JavaDoc[] LATEX_TRANSLATION = {
30         
31         // Quote special chars ///////////////////////////////////////////////////////////
32

33         /* 0 */ "?"
34         /* 1 */ , "?"
35         /* 2 */ , "?"
36         /* 3 */ , "?"
37         /* 4 */ , "?"
38         /* 5 */ , "?"
39         /* 6 */ , "?"
40         /* 7 */ , "?"
41         /* 8 */ , "?"
42         /* 9 */ , (char)( 9)+"" // Tabulator
43
/* 10 */ , (char)( 10)+"" // Line feed
44
/* 11 */ , "?"
45         /* 12 */ , "?"
46         /* 13 */ , (char)( 13)+"" // Carriage return
47
/* 14 */ , "?"
48         /* 15 */ , "?"
49         /* 16 */ , "?"
50         /* 17 */ , "?"
51         /* 18 */ , "?"
52         /* 19 */ , "?"
53         /* 20 */ , "?"
54         /* 21 */ , "?"
55         /* 22 */ , "?"
56         /* 23 */ , "?"
57         /* 24 */ , "?"
58         /* 25 */ , "?"
59         /* 26 */ , "?"
60         /* 27 */ , "?"
61         /* 28 */ , "?"
62         /* 29 */ , "?"
63         /* 30 */ , "?"
64         /* 31 */ , "?"
65         /* 32 */ , " "
66         /* 33 ! */ , "!"
67         /* 34 " */ , "{}\"{}" // Quotation mark'
68
/* 35 # */ , "\\#{}" // Number sign'
69
/* 36 $ */ , "\\${}" // Dollar sign'
70
/* 37 % */ , "\\%{}" // Percent sign'
71
/* 38 & */ , "\\&{}" // Ampersand'
72
/* 39 ' */ , "{}'{}" // Apostrophe'
73
/* 40 ( */ , "("
74         /* 41 ) */ , ")"
75         /* 42 * */ , "{}*{}" // Star'
76
/* 43 + */ , "+"
77         /* 44 , */ , "{},{}" // ,'
78
/* 45 - */ , "{}-{}" // Hyphen'
79
/* 46 . */ , "."
80         /* 47 / */ , "/"
81         /* 48 0 */ , "0"
82         /* 49 1 */ , "1"
83         /* 50 2 */ , "2"
84         /* 51 3 */ , "3"
85         /* 52 4 */ , "4"
86         /* 53 5 */ , "5"
87         /* 54 6 */ , "6"
88         /* 55 7 */ , "7"
89         /* 56 8 */ , "8"
90         /* 57 9 */ , "9"
91         /* 58 : */ , ":"
92         /* 59 ; */ , ";"
93         /* 60 < */ , "{\\tt{}<}" // <'
94
/* 61 = */ , "{}={}" // ='
95
/* 62 > */ , "{\\tt{}>}" // >'
96
/* 63 ? */ , "?"
97         /* 64 @ */ , "{}@{}" // Commercial at'
98
/* 65 A */ , "A"
99         /* 66 B */ , "B"
100         /* 67 C */ , "C"
101         /* 68 D */ , "D"
102         /* 69 E */ , "E"
103         /* 70 F */ , "F"
104         /* 71 G */ , "G"
105         /* 72 H */ , "H"
106         /* 73 I */ , "I"
107         /* 74 J */ , "J"
108         /* 75 K */ , "K"
109         /* 76 L */ , "L"
110         /* 77 M */ , "M"
111         /* 78 N */ , "N"
112         /* 79 O */ , "O"
113         /* 80 P */ , "P"
114         /* 81 Q */ , "Q"
115         /* 82 R */ , "R"
116         /* 83 S */ , "S"
117         /* 84 T */ , "T"
118         /* 85 U */ , "U"
119         /* 86 V */ , "V"
120         /* 87 W */ , "W"
121         /* 88 X */ , "X"
122         /* 89 Y */ , "Y"
123         /* 90 Z */ , "Z"
124         /* 91 [ */ , "{}[{}" // Left square bracket'
125
/* 92 \ */ , "\\textbackslash{}" // Reverse solidus (backslash)'
126
/* 93 ] */ , "{}]{}" // Right square bracket'
127
/* 94 ^ */ , "\\textasciicircum{}" // Caret, Circum'
128
/* 95 _ */ , "\\_{}" // Horizontal bar (underscore)'
129
/* 96 ` */ , "\\`{}" // Backquote (= Grave accent)'
130
/* 97 a */ , "a"
131         /* 98 b */ , "b"
132         /* 99 c */ , "c"
133         /* 100 d */ , "d"
134         /* 101 e */ , "e"
135         /* 102 f */ , "f"
136         /* 103 g */ , "g"
137         /* 104 h */ , "h"
138         /* 105 i */ , "i"
139         /* 106 j */ , "j"
140         /* 107 k */ , "k"
141         /* 108 l */ , "l"
142         /* 109 m */ , "m"
143         /* 110 n */ , "n"
144         /* 111 o */ , "o"
145         /* 112 p */ , "p"
146         /* 113 q */ , "q"
147         /* 114 r */ , "r"
148         /* 115 s */ , "s"
149         /* 116 t */ , "t"
150         /* 117 u */ , "u"
151         /* 118 v */ , "v"
152         /* 119 w */ , "w"
153         /* 120 x */ , "x"
154         /* 121 y */ , "y"
155         /* 122 z */ , "z"
156         /* 123 { */ , "\\{" // Left curly brace'
157
/* 124 | */ , "|"
158         /* 125 } */ , "\\}" // Right curly brace'
159
/* 126 ~ */ , "\\textasciitilde{}" // Tilde'
160
/* 127 */ , "?" // <del>
161

162         // non iso 8859-1 : cp1252 aka winansi (ansinew input encoding) ///////////////
163

164         /* 128 */ , "?" // Euro sign
165
/* 129 */ , "?" //
166
/* 130 */ , "\\textquotesinglbase{}" // Beg.half.germ.cit.'
167
/* 131 */ , (char)(131)+"" // Florin
168
/* 132 */ , "\\textquotedblbase{}" // Beg.germ.cit.'
169
/* 133 */ , (char)(133)+"" // Ellipsis
170
/* 134 */ , (char)(134)+"" // Dag
171
/* 135 */ , (char)(135)+"" // Double dag
172
/* 136 */ , (char)(136)+"" // Caret accent
173
/* 137 */ , (char)(137)+"" // Promille
174
/* 138 */ , (char)(138)+"" // Capital S, hachek accent
175
/* 139 */ , (char)(139)+"" // Beg.half.french.cit
176
/* 140 */ , (char)(140)+"" // Capital OE ligature
177
/* 141 */ , "?" //
178
/* 142 */ , "\\v{Z}" // Capital Z, hachek accent
179
/* 143 */ , "?" //
180
/* 144 */ , "?" //
181
/* 145 */ , (char)(145)+"" // Beg.half.engl/End.half.germ.cit.
182
/* 146 */ , (char)(146)+"" // End.half.engl.cit.
183
/* 147 */ , (char)(147)+"" // Beg.engl.cit., End.germ.cit.
184
/* 148 */ , (char)(148)+"" // End.engl.cit.
185
/* 149 */ , (char)(149)+"" // Bullet
186
/* 150 */ , (char)(150)+"" // (endash,Bindestrich)
187
/* 151 */ , (char)(151)+"" // (emdash,Gedankenstrich)
188
/* 152 */ , (char)(152)+"" // Tilde accent
189
/* 153 */ , (char)(153)+"" // Trademark
190
/* 154 */ , (char)(154)+"" // Small s, hachek accent
191
/* 155 */ , (char)(155)+"" // End.half.french.cit
192
/* 156 */ , (char)(156)+"" // Small oe ligature
193
/* 157 */ , "?" //
194
/* 158 */ , "\\v{z}" // Small z, hachek accent
195
/* 159 */ , (char)(159)+"" // Capital Y, dieresis or umlaut mark
196

197         // end of non iso 8859-1 //////////////////////////////////////////////////////
198

199         /* 160 */ , "" // non-breaking space / soft hyphen
200
/* 161 ¡ */ , "¡" // Inverted exclamation
201
/* 162 ¢ */ , "¢" // Cent sign
202
/* 163 £ */ , "£" // Pound sterling
203
/* 164 ¤ */ , "¤" // General currency sign
204
/* 165 ¥ */ , "¥" // Yen sign
205
/* 166 ¦ */ , "¦" // Broken vertical bar
206
/* 167 § */ , "\\textsection{}" // Section sign
207
/* 168 ¨ */ , "¨" // Umlaut (dieresis)
208
/* 169 © */ , "©" // Copyright
209
/* 170 ª */ , "ª" // Feminine ordinal
210
/* 171 « */ , "«" // Guillemotleft
211
/* 172 ¬ */ , "\\textlogicalnot{}" //
212
/* 173 ­ */ , "­"
213         /* 174 ® */ , "®" // Registered trademark
214
/* 175 ¯ */ , "¯" // Macron accent
215
/* 176 ° */ , "°" // Degree sign
216
/* 177 ± */ , "\\textplusminus{}" //
217
/* 178 ² */ , "\\textsupertwo{}" //
218
/* 179 ³ */ , "\\textsuperthree{}" //
219
/* 180 ´ */ , "´" // Quote (= Acute accent)
220
/* 181 µ */ , "\\textmu{}" //
221
/* 182 ¶ */ , "¶" // Paragraph sign
222
/* 183 · */ , "·" // Middle dot
223
/* 184 ¸ */ , "¸" // Cedilla
224
/* 185 ¹ */ , "\\textsuperone{}" //
225
/* 186 º */ , "º"
226         /* 187 » */ , "»"
227         /* 188 ¼ */ , "¼"
228         /* 189 ½ */ , "½"
229         /* 190 ¾ */ , "¾"
230         /* 191 ¿ */ , "¿" // Inverted question mark
231
/* 192 À */ , "À" // Capital A, grave accent
232
/* 193 Á */ , "Á" // Capital A, acute accent
233
/* 194 Â */ , "Â" // Capital A, circumflex accent
234
/* 195 Ã */ , "Ã" // Capital A, tilde
235
/* 196 Ä */ , "Ä" // Capital A, dieresis or umlaut mark
236
/* 197 Å */ , "Å" // Capital A, ring
237
/* 198 Æ */ , "Æ"
238         /* 199 Ç */ , "Ç" // Capital C, cedilla
239
/* 200 È */ , "È" // Capital E, grave accent
240
/* 201 É */ , "É" // Capital E, acute accent
241
/* 202 Ê */ , "Ê" // Capital E, circumflex accent
242
/* 203 Ë */ , "Ë" // Capital E, dieresis or umlaut mark
243
/* 204 Ì */ , "Ì" // Capital I, grave accent
244
/* 205 Í */ , "Í" // Capital I, acute accent
245
/* 206 Î */ , "Î" // Capital I, circumflex accent
246
/* 207 Ï */ , "Ï" // Capital I, dieresis or umlaut mark
247
/* 208 Ð */ , "Ð"
248         /* 209 Ñ */ , "Ñ"
249         /* 210 Ò */ , "Ò"
250         /* 211 Ó */ , "Ó"
251         /* 212 Ô */ , "Ô"
252         /* 213 Õ */ , "Õ"
253         /* 214 Ö */ , "Ö"
254         /* 215 × */ , "\\textmultiply{}" //
255
/* 216 Ø */ , "Ø"
256         /* 217 Ù */ , "Ù" // Capital U, grave accent
257
/* 218 Ú */ , "Ú" // Capital U, acute accent
258
/* 219 Û */ , "Û" // Capital U, circumflex accent
259
/* 220 Ü */ , "Ü" // Capital U, dieresis or umlaut mark
260
/* 221 Ý */ , "Ý" // Capital Y, acute accent
261
/* 222 Þ */ , "Þ" // Capital islandic thorn
262
/* 223 ß */ , "ß" // Small sharp s, German (sz ligature)
263
/* 224 à */ , "à" // Small a, grave accent
264
/* 225 á */ , "á" // Small a, acute accent
265
/* 226 â */ , "â" // Small a, circumflex accent
266
/* 227 ã */ , "ã" // Small a, tilde
267
/* 228 ä */ , "ä" // Small a, dieresis or umlaut mark
268
/* 229 å */ , "å" // Small a, ring
269
/* 230 æ */ , "æ"
270         /* 231 ç */ , "ç" // Small c, cedilla
271
/* 232 è */ , "è" // Small e, grave accent
272
/* 233 é */ , "é" // Small e, acute accent
273
/* 234 ê */ , "ê" // Small e, circumflex accent
274
/* 235 ë */ , "ë" // Small e, dieresis or umlaut mark
275
/* 236 ì */ , "ì" // Small i, grave accent
276
/* 237 í */ , "í" // Small i, acute accent
277
/* 238 î */ , "î" // Small i, circumflex accent
278
/* 239 ï */ , "ï" // Small i, dieresis or umlaut mark
279
/* 240 ð */ , "ð"
280         /* 241 ñ */ , "ñ" // Small n, tilde
281
/* 242 ò */ , "ò" // Small o, grave accent
282
/* 243 ó */ , "ó" // Small o, acute accent
283
/* 244 ô */ , "ô" // Small o, circumflex accent
284
/* 245 õ */ , "õ" // Small o, tilde
285
/* 246 ö */ , "ö" // Small o, dieresis or umlaut mark
286
/* 247 ÷ */ , "\\textdivide{}" //
287
/* 248 ø */ , "ø"
288         /* 249 ù */ , "ù" // Small u, grave accent
289
/* 250 ú */ , "ú" // Small u, acute accent
290
/* 251 û */ , "û" // Small u, circumflex accent
291
/* 252 ü */ , "ü" // Small u, dieresis or umlaut mark
292
/* 253 ý */ , "ý" // Small y, acute accent
293
/* 254 þ */ , "þ" // Small islandic thorn
294
/* 255 ÿ */ , "ÿ" // Small y, dieresis or umlaut mark
295
};
296
297
298     public int charsToBytes(char src[], byte dst[], int srcBegin, int length, int dstBegin)
299     {
300         String JavaDoc back = encodeLaTeX(src, srcBegin, length);
301         back.getBytes(0, back.length(), dst, dstBegin);
302         return back.length();
303     }
304
305     public int bytesToChars(byte src[], char dst[], int srcBegin, int length, int dstBegin)
306     {
307         String JavaDoc srcIn = new String JavaDoc(src);
308         String JavaDoc back = encodeLaTeX(srcIn.toCharArray(), srcBegin, length);
309         back.getChars(0, back.length(), dst, dstBegin);
310         return back.length();
311     }
312
313     public static String JavaDoc encodeLaTeX(char[] in, int start, int length)
314     {
315         if (in == null)
316             return null;
317                 
318         StringBuffer JavaDoc buf = new StringBuffer JavaDoc();
319         int trLimit = LATEX_TRANSLATION.length;
320         int end = start+length;
321
322         for (int i = start; i < end; i++)
323         {
324             if ( in[i] < trLimit)
325                 buf.append( LATEX_TRANSLATION[ in[i] ]);
326             else
327                 buf.append( '?');
328         }
329         
330         return buf.toString();
331     }
332
333 }
334
335   
336
337
Popular Tags