]> git.saurik.com Git - wxWidgets.git/blame - utils/tex2rtf/src/tex2any.h
Now uses MAX_LINE_BUFFER_SIZE constant for the array sizing of the buffer that hold...
[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;
219extern bool stopRunning;
220extern int mirrorMargins;
221extern bool headerRule;
222extern bool footerRule;
223extern int labelIndentTab; // From left indent to item label (points)
224extern int itemIndentTab; // From left indent to item (points)
225extern bool useUpButton;
226extern int htmlBrowseButtons;
227extern bool useHeadingStyles; // Insert \s1, s2 etc.
228extern bool useWord; // Insert Word table of contents, etc. etc.
229extern bool indexSubsections; // put subsections in index
230extern bool compatibilityMode;
231extern bool generateHPJ; // Generate WinHelp HPJ file
232extern char *winHelpTitle; // Title for Windows Help file
233extern int defaultTableColumnWidth;
234extern char *bitmapMethod;
235extern bool truncateFilenames; // Truncate for DOS
236extern int winHelpVersion; // Version e.g. 4 for Win95
237extern bool winHelpContents; // Generate .cnt file
238extern bool htmlIndex; // Generate .htx HTML index file
239extern bool htmlFrameContents; // Use frames for HTML contents page
240extern int contentsDepth; // Depth of contents for linear RTF files
241extern bool upperCaseNames; // Filenames; default is lower case
242extern char *backgroundImageString; // HTML background image
243extern char *backgroundColourString; // HTML background colour
244extern char *textColourString; // HTML text colour
245extern char *linkColourString; // HTML link colour
246extern char *followedLinkColourString; // HTML followed link colour
247extern bool combineSubSections; // Stop splitting files below section
14204c7a 248extern bool htmlWorkshopFiles; // generate HTML Help Workshop project files
9a29912f
JS
249
250// Names to help with internationalisation
251extern char *ContentsNameString;
252extern char *AbstractNameString;
253extern char *GlossaryNameString;
254extern char *ReferencesNameString;
255extern char *FiguresNameString;
256extern char *TablesNameString;
257extern char *FigureNameString;
258extern char *TableNameString;
259extern char *IndexNameString;
260extern char *ChapterNameString;
261extern char *SectionNameString;
262extern char *SubsectionNameString;
263extern char *SubsubsectionNameString;
264extern 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
281extern int chapterNo;
282extern int sectionNo;
283extern int subsectionNo;
284extern int subsubsectionNo;
285extern int figureNo;
286extern int tableNo;
287
288extern int ParSkip;
289extern int ParIndent;
290
291extern bool isSync;
292
293// Set by client and by Tex2Any
294extern TexChunk *currentSection;
295
296// Header/footers/pagestyle
297extern TexChunk * LeftHeaderOdd;
298extern TexChunk * LeftFooterOdd;
299extern TexChunk * CentreHeaderOdd;
300extern TexChunk * CentreFooterOdd;
301extern TexChunk * RightHeaderOdd;
302extern TexChunk * RightFooterOdd;
303extern TexChunk * LeftHeaderEven;
304extern TexChunk * LeftFooterEven;
305extern TexChunk * CentreHeaderEven;
306extern TexChunk * CentreFooterEven;
307extern TexChunk * RightHeaderEven;
308extern TexChunk * RightFooterEven;
309extern char * PageStyle;
310
311// Repeat the currentSection, either real (Chapter) or simulated (References)
312extern void OutputCurrentSection(void);
313extern void OutputCurrentSectionToString(char *buf);
314extern void OutputChunkToString(TexChunk *chunk, char *buf);
315
316extern char *fakeCurrentSection;
317
318// Called by Tex2Any to simulate a section
319extern void FakeCurrentSection(char *fakeSection, bool addToContents = TRUE);
320
321/*
322 * Local to Tex2Any library
323 *
324 */
325
326extern char *currentArgData;
327extern bool haveArgData; // If TRUE, we're simulating the data.
328void StartSimulateArgument(char *data);
329void EndSimulateArgument(void);
330
331/*
332 * Client-defined
333 *
334 */
335
336// Called on start/end of macro examination
337void 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.
342bool OnArgument(int macroId, int arg_no, bool start);
343
344// Default: library-defined
345void DefaultOnMacro(int macroId, int no_args, bool start);
346
347// Default: library-defined
348bool DefaultOnArgument(int macroId, int arg_no, bool start);
349
350// Called on error
351void OnError(char *msg);
352
353// Called for information
354void OnInform(char *msg);
355
356// Special yield wrapper
357void 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.
366char *FindTopicName(TexChunk *chunk);
367// Force the current topic to be this (e.g. force 'references' label).
368void ForceTopicName(char *name);
369void ResetTopicCounter(void);
370
371// Parse unit eg. 14, 12pt, 34cm and return value in points.
372int ParseUnitArgument(char *unitArg);
373
374// Set small, large, normal etc. point sizes for reference size
375void 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
383void StripExtension(char *buffer);
384
385/*
386 * Reference structure
387 *
388 */
389
390class 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'
3924dd22
GT
397 TexRef(char *label, char *file, char *section, char *sectionN = NULL);
398 ~TexRef(void);
9a29912f
JS
399};
400
9a29912f
JS
401/*
402 * Add a reference
403 *
404 */
405
406void 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 */
413void WriteTexReferences(char *filename);
414void ReadTexReferences(char *filename);
415
416/*
417 * Bibliography stuff
418 *
419 */
420
421class 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
475extern wxList BibList;
476extern wxStringList CitationList;
477
478bool ReadBib(char *filename);
479void OutputBib(void);
480void ResolveBibReferences(void);
481void AddCitation(char *citeKey);
482TexRef *FindReference(char *key);
483
484/*
485 * Ability to customize, or at least suppress unknown macro errors
486 *
487 */
488
489extern wxList CustomMacroList;
490
491#define CUSTOM_MACRO_IGNORE 0
492#define CUSTOM_MACRO_OUTPUT 1
493#define CUSTOM_MACRO_MARK 2
494
495class 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 }
3924dd22 510 ~CustomMacro();
9a29912f
JS
511};
512
513bool ReadCustomMacros(char *filename);
514void ShowCustomMacros(void);
515CustomMacro *FindCustomMacro(char *name);
516char *ParseMultifieldString(char *s, int *pos);
517
518/*
519 * Colour table stuff
520 *
521 */
522
523class 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
535extern wxList ColourTable;
536extern void AddColour(char *theName, unsigned int r, unsigned int g, unsigned int b);
537extern int FindColourPosition(char *theName);
538// Converts e.g. "red" -> "#FF0000"
539extern bool FindColourHTMLString(char *theName, char *buf);
540extern 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