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