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