]> git.saurik.com Git - wxWidgets.git/blob - utils/tex2rtf/src/tex2any.h
icon support moved to wxBitmap, allowing for fully transparent usage
[wxWidgets.git] / utils / tex2rtf / src / tex2any.h
1 /////////////////////////////////////////////////////////////////////////////
2 // Name: tex2any.h
3 // Purpose: Latex conversion header
4 // Author: Julian Smart
5 // Modified by:
6 // Created: 7.9.93
7 // RCS-ID: $Id$
8 // Copyright: (c) Julian Smart
9 // Licence: wxWindows licence
10 /////////////////////////////////////////////////////////////////////////////
11
12 #include <stdio.h>
13 #include "wx/wx.h"
14 #include "wx/utils.h"
15 #include "wx/list.h"
16 #include "wx/hash.h"
17 #include "wxhlpblk.h"
18
19 /*
20 * Conversion modes
21 *
22 */
23
24 #define TEX_RTF 1
25 #define TEX_XLP 2
26 #define TEX_HTML 3
27
28 /*
29 * We have a list of macro definitions which we must define
30 * in advance to enable the parsing to recognize macros.
31 */
32
33 #define FORBID_OK 0
34 #define FORBID_WARN 1
35 #define FORBID_ABSOLUTELY 2
36
37
38 #ifdef __WXMSW__
39 const int MAX_LINE_BUFFER_SIZE = 600;
40 #else
41 const int MAX_LINE_BUFFER_SIZE = 11000;
42 #endif
43
44 class TexMacroDef: public wxObject
45 {
46 public:
47 int no_args;
48 char *name;
49 bool ignore;
50 int forbidden;
51 int macroId;
52
53 TexMacroDef(int the_id, char *the_name, int n, bool ig, bool forbidLevel = FORBID_OK);
54 ~TexMacroDef(void);
55 };
56
57 #define CHUNK_TYPE_MACRO 1
58 #define CHUNK_TYPE_ARG 2
59 #define CHUNK_TYPE_STRING 3
60
61 /*
62 We have nested lists to represent the Tex document.
63 Each element of a list of chunks can be one of:
64 - a plain string
65 - a macro with/without arguments. Arguments are lists of TexChunks.
66
67 Example (\toplevel is implicit but made explicit here):
68
69 AddMacroDef(ltMYMAT, "mymat", 2);
70
71 \toplevel{The cat sat on the \mymat{very coarse and {\it cheap}}{mat}}.
72
73 Parsed as:
74
75 TexChunk: type = macro, name = toplevel, no_args = 1
76 Children:
77
78 TexChunk: type = argument
79
80 Children:
81 TexChunk: type = string, value = "The cat sat on the "
82 TexChunk: type = macro, name = mymat, no_args = 2
83
84 Children:
85 TexChunk: type = argument
86
87 Children:
88 TexChunk: type = string, value = "very coarse and "
89 TexChunk: type = macro, name = it, no_args = 1
90
91 Children:
92 TexChunk: type = argument
93
94 Children:
95 TexChunk: type = string, value = "cheap"
96
97 TexChunk: type = argument
98
99 Children:
100 TexChunk: type = string, value = mat
101 */
102
103 class TexChunk
104 {
105 public:
106 int type;
107 // char *name;
108 TexMacroDef *def;
109 char *value;
110 int macroId;
111 int no_args;
112 int argn;
113 bool optional; // Is an optional argument
114
115 wxList children;
116 TexChunk(int the_type, TexMacroDef *the_def = NULL);
117 TexChunk(TexChunk& toCopy);
118 virtual ~TexChunk(void);
119 };
120
121 // Represents a topic, used for generating a table of contents file (.cnt).
122 // Also for storing keywords found in a topic, a list of which is then inserted
123 // into the topic in the next pass.
124 class TexTopic: public wxObject
125 {
126 public:
127 // This flag is set to indicate that the topic has children.
128 // If this is the case, we know to insert a 'book' icon at this level,
129 // not just a 'page' icon. We don't want to have to open a book only
130 // to find there's only one page in it. We might force a book to be used if
131 // a top-level topic has no children (?)
132 bool hasChildren;
133 char *filename;
134 wxStringList *keywords;
135 TexTopic(char *f = NULL);
136 ~TexTopic(void);
137 };
138 extern wxHashTable TopicTable;
139 void AddKeyWordForTopic(char *topic, char *entry, char *filename = NULL);
140 void ClearKeyWordTable(void);
141
142 extern TexChunk *TopLevel;
143 extern wxHashTable MacroDefs;
144 extern wxStringList IgnorableInputFiles; // Ignorable \input files, e.g. psbox.tex
145
146 bool read_a_line(char *buf);
147 bool TexLoadFile(char *filename);
148 int ParseArg(TexChunk *thisArg, wxList& children, char *buffer, int pos,
149 char *environment = NULL, bool parseArgToBrace = TRUE, TexChunk *customMacroArgs = NULL);
150 int ParseMacroBody(char *macro_name, TexChunk *parent, int no_args,
151 char *buffer, int pos, char *environment = NULL, bool parseArgToBrace = TRUE, TexChunk *customMacroArgs = NULL);
152 void TraverseDocument(void);
153 void TraverseFromChunk(TexChunk *chunk, wxNode *thisNode = NULL, bool childrenOnly = FALSE);
154 #define TraverseChildrenFromChunk(arg) TraverseFromChunk(arg, NULL, TRUE)
155 void SetCurrentOutput(FILE *fd);
156 void SetCurrentOutputs(FILE *fd1, FILE *fd2);
157 extern FILE *CurrentOutput1;
158 extern FILE *CurrentOutput2;
159 void AddMacroDef(int the_id, char *name, int n, bool ignore = FALSE, bool forbidden = FALSE);
160 void TexInitialize(int bufSize);
161 void TexCleanUp(void);
162 void TexOutput(char *s, bool ordinaryText = FALSE);
163 char *GetArgData(TexChunk *chunk);
164 char *GetArgData(void); // Get the string for the current argument
165 int GetNoArgs(void); // Get the number of arguments for the current macro
166 TexChunk *GetArgChunk(void); // Get the chunk for the current argument
167 TexChunk *GetTopLevelChunk(void); // Get the chunk for the top level
168 TexChunk *GetNextChunk(void); // Look ahead to the next chunk
169 bool IsArgOptional(void); // Is this argument an optional argument?
170 void DefineDefaultMacros(void); // Optional set of default macros
171 int GetCurrentColumn(void); // number of characters on current line
172 char *ConvertCase(char *s); // Convert case, according to upperCaseNames setting.
173 extern wxPathList TexPathList; // Path list, can be used for file searching.
174
175 // Define a variable value from the .ini file
176 char *RegisterSetting(char *settingName, char *settingValue, bool interactive = TRUE);
177
178 // Major document styles
179 #define LATEX_REPORT 1
180 #define LATEX_ARTICLE 2
181 #define LATEX_LETTER 3
182 #define LATEX_BOOK 4
183 #define LATEX_SLIDES 5
184
185 extern TexChunk *DocumentTitle;
186 extern TexChunk *DocumentAuthor;
187 extern TexChunk *DocumentDate;
188 extern int DocumentStyle;
189 extern int MinorDocumentStyle;
190 extern char *BibliographyStyleString;
191 extern char *DocumentStyleString;
192 extern char *MinorDocumentStyleString;
193
194 extern int normalFont;
195 extern int smallFont;
196 extern int tinyFont;
197 extern int largeFont1;
198 extern int LargeFont2;
199 extern int LARGEFont3;
200 extern int hugeFont1;
201 extern int HugeFont2;
202 extern int HUGEFont3;
203
204 /*
205 * USER-ADJUSTABLE SETTINGS
206 *
207 */
208
209 // Section font sizes
210 extern int chapterFont;
211 extern int sectionFont;
212 extern int subsectionFont;
213 extern int titleFont;
214 extern int authorFont;
215 extern bool winHelp; // Output in Windows Help format if TRUE, linear otherwise
216 extern bool isInteractive;
217 extern bool runTwice;
218 extern int convertMode;
219 extern bool stopRunning;
220 extern int mirrorMargins;
221 extern bool headerRule;
222 extern bool footerRule;
223 extern int labelIndentTab; // From left indent to item label (points)
224 extern int itemIndentTab; // From left indent to item (points)
225 extern bool useUpButton;
226 extern int htmlBrowseButtons;
227 extern bool useHeadingStyles; // Insert \s1, s2 etc.
228 extern bool useWord; // Insert Word table of contents, etc. etc.
229 extern bool indexSubsections; // put subsections in index
230 extern bool compatibilityMode;
231 extern bool generateHPJ; // Generate WinHelp HPJ file
232 extern char *winHelpTitle; // Title for Windows Help file
233 extern int defaultTableColumnWidth;
234 extern char *bitmapMethod;
235 extern bool truncateFilenames; // Truncate for DOS
236 extern int winHelpVersion; // Version e.g. 4 for Win95
237 extern bool winHelpContents; // Generate .cnt file
238 extern bool htmlIndex; // Generate .htx HTML index file
239 extern bool htmlFrameContents; // Use frames for HTML contents page
240 extern int contentsDepth; // Depth of contents for linear RTF files
241 extern bool upperCaseNames; // Filenames; default is lower case
242 extern char *backgroundImageString; // HTML background image
243 extern char *backgroundColourString; // HTML background colour
244 extern char *textColourString; // HTML text colour
245 extern char *linkColourString; // HTML link colour
246 extern char *followedLinkColourString; // HTML followed link colour
247 extern bool combineSubSections; // Stop splitting files below section
248 extern bool htmlWorkshopFiles; // generate HTML Help Workshop project files
249
250 // Names to help with internationalisation
251 extern char *ContentsNameString;
252 extern char *AbstractNameString;
253 extern char *GlossaryNameString;
254 extern char *ReferencesNameString;
255 extern char *FiguresNameString;
256 extern char *TablesNameString;
257 extern char *FigureNameString;
258 extern char *TableNameString;
259 extern char *IndexNameString;
260 extern char *ChapterNameString;
261 extern char *SectionNameString;
262 extern char *SubsectionNameString;
263 extern char *SubsubsectionNameString;
264 extern char *UpNameString;
265
266 /*
267 * HTML button identifiers: what kind of browse buttons
268 * are placed in HTML files, if any.
269 *
270 */
271
272 #define HTML_BUTTONS_NONE 0
273 #define HTML_BUTTONS_BITMAP 1
274 #define HTML_BUTTONS_TEXT 2
275
276 /*
277 * Section numbering
278 *
279 */
280
281 extern int chapterNo;
282 extern int sectionNo;
283 extern int subsectionNo;
284 extern int subsubsectionNo;
285 extern int figureNo;
286 extern int tableNo;
287
288 extern int ParSkip;
289 extern int ParIndent;
290
291 extern bool isSync;
292
293 // Set by client and by Tex2Any
294 extern TexChunk *currentSection;
295
296 // Header/footers/pagestyle
297 extern TexChunk * LeftHeaderOdd;
298 extern TexChunk * LeftFooterOdd;
299 extern TexChunk * CentreHeaderOdd;
300 extern TexChunk * CentreFooterOdd;
301 extern TexChunk * RightHeaderOdd;
302 extern TexChunk * RightFooterOdd;
303 extern TexChunk * LeftHeaderEven;
304 extern TexChunk * LeftFooterEven;
305 extern TexChunk * CentreHeaderEven;
306 extern TexChunk * CentreFooterEven;
307 extern TexChunk * RightHeaderEven;
308 extern TexChunk * RightFooterEven;
309 extern char * PageStyle;
310
311 // Repeat the currentSection, either real (Chapter) or simulated (References)
312 extern void OutputCurrentSection(void);
313 extern void OutputCurrentSectionToString(char *buf);
314 extern void OutputChunkToString(TexChunk *chunk, char *buf);
315
316 extern char *fakeCurrentSection;
317
318 // Called by Tex2Any to simulate a section
319 extern void FakeCurrentSection(char *fakeSection, bool addToContents = TRUE);
320
321 /*
322 * Local to Tex2Any library
323 *
324 */
325
326 extern char *currentArgData;
327 extern bool haveArgData; // If TRUE, we're simulating the data.
328 void StartSimulateArgument(char *data);
329 void EndSimulateArgument(void);
330
331 /*
332 * Client-defined
333 *
334 */
335
336 // Called on start/end of macro examination
337 void OnMacro(int macroId, int no_args, bool start);
338
339 // Called on start/end of argument examination.
340 // Return TRUE at the start of an argument to traverse
341 // (output) the argument.
342 bool OnArgument(int macroId, int arg_no, bool start);
343
344 // Default: library-defined
345 void DefaultOnMacro(int macroId, int no_args, bool start);
346
347 // Default: library-defined
348 bool DefaultOnArgument(int macroId, int arg_no, bool start);
349
350 // Called on error
351 void OnError(char *msg);
352
353 // Called for information
354 void OnInform(char *msg);
355
356 // Special yield wrapper
357 void Tex2RTFYield(bool force = FALSE);
358
359 /*
360 * Useful utilities
361 *
362 */
363
364 // Look for \label macro, use this ref name if found or
365 // make up a topic name otherwise.
366 char *FindTopicName(TexChunk *chunk);
367 // Force the current topic to be this (e.g. force 'references' label).
368 void ForceTopicName(char *name);
369 void ResetTopicCounter(void);
370
371 // Parse unit eg. 14, 12pt, 34cm and return value in points.
372 int ParseUnitArgument(char *unitArg);
373
374 // Set small, large, normal etc. point sizes for reference size
375 void SetFontSizes(int pointSize);
376
377 /*
378 * Strip off any extension (dot something) from end of file,
379 * IF one exists. Inserts zero into buffer.
380 *
381 */
382
383 void StripExtension(char *buffer);
384
385 /*
386 * Reference structure
387 *
388 */
389
390 class TexRef: public wxObject
391 {
392 public:
393 char *refLabel; // Reference label
394 char *refFile; // Reference filename (can be NULL)
395 char *sectionNumber; // Section or figure number (as a string)
396 char *sectionName; // name e.g. 'section'
397 TexRef(char *label, char *file, char *section, char *sectionN = NULL);
398 ~TexRef(void);
399 };
400
401 /*
402 * Add a reference
403 *
404 */
405
406 void AddTexRef(char *name, char *file = NULL, char *sectionName = NULL,
407 int chapter = 0, int section = 0, int subsection = 0, int subsubsection = 0);
408
409 /*
410 * Read and write reference file (.ref), to resolve refs for second pass.
411 *
412 */
413 void WriteTexReferences(char *filename);
414 void ReadTexReferences(char *filename);
415
416 /*
417 * Bibliography stuff
418 *
419 */
420
421 class BibEntry: public wxObject
422 {
423 public:
424 char *key;
425
426 /*
427 * book, inbook, article, phdthesis, inproceedings, techreport
428 */
429 char *type;
430
431 /*
432 * Possible fields
433 *
434 */
435 char *editor;
436 char *title;
437 char *booktitle;
438 char *author;
439 char *journal;
440 char *volume;
441 char *number;
442 char *year;
443 char *month;
444 char *pages;
445 char *chapter;
446 char *publisher;
447 char *address;
448 char *institution;
449 char *organization;
450 char *comment;
451
452 inline BibEntry(void)
453 {
454 key = NULL;
455 type = NULL;
456 editor = NULL;
457 title = NULL;
458 booktitle = NULL;
459 author = NULL;
460 journal = NULL;
461 volume = NULL;
462 number = NULL;
463 chapter = NULL;
464 year = NULL;
465 month = NULL;
466 pages = NULL;
467 publisher = NULL;
468 address = NULL;
469 institution = NULL;
470 organization = NULL;
471 comment = NULL;
472 }
473 };
474
475 extern wxList BibList;
476 extern wxStringList CitationList;
477
478 bool ReadBib(char *filename);
479 void OutputBib(void);
480 void ResolveBibReferences(void);
481 void AddCitation(char *citeKey);
482 TexRef *FindReference(char *key);
483
484 /*
485 * Ability to customize, or at least suppress unknown macro errors
486 *
487 */
488
489 extern wxList CustomMacroList;
490
491 #define CUSTOM_MACRO_IGNORE 0
492 #define CUSTOM_MACRO_OUTPUT 1
493 #define CUSTOM_MACRO_MARK 2
494
495 class CustomMacro: public wxObject
496 {
497 public:
498 char *macroName;
499 char *macroBody;
500 int noArgs;
501 inline CustomMacro(char *name, int args, char *body)
502 {
503 noArgs = args;
504 macroName = copystring(name);
505 if (body)
506 macroBody = copystring(body);
507 else
508 macroBody = NULL;
509 }
510 ~CustomMacro();
511 };
512
513 bool ReadCustomMacros(char *filename);
514 void ShowCustomMacros(void);
515 CustomMacro *FindCustomMacro(char *name);
516 char *ParseMultifieldString(char *s, int *pos);
517
518 /*
519 * Colour table stuff
520 *
521 */
522
523 class ColourTableEntry: public wxObject
524 {
525 public:
526 char *name;
527 unsigned int red;
528 unsigned int green;
529 unsigned int blue;
530
531 ColourTableEntry(char *theName, unsigned int r, unsigned int g, unsigned int b);
532 ~ColourTableEntry(void);
533 };
534
535 extern wxList ColourTable;
536 extern void AddColour(char *theName, unsigned int r, unsigned int g, unsigned int b);
537 extern int FindColourPosition(char *theName);
538 // Converts e.g. "red" -> "#FF0000"
539 extern bool FindColourHTMLString(char *theName, char *buf);
540 extern void InitialiseColourTable(void);
541
542 #define ltABSTRACT 1
543 #define ltADDCONTENTSLINE 2
544 #define ltADDTOCOUNTER 3
545 #define ltALPH1 4
546 #define ltALPH2 5
547 #define ltAPPENDIX 6
548 #define ltARABIC 7
549 #define ltARRAY 8
550 #define ltAUTHOR 9
551
552 #define ltBACKSLASH 30
553 #define ltBASELINESKIP 31
554 #define ltBF 32
555 #define ltBIBITEM 33
556 #define ltBIBLIOGRAPHYSTYLE 34
557 #define ltBIBLIOGRAPHY 35
558 #define ltBOXIT 36
559 #define ltBACKSLASHRAW 37
560 #define ltBACKGROUND 38
561 #define ltBACKGROUNDCOLOUR 39
562 #define ltBACKGROUNDIMAGE 40
563 #define ltBRCLEAR 41
564
565 #define ltCAPTIONSTAR 50
566 #define ltCAPTION 51
567 #define ltCDOTS 52
568 #define ltCENTERLINE 53
569 #define ltCENTERING 54
570 #define ltCENTER 55
571 #define ltCEXTRACT 56
572 #define ltCHAPTERHEADING 57
573 #define ltCHAPTERSTAR 58
574 #define ltCHAPTER 59
575 #define ltCINSERT 60
576 #define ltCITE 61
577 #define ltCLASS 62
578 #define ltCLEARDOUBLEPAGE 63
579 #define ltCLEARPAGE 64
580 #define ltCLINE 65
581 #define ltCLIPSFUNC 66
582 #define ltCOLUMNSEP 67
583 #define ltCOMMENT 68
584 #define ltCOPYRIGHT 69
585 #define ltCPARAM 70
586
587 #define ltCHEAD 71
588 #define ltCFOOT 72
589
590 #define ltCHAPTERHEADINGSTAR 73
591
592 #define ltDATE 90
593 #define ltDESCRIPTION 91
594 #define ltDESTRUCT 92
595 #define ltDOCUMENTSTYLE 93
596 #define ltDOCUMENT 94
597 #define ltDOUBLESPACE 95
598 #define ltDEFINECOLOUR 96
599 #define ltDEFINECOLOR 97
600
601 #define ltEM 120
602 #define ltENUMERATE 121
603 #define ltEQUATION 122
604 #define ltEVENSIDEMARGIN 123
605
606 #define ltFBOX 150
607 #define ltFIGURE 151
608 #define ltFLUSHLEFT 152
609 #define ltFLUSHRIGHT 153
610 #define ltFOOTHEIGHT 154
611 #define ltFOOTNOTE 155
612 #define ltFOOTSKIP 156
613 #define ltFRAMEBOX 157
614 #define ltFUNCTIONSECTION 158
615 #define ltFUNC 159
616 #define ltFIGURESTAR 160
617 #define ltFOOTNOTESIZE 161
618 #define ltFOOTNOTEPOPUP 162
619 #define ltFANCYPLAIN 163
620 #define ltFCOL 164
621 #define ltBCOL 165
622 #define ltFOLLOWEDLINKCOLOUR 166
623
624 #define ltGLOSSARY 180
625 #define ltGLOSS 181
626
627 #define ltHEADHEIGHT 200
628 #define ltHELPGLOSSARY 201
629 #define ltHELPIGNORE 202
630 #define ltHELPONLY 203
631 #define ltHELPINPUT 204
632 #define ltHELPFONTFAMILY 205
633 #define ltHELPFONTSIZE 206
634 #define ltHELPREFN 207
635 #define ltHELPREF 208
636 #define ltHFILL 209
637 #define ltHLINE 210
638 #define ltHRULE 211
639 #define ltHSPACESTAR 212
640 #define ltHSPACE 213
641 #define ltHSKIPSTAR 214
642 #define ltHSKIP 215
643 #define lthuge 216
644 #define ltHuge 217
645 #define ltHUGE 218
646 #define ltHTMLIGNORE 219
647 #define ltHTMLONLY 220
648
649 #define ltINCLUDEONLY 240
650 #define ltINCLUDE 241
651 #define ltINDEX 242
652 #define ltINPUT 243
653 #define ltITEMIZE 244
654 #define ltITEM 245
655 #define ltIMAGE 246
656 #define ltIT 247
657 #define ltITEMSEP 248
658 #define ltINDENTED 249
659 #define ltIMAGEMAP 250
660 #define ltIMAGER 251
661 #define ltIMAGEL 252
662 #define ltINSERTATLEVEL 253
663
664 #define ltKILL 260
665
666 #define ltLABEL 280
667 #define ltlarge 281
668 #define ltLarge 282
669 #define ltLARGE 283
670 #define ltLATEX 284
671 #define ltLBOX 285
672 #define ltLDOTS 286
673 #define ltLINEBREAK 287
674 #define ltLISTOFFIGURES 288
675 #define ltLISTOFTABLES 289
676 #define ltLHEAD 290
677 #define ltLFOOT 291
678 #define ltLATEXIGNORE 292
679 #define ltLATEXONLY 293
680 #define ltLOWERCASE 294
681 #define ltLBRACERAW 295
682 #define ltLINKCOLOUR 296
683
684 #define ltMAKEGLOSSARY 300
685 #define ltMAKEINDEX 301
686 #define ltMAKETITLE 302
687 #define ltMARKRIGHT 303
688 #define ltMARKBOTH 304
689 #define ltMARGINPARWIDTH 305
690 #define ltMARGINPAR 306
691 #define ltMARGINPARODD 307
692 #define ltMARGINPAREVEN 308
693 #define ltMBOX 309
694 #define ltMEMBERSECTION 310
695 #define ltMEMBER 311
696 #define ltMULTICOLUMN 312
697 #define ltMARGINPARSEP 313
698
699 #define ltNEWCOUNTER 330
700 #define ltNEWLINE 331
701 #define ltNEWPAGE 332
702 #define ltNOCITE 333
703 #define ltNOINDENT 334
704 #define ltNOLINEBREAK 335
705 #define ltNOPAGEBREAK 336
706 #define ltNORMALSIZE 337
707 #define ltNORMALBOX 338
708 #define ltNORMALBOXD 339
709 #define ltNUMBEREDBIBITEM 340
710
711 #define ltONECOLUMN 360
712 #define ltODDSIDEMARGIN 361
713
714 #define ltPAGEBREAK 380
715 #define ltPAGEREF 381
716 #define ltPAGESTYLE 382
717 #define ltPAGENUMBERING 383
718 #define ltPARAGRAPHSTAR 384
719 #define ltPARAGRAPH 385
720 #define ltPARAM 386
721 #define ltPARINDENT 387
722 #define ltPARSKIP 388
723 #define ltPARTSTAR 389
724 #define ltPART 390
725 #define ltPAR 391
726 #define ltPFUNC 392
727 #define ltPICTURE 393
728 #define ltPOPREF 394
729 #define ltPOUNDS 395
730 #define ltPRINTINDEX 396
731 #define ltPSBOXTO 397
732 #define ltPSBOX 398
733 #define ltPOPREFONLY 399
734
735 #define ltQUOTE 420
736 #define ltQUOTATION 421
737
738 #define ltRAGGEDBOTTOM 440
739 #define ltRAGGEDLEFT 441
740 #define ltRAGGEDRIGHT 442
741 #define ltREF 443
742 #define ltRM 444
743 #define ltROMAN 445
744 #define ltROMAN2 446
745 #define ltRTFSP 447
746 #define ltRULE 448
747 #define ltRULEDROW 449
748 #define ltDRULED 450
749 #define ltRHEAD 451
750 #define ltRFOOT 452
751 #define ltROW 453
752 #define ltRTFIGNORE 454
753 #define ltRTFONLY 455
754 #define ltRBRACERAW 456
755 #define ltREGISTERED 457
756
757 #define ltSC 470
758 #define ltSECTIONHEADING 471
759 #define ltSECTIONSTAR 472
760 #define ltSECTION 473
761 #define ltSETCOUNTER 474
762 #define ltSF 475
763 #define ltSHORTCITE 476
764 #define ltSINGLESPACE 477
765 #define ltSLOPPYPAR 478
766 #define ltSLOPPY 479
767 #define ltSL 480
768 #define ltSMALL 481
769 #define ltSUBITEM 482
770 #define ltSUBPARAGRAPHSTAR 483
771 #define ltSUBPARAGRAPH 484
772 #define ltSPECIAL 485
773 #define ltSUBSECTIONSTAR 486
774 #define ltSUBSECTION 487
775 #define ltSUBSUBSECTIONSTAR 488
776 #define ltSUBSUBSECTION 489
777 #define ltSCRIPTSIZE 490
778 #define ltSETHEADER 491
779 #define ltSETFOOTER 492
780 #define ltSIZEDBOX 493
781 #define ltSIZEDBOXD 494
782 #define ltSECTIONHEADINGSTAR 495
783 #define ltSS 496
784 #define ltSETHOTSPOTCOLOUR 497
785 #define ltSETHOTSPOTCOLOR 498
786 #define ltSETHOTSPOTUNDERLINE 499
787 #define ltSETTRANSPARENCY 500
788
789 #define ltTABBING 510
790 #define ltTABLEOFCONTENTS 511
791 #define ltTABLE 512
792 #define ltTABULAR 513
793 #define ltTAB 514
794 #define ltTEX 515
795 #define ltTEXTWIDTH 516
796 #define ltTEXTHEIGHT 517
797 #define ltTHEBIBLIOGRAPHY 518
798 #define ltTITLEPAGE 519
799 #define ltTITLE 520
800 #define ltTINY 521
801 #define ltTODAY 522
802 #define ltTOPMARGIN 523
803 #define ltTOPSKIP 524
804 #define ltTT 525
805 #define ltTYPEIN 526
806 #define ltTYPEOUT 527
807 #define ltTWOCOLUMN 528
808 #define ltTHEPAGE 529
809 #define ltTHECHAPTER 530
810 #define ltTHESECTION 531
811 #define ltTHISPAGESTYLE 532
812
813 #define ltTWOCOLWIDTHA 533
814 #define ltTWOCOLWIDTHB 534
815 #define ltTWOCOLSPACING 535
816 #define ltTWOCOLITEM 536
817 #define ltTWOCOLITEMRULED 537
818 #define ltTWOCOLLIST 538
819 #define ltTEXTCOLOUR 539
820
821 #define ltUNDERLINE 550
822 #define ltURLREF 551
823 #define ltUPPERCASE 552
824 #define ltUSEPACKAGE 553
825
826 #define ltVDOTS 570
827 #define ltVERBATIMINPUT 571
828 #define ltVERBATIM 572
829 #define ltVERB 573
830 #define ltVERSE 574
831 #define ltVFILL 575
832 #define ltVLINE 576
833 #define ltVOID 577
834 #define ltVRULE 578
835 #define ltVSPACESTAR 579
836 #define ltVSKIPSTAR 580
837 #define ltVSPACE 581
838 #define ltVSKIP 582
839 #define ltVERBSTAR 583
840
841 #define ltWXCLIPS 600
842 #define ltWINHELPIGNORE 601
843 #define ltWINHELPONLY 602
844
845 #define ltXLPIGNORE 603
846 #define ltXLPONLY 604
847
848 #define ltSPACE 620
849 #define ltBACKSLASHCHAR 621
850 #define ltPIPE 622
851 #define ltFORWARDSLASH 623
852 #define ltUNDERSCORE 624
853 #define ltAMPERSAND 625
854 #define ltPERCENT 626
855 #define ltDOLLAR 627
856 #define ltHASH 628
857 #define ltLPARENTH 629
858 #define ltRPARENTH 630
859 #define ltLBRACE 631
860 #define ltRBRACE 632
861 #define ltEQUALS 633
862 #define ltRANGLEBRA 634
863 #define ltLANGLEBRA 635
864 #define ltPLUS 636
865 #define ltDASH 637
866 #define ltSINGLEQUOTE 638
867 #define ltBACKQUOTE 639
868 #define ltTILDE 640
869 #define ltAT_SYMBOL 641
870
871 // Characters, not macros but with special Latex significance
872 #define ltSPECIALDOLLAR 660
873 #define ltSPECIALDOUBLEDOLLAR 661
874 #define ltSPECIALTILDE 662
875 #define ltSPECIALHASH 663
876 #define ltSPECIALAMPERSAND 664
877 #define ltSUPERTABULAR 665
878
879 // Accents
880 #define ltACCENT_GRAVE 700
881 #define ltACCENT_ACUTE 701
882 #define ltACCENT_CARET 702
883 #define ltACCENT_UMLAUT 703
884 #define ltACCENT_TILDE 704
885 #define ltACCENT_DOT 705
886 #define ltACCENT_CADILLA 706
887
888 // Symbols
889 #define ltALPHA 800
890 #define ltBETA 801
891 #define ltGAMMA 802
892 #define ltDELTA 803
893 #define ltEPSILON 804
894 #define ltVAREPSILON 805
895 #define ltZETA 806
896 #define ltETA 807
897 #define ltTHETA 808
898 #define ltVARTHETA 809
899 #define ltIOTA 810
900 #define ltKAPPA 811
901 #define ltLAMBDA 812
902 #define ltMU 813
903 #define ltNU 814
904 #define ltXI 815
905 #define ltPI 816
906 #define ltVARPI 817
907 #define ltRHO 818
908 #define ltVARRHO 819
909 #define ltSIGMA 820
910 #define ltVARSIGMA 821
911 #define ltTAU 822
912 #define ltUPSILON 823
913 #define ltPHI 824
914 #define ltVARPHI 825
915 #define ltCHI 826
916 #define ltPSI 827
917 #define ltOMEGA 828
918
919 #define ltCAP_GAMMA 830
920 #define ltCAP_DELTA 831
921 #define ltCAP_THETA 832
922 #define ltCAP_LAMBDA 833
923 #define ltCAP_XI 834
924 #define ltCAP_PI 835
925 #define ltCAP_SIGMA 836
926 #define ltCAP_UPSILON 837
927 #define ltCAP_PHI 838
928 #define ltCAP_PSI 839
929 #define ltCAP_OMEGA 840
930
931 // Binary operation symbols
932 #define ltLE 850
933 #define ltLEQ 851
934 #define ltLL 852
935 #define ltSUBSET 853
936 #define ltSUBSETEQ 854
937 #define ltSQSUBSET 855
938 #define ltSQSUBSETEQ 856
939 #define ltIN 857
940 #define ltVDASH 858
941 #define ltMODELS 859
942 #define ltGE 860
943 #define ltGEQ 861
944 #define ltGG 862
945 #define ltSUPSET 863
946 #define ltSUPSETEQ 864
947 #define ltSQSUPSET 865
948 #define ltSQSUPSETEQ 866
949 #define ltNI 867
950 #define ltDASHV 868
951 #define ltPERP 869
952 #define ltNEQ 870
953 #define ltDOTEQ 871
954 #define ltAPPROX 872
955 #define ltCONG 873
956 #define ltEQUIV 874
957 #define ltPROPTO 875
958 #define ltPREC 876
959 #define ltPRECEQ 877
960 #define ltPARALLEL 878
961 #define ltSIM 879
962 #define ltSIMEQ 880
963 #define ltASYMP 881
964 #define ltSMILE 882
965 #define ltFROWN 883
966 #define ltBOWTIE 884
967 #define ltSUCC 885
968 #define ltSUCCEQ 886
969 #define ltMID 887
970
971 // Negated relation symbols (selected)
972 #define ltNOTEQ 890
973 #define ltNOTIN 891
974 #define ltNOTSUBSET 892
975
976 // Arrows
977 #define ltLEFTARROW 900
978 #define ltLEFTARROW2 901
979 #define ltRIGHTARROW 902
980 #define ltRIGHTARROW2 903
981 #define ltLEFTRIGHTARROW 904
982 #define ltLEFTRIGHTARROW2 905
983 #define ltUPARROW 906
984 #define ltUPARROW2 907
985 #define ltDOWNARROW 908
986 #define ltDOWNARROW2 909
987
988 // Miscellaneous symbols
989 #define ltALEPH 1000
990 #define ltWP 1001
991 #define ltRE 1002
992 #define ltIM 1003
993 #define ltEMPTYSET 1004
994 #define ltNABLA 1005
995 #define ltSURD 1006
996 #define ltPARTIAL 1007
997 #define ltBOT 1008
998 #define ltFORALL 1009
999 #define ltEXISTS 1010
1000 #define ltNEG 1011
1001 #define ltSHARP 1012
1002 #define ltANGLE 1013
1003 #define ltTRIANGLE 1014
1004 #define ltCLUBSUIT 1015
1005 #define ltDIAMONDSUIT 1016
1006 #define ltHEARTSUIT 1017
1007 #define ltSPADESUIT 1018
1008 #define ltINFTY 1019
1009
1010 // Binary operation symbols
1011 #define ltPM 1030
1012 #define ltMP 1031
1013 #define ltTIMES 1032
1014 #define ltDIV 1033
1015 #define ltCDOT 1034
1016 #define ltAST 1035
1017 #define ltSTAR 1036
1018 #define ltCAP 1037
1019 #define ltCUP 1038
1020 #define ltVEE 1039
1021 #define ltWEDGE 1040
1022 #define ltCIRC 1041
1023 #define ltBULLET 1042
1024 #define ltDIAMOND 1043
1025 #define ltOSLASH 1044
1026 #define ltBOX 1045
1027 #define ltDIAMOND2 1046
1028 #define ltBIGTRIANGLEDOWN 1047
1029 #define ltOPLUS 1048
1030 #define ltOTIMES 1049
1031
1032 // Latex2e commands
1033 #define ltRMFAMILY 1200
1034 #define ltSFFAMILY 1201
1035 #define ltTTFAMILY 1202
1036 #define ltBFSERIES 1203
1037 #define ltITSHAPE 1204
1038 #define ltSLSHAPE 1205
1039 #define ltSCSHAPE 1206
1040
1041 #define ltMDSERIES 1207
1042 #define ltUPSHAPE 1208
1043
1044 #define ltTEXTRM 1209
1045 #define ltTEXTSF 1210
1046 #define ltTEXTTT 1211
1047 #define ltTEXTBF 1212
1048 #define ltTEXTIT 1213
1049 #define ltTEXTSL 1214
1050 #define ltTEXTSC 1215
1051 #define ltEMPH 1216
1052
1053 #define ltDOCUMENTCLASS 1217
1054
1055 // Space macros
1056 #define ltSMALLSPACE1 1250
1057 #define ltSMALLSPACE2 1251
1058
1059 // Pseudo-macros
1060 #define ltTOPLEVEL 15000
1061 #define ltCUSTOM_MACRO 15001
1062 #define ltSOLO_BLOCK 15002
1063
1064
1065