1 /////////////////////////////////////////////////////////////////////////////
3 // Purpose: Latex conversion header
4 // Author: Julian Smart
8 // Copyright: (c) Julian Smart
9 // Licence: wxWindows licence
10 /////////////////////////////////////////////////////////////////////////////
29 * We have a list of macro definitions which we must define
30 * in advance to enable the parsing to recognize macros.
35 #define FORBID_ABSOLUTELY 2
39 const int MAX_LINE_BUFFER_SIZE
= 600;
41 const int MAX_LINE_BUFFER_SIZE
= 11000;
44 class TexMacroDef
: public wxObject
53 TexMacroDef(int the_id
, const char *the_name
, int n
, bool ig
, bool forbidLevel
= FORBID_OK
);
57 #define CHUNK_TYPE_MACRO 1
58 #define CHUNK_TYPE_ARG 2
59 #define CHUNK_TYPE_STRING 3
62 We have nested lists to represent the Tex document.
63 Each element of a list of chunks can be one of:
65 - a macro with/without arguments. Arguments are lists of TexChunks.
67 Example (\toplevel is implicit but made explicit here):
69 AddMacroDef(ltMYMAT, "mymat", 2);
71 \toplevel{The cat sat on the \mymat{very coarse and {\it cheap}}{mat}}.
75 TexChunk: type = macro, name = toplevel, no_args = 1
78 TexChunk: type = argument
81 TexChunk: type = string, value = "The cat sat on the "
82 TexChunk: type = macro, name = mymat, no_args = 2
85 TexChunk: type = argument
88 TexChunk: type = string, value = "very coarse and "
89 TexChunk: type = macro, name = it, no_args = 1
92 TexChunk: type = argument
95 TexChunk: type = string, value = "cheap"
97 TexChunk: type = argument
100 TexChunk: type = string, value = mat
113 bool optional
; // Is an optional argument
116 TexChunk(int the_type
, TexMacroDef
*the_def
= NULL
);
117 TexChunk(TexChunk
& toCopy
);
118 virtual ~TexChunk(void);
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
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 (?)
134 wxStringList
*keywords
;
135 TexTopic(char *f
= NULL
);
138 extern wxHashTable TopicTable
;
139 void AddKeyWordForTopic(char *topic
, char *entry
, char *filename
= NULL
);
140 void ClearKeyWordTable(void);
142 extern char wxTex2RTFBuffer
[];
143 extern TexChunk
*TopLevel
;
144 extern wxHashTable MacroDefs
;
145 extern wxStringList IgnorableInputFiles
; // Ignorable \input files, e.g. psbox.tex
147 bool read_a_line(char *buf
);
148 bool TexLoadFile(char *filename
);
149 int ParseArg(TexChunk
*thisArg
, wxList
& children
, char *buffer
, int pos
,
150 char *environment
= NULL
, bool parseArgToBrace
= TRUE
, TexChunk
*customMacroArgs
= NULL
);
151 int ParseMacroBody(const char *macro_name
, TexChunk
*parent
, int no_args
,
152 char *buffer
, int pos
, char *environment
= NULL
, bool parseArgToBrace
= TRUE
, TexChunk
*customMacroArgs
= NULL
);
153 void TraverseDocument(void);
154 void TraverseFromChunk(TexChunk
*chunk
, wxNode
*thisNode
= NULL
, bool childrenOnly
= FALSE
);
155 #define TraverseChildrenFromChunk(arg) TraverseFromChunk(arg, NULL, TRUE)
156 void SetCurrentOutput(FILE *fd
);
157 void SetCurrentOutputs(FILE *fd1
, FILE *fd2
);
158 extern FILE *CurrentOutput1
;
159 extern FILE *CurrentOutput2
;
160 void AddMacroDef(int the_id
, const char *name
, int n
, bool ignore
= FALSE
, bool forbidden
= FALSE
);
161 void TexInitialize(int bufSize
);
162 void TexCleanUp(void);
163 void TexOutput(const char *s
, bool ordinaryText
= FALSE
);
164 char *GetArgData(TexChunk
*chunk
);
165 char *GetArgData(void); // Get the string for the current argument
166 int GetNoArgs(void); // Get the number of arguments for the current macro
167 TexChunk
*GetArgChunk(void); // Get the chunk for the current argument
168 TexChunk
*GetTopLevelChunk(void); // Get the chunk for the top level
169 TexChunk
*GetNextChunk(void); // Look ahead to the next chunk
170 bool IsArgOptional(void); // Is this argument an optional argument?
171 void DefineDefaultMacros(void); // Optional set of default macros
172 int GetCurrentColumn(void); // number of characters on current line
173 char *ConvertCase(char *s
); // Convert case, according to upperCaseNames setting.
174 extern wxPathList TexPathList
; // Path list, can be used for file searching.
176 // Define a variable value from the .ini file
177 char *RegisterSetting(char *settingName
, char *settingValue
, bool interactive
= TRUE
);
179 // Major document styles
180 #define LATEX_REPORT 1
181 #define LATEX_ARTICLE 2
182 #define LATEX_LETTER 3
184 #define LATEX_SLIDES 5
186 extern TexChunk
*DocumentTitle
;
187 extern TexChunk
*DocumentAuthor
;
188 extern TexChunk
*DocumentDate
;
189 extern int DocumentStyle
;
190 extern int MinorDocumentStyle
;
191 extern char *BibliographyStyleString
;
192 extern char *DocumentStyleString
;
193 extern char *MinorDocumentStyleString
;
195 extern int normalFont
;
196 extern int smallFont
;
198 extern int largeFont1
;
199 extern int LargeFont2
;
200 extern int LARGEFont3
;
201 extern int hugeFont1
;
202 extern int HugeFont2
;
203 extern int HUGEFont3
;
206 * USER-ADJUSTABLE SETTINGS
210 // Section font sizes
211 extern int chapterFont
;
212 extern int sectionFont
;
213 extern int subsectionFont
;
214 extern int titleFont
;
215 extern int authorFont
;
216 extern bool winHelp
; // Output in Windows Help format if TRUE, linear otherwise
217 extern bool isInteractive
;
218 extern bool runTwice
;
219 extern int convertMode
;
220 extern bool checkCurleyBraces
;
221 extern bool checkSyntax
;
222 extern bool stopRunning
;
223 extern int mirrorMargins
;
224 extern bool headerRule
;
225 extern bool footerRule
;
226 extern int labelIndentTab
; // From left indent to item label (points)
227 extern int itemIndentTab
; // From left indent to item (points)
228 extern bool useUpButton
;
229 extern int htmlBrowseButtons
;
230 extern bool useHeadingStyles
; // Insert \s1, s2 etc.
231 extern bool useWord
; // Insert Word table of contents, etc. etc.
232 extern bool indexSubsections
; // put subsections in index
233 extern bool compatibilityMode
;
234 extern bool generateHPJ
; // Generate WinHelp HPJ file
235 extern char *winHelpTitle
; // Title for Windows Help file
236 extern int defaultTableColumnWidth
;
237 extern char *bitmapMethod
;
238 extern bool truncateFilenames
; // Truncate for DOS
239 extern int winHelpVersion
; // Version e.g. 4 for Win95
240 extern bool winHelpContents
; // Generate .cnt file
241 extern bool htmlIndex
; // Generate .htx HTML index file
242 extern bool htmlFrameContents
; // Use frames for HTML contents page
243 extern int contentsDepth
; // Depth of contents for linear RTF files
244 extern bool upperCaseNames
; // Filenames; default is lower case
245 extern char *backgroundImageString
; // HTML background image
246 extern char *backgroundColourString
; // HTML background colour
247 extern char *textColourString
; // HTML text colour
248 extern char *linkColourString
; // HTML link colour
249 extern char *followedLinkColourString
; // HTML followed link colour
250 extern bool combineSubSections
; // Stop splitting files below section
251 extern bool htmlWorkshopFiles
; // generate HTML Help Workshop project files
252 extern bool ignoreBadRefs
; // Don't insert (REF NOT FOUND)
253 extern char *htmlFaceName
; // HTML face name
255 // Names to help with internationalisation
256 extern char *ContentsNameString
;
257 extern char *AbstractNameString
;
258 extern char *GlossaryNameString
;
259 extern char *ReferencesNameString
;
260 extern char *FiguresNameString
;
261 extern char *TablesNameString
;
262 extern char *FigureNameString
;
263 extern char *TableNameString
;
264 extern char *IndexNameString
;
265 extern char *ChapterNameString
;
266 extern char *SectionNameString
;
267 extern char *SubsectionNameString
;
268 extern char *SubsubsectionNameString
;
269 extern char *UpNameString
;
272 * HTML button identifiers: what kind of browse buttons
273 * are placed in HTML files, if any.
277 #define HTML_BUTTONS_NONE 0
278 #define HTML_BUTTONS_BITMAP 1
279 #define HTML_BUTTONS_TEXT 2
286 extern int chapterNo
;
287 extern int sectionNo
;
288 extern int subsectionNo
;
289 extern int subsubsectionNo
;
294 extern int ParIndent
;
298 // Set by client and by Tex2Any
299 extern TexChunk
*currentSection
;
301 // Header/footers/pagestyle
302 extern TexChunk
* LeftHeaderOdd
;
303 extern TexChunk
* LeftFooterOdd
;
304 extern TexChunk
* CentreHeaderOdd
;
305 extern TexChunk
* CentreFooterOdd
;
306 extern TexChunk
* RightHeaderOdd
;
307 extern TexChunk
* RightFooterOdd
;
308 extern TexChunk
* LeftHeaderEven
;
309 extern TexChunk
* LeftFooterEven
;
310 extern TexChunk
* CentreHeaderEven
;
311 extern TexChunk
* CentreFooterEven
;
312 extern TexChunk
* RightHeaderEven
;
313 extern TexChunk
* RightFooterEven
;
314 extern char * PageStyle
;
316 // Repeat the currentSection, either real (Chapter) or simulated (References)
317 extern void OutputCurrentSection(void);
318 extern void OutputCurrentSectionToString(char *buf
);
319 extern void OutputChunkToString(TexChunk
*chunk
, char *buf
);
321 extern char *fakeCurrentSection
;
323 // Called by Tex2Any to simulate a section
324 extern void FakeCurrentSection(char *fakeSection
, bool addToContents
= TRUE
);
327 * Local to Tex2Any library
331 extern char *currentArgData
;
332 extern bool haveArgData
; // If TRUE, we're simulating the data.
333 void StartSimulateArgument(char *data
);
334 void EndSimulateArgument(void);
341 // Called on start/end of macro examination
342 void OnMacro(int macroId
, int no_args
, bool start
);
344 // Called on start/end of argument examination.
345 // Return TRUE at the start of an argument to traverse
346 // (output) the argument.
347 bool OnArgument(int macroId
, int arg_no
, bool start
);
349 // Default: library-defined
350 void DefaultOnMacro(int macroId
, int no_args
, bool start
);
352 // Default: library-defined
353 bool DefaultOnArgument(int macroId
, int arg_no
, bool start
);
356 void OnError(const char *msg
);
358 // Called for information
359 void OnInform(const char *msg
);
361 // Special yield wrapper
362 void Tex2RTFYield(bool force
= FALSE
);
369 // Look for \label macro, use this ref name if found or
370 // make up a topic name otherwise.
371 char *FindTopicName(TexChunk
*chunk
);
372 // Force the current topic to be this (e.g. force 'references' label).
373 void ForceTopicName(const char *name
);
374 void ResetTopicCounter(void);
376 // Parse unit eg. 14, 12pt, 34cm and return value in points.
377 int ParseUnitArgument(char *unitArg
);
379 // Set small, large, normal etc. point sizes for reference size
380 void SetFontSizes(int pointSize
);
383 * Strip off any extension (dot something) from end of file,
384 * IF one exists. Inserts zero into buffer.
388 void StripExtension(char *buffer
);
391 * Reference structure
395 class TexRef
: public wxObject
398 char *refLabel
; // Reference label
399 char *refFile
; // Reference filename (can be NULL)
400 char *sectionNumber
; // Section or figure number (as a string)
401 char *sectionName
; // name e.g. 'section'
402 TexRef(const char *label
, const char *file
, const char *section
, const char *sectionN
= NULL
);
411 void AddTexRef(char *name
, char *file
= NULL
, char *sectionName
= NULL
,
412 int chapter
= 0, int section
= 0, int subsection
= 0, int subsubsection
= 0);
415 * Read and write reference file (.ref), to resolve refs for second pass.
418 void WriteTexReferences(char *filename
);
419 void ReadTexReferences(char *filename
);
426 class BibEntry
: public wxObject
432 * book, inbook, article, phdthesis, inproceedings, techreport
457 inline BibEntry(void)
480 extern wxList BibList
;
481 extern wxStringList CitationList
;
483 bool ReadBib(char *filename
);
484 void OutputBib(void);
485 void ResolveBibReferences(void);
486 void AddCitation(char *citeKey
);
487 TexRef
*FindReference(char *key
);
490 * Ability to customize, or at least suppress unknown macro errors
494 extern wxList CustomMacroList
;
496 #define CUSTOM_MACRO_IGNORE 0
497 #define CUSTOM_MACRO_OUTPUT 1
498 #define CUSTOM_MACRO_MARK 2
500 class CustomMacro
: public wxObject
506 inline CustomMacro(char *name
, int args
, char *body
)
509 macroName
= copystring(name
);
511 macroBody
= copystring(body
);
518 bool ReadCustomMacros(char *filename
);
519 void ShowCustomMacros(void);
520 CustomMacro
*FindCustomMacro(char *name
);
521 char *ParseMultifieldString(char *s
, int *pos
);
528 class ColourTableEntry
: public wxObject
536 ColourTableEntry(const char *theName
, unsigned int r
, unsigned int g
, unsigned int b
);
537 ~ColourTableEntry(void);
540 extern wxList ColourTable
;
541 extern void AddColour(const char *theName
, unsigned int r
, unsigned int g
, unsigned int b
);
542 extern int FindColourPosition(char *theName
);
543 // Converts e.g. "red" -> "#FF0000"
544 extern bool FindColourHTMLString(char *theName
, char *buf
);
545 extern void InitialiseColourTable(void);
548 #define ltADDCONTENTSLINE 2
549 #define ltADDTOCOUNTER 3
557 #define ltBACKSLASH 30
558 #define ltBASELINESKIP 31
561 #define ltBIBLIOGRAPHYSTYLE 34
562 #define ltBIBLIOGRAPHY 35
564 #define ltBACKSLASHRAW 37
565 #define ltBACKGROUND 38
566 #define ltBACKGROUNDCOLOUR 39
567 #define ltBACKGROUNDIMAGE 40
570 #define ltCAPTIONSTAR 50
573 #define ltCENTERLINE 53
574 #define ltCENTERING 54
576 #define ltCEXTRACT 56
577 #define ltCHAPTERHEADING 57
578 #define ltCHAPTERSTAR 58
583 #define ltCLEARDOUBLEPAGE 63
584 #define ltCLEARPAGE 64
586 #define ltCLIPSFUNC 66
587 #define ltCOLUMNSEP 67
589 #define ltCOPYRIGHT 69
595 #define ltCHAPTERHEADINGSTAR 73
598 #define ltDESCRIPTION 91
599 #define ltDESTRUCT 92
600 #define ltDOCUMENTSTYLE 93
601 #define ltDOCUMENT 94
602 #define ltDOUBLESPACE 95
603 #define ltDEFINECOLOUR 96
604 #define ltDEFINECOLOR 97
607 #define ltENUMERATE 121
608 #define ltEQUATION 122
609 #define ltEVENSIDEMARGIN 123
613 #define ltFLUSHLEFT 152
614 #define ltFLUSHRIGHT 153
615 #define ltFOOTHEIGHT 154
616 #define ltFOOTNOTE 155
617 #define ltFOOTSKIP 156
618 #define ltFRAMEBOX 157
619 #define ltFUNCTIONSECTION 158
621 #define ltFIGURESTAR 160
622 #define ltFOOTNOTESIZE 161
623 #define ltFOOTNOTEPOPUP 162
624 #define ltFANCYPLAIN 163
627 #define ltFOLLOWEDLINKCOLOUR 166
629 #define ltGLOSSARY 180
632 #define ltHEADHEIGHT 200
633 #define ltHELPGLOSSARY 201
634 #define ltHELPIGNORE 202
635 #define ltHELPONLY 203
636 #define ltHELPINPUT 204
637 #define ltHELPFONTFAMILY 205
638 #define ltHELPFONTSIZE 206
639 #define ltHELPREFN 207
640 #define ltHELPREF 208
644 #define ltHSPACESTAR 212
646 #define ltHSKIPSTAR 214
651 #define ltHTMLIGNORE 219
652 #define ltHTMLONLY 220
654 #define ltINCLUDEONLY 240
655 #define ltINCLUDE 241
658 #define ltITEMIZE 244
662 #define ltITEMSEP 248
663 #define ltINDENTED 249
664 #define ltIMAGEMAP 250
667 #define ltINSERTATLEVEL 253
678 #define ltLINEBREAK 287
679 #define ltLISTOFFIGURES 288
680 #define ltLISTOFTABLES 289
683 #define ltLATEXIGNORE 292
684 #define ltLATEXONLY 293
685 #define ltLOWERCASE 294
686 #define ltLBRACERAW 295
687 #define ltLINKCOLOUR 296
689 #define ltMAKEGLOSSARY 300
690 #define ltMAKEINDEX 301
691 #define ltMAKETITLE 302
692 #define ltMARKRIGHT 303
693 #define ltMARKBOTH 304
694 #define ltMARGINPARWIDTH 305
695 #define ltMARGINPAR 306
696 #define ltMARGINPARODD 307
697 #define ltMARGINPAREVEN 308
699 #define ltMEMBERSECTION 310
701 #define ltMULTICOLUMN 312
702 #define ltMARGINPARSEP 313
704 #define ltNEWCOUNTER 330
705 #define ltNEWLINE 331
706 #define ltNEWPAGE 332
708 #define ltNOINDENT 334
709 #define ltNOLINEBREAK 335
710 #define ltNOPAGEBREAK 336
711 #define ltNORMALSIZE 337
712 #define ltNORMALBOX 338
713 #define ltNORMALBOXD 339
714 #define ltNUMBEREDBIBITEM 340
716 #define ltONECOLUMN 360
717 #define ltODDSIDEMARGIN 361
719 #define ltPAGEBREAK 380
720 #define ltPAGEREF 381
721 #define ltPAGESTYLE 382
722 #define ltPAGENUMBERING 383
723 #define ltPARAGRAPHSTAR 384
724 #define ltPARAGRAPH 385
726 #define ltPARINDENT 387
727 #define ltPARSKIP 388
728 #define ltPARTSTAR 389
732 #define ltPICTURE 393
735 #define ltPRINTINDEX 396
736 #define ltPSBOXTO 397
738 #define ltPOPREFONLY 399
741 #define ltQUOTATION 421
743 #define ltRAGGEDBOTTOM 440
744 #define ltRAGGEDLEFT 441
745 #define ltRAGGEDRIGHT 442
752 #define ltRULEDROW 449
757 #define ltRTFIGNORE 454
758 #define ltRTFONLY 455
759 #define ltRBRACERAW 456
760 #define ltREGISTERED 457
763 #define ltSECTIONHEADING 471
764 #define ltSECTIONSTAR 472
765 #define ltSECTION 473
766 #define ltSETCOUNTER 474
768 #define ltSHORTCITE 476
769 #define ltSINGLESPACE 477
770 #define ltSLOPPYPAR 478
774 #define ltSUBITEM 482
775 #define ltSUBPARAGRAPHSTAR 483
776 #define ltSUBPARAGRAPH 484
777 #define ltSPECIAL 485
778 #define ltSUBSECTIONSTAR 486
779 #define ltSUBSECTION 487
780 #define ltSUBSUBSECTIONSTAR 488
781 #define ltSUBSUBSECTION 489
782 #define ltSCRIPTSIZE 490
783 #define ltSETHEADER 491
784 #define ltSETFOOTER 492
785 #define ltSIZEDBOX 493
786 #define ltSIZEDBOXD 494
787 #define ltSECTIONHEADINGSTAR 495
789 #define ltSETHOTSPOTCOLOUR 497
790 #define ltSETHOTSPOTCOLOR 498
791 #define ltSETHOTSPOTUNDERLINE 499
792 #define ltSETTRANSPARENCY 500
794 #define ltTABBING 510
795 #define ltTABLEOFCONTENTS 511
797 #define ltTABULAR 513
800 #define ltTEXTWIDTH 516
801 #define ltTEXTHEIGHT 517
802 #define ltTHEBIBLIOGRAPHY 518
803 #define ltTITLEPAGE 519
807 #define ltTOPMARGIN 523
808 #define ltTOPSKIP 524
811 #define ltTYPEOUT 527
812 #define ltTWOCOLUMN 528
813 #define ltTHEPAGE 529
814 #define ltTHECHAPTER 530
815 #define ltTHESECTION 531
816 #define ltTHISPAGESTYLE 532
818 #define ltTWOCOLWIDTHA 533
819 #define ltTWOCOLWIDTHB 534
820 #define ltTWOCOLSPACING 535
821 #define ltTWOCOLITEM 536
822 #define ltTWOCOLITEMRULED 537
823 #define ltTWOCOLLIST 538
824 #define ltTEXTCOLOUR 539
826 #define ltUNDERLINE 550
828 #define ltUPPERCASE 552
829 #define ltUSEPACKAGE 553
832 #define ltVERBATIMINPUT 571
833 #define ltVERBATIM 572
840 #define ltVSPACESTAR 579
841 #define ltVSKIPSTAR 580
844 #define ltVERBSTAR 583
846 #define ltWXCLIPS 600
847 #define ltWINHELPIGNORE 601
848 #define ltWINHELPONLY 602
850 #define ltXLPIGNORE 603
851 #define ltXLPONLY 604
854 #define ltBACKSLASHCHAR 621
856 #define ltFORWARDSLASH 623
857 #define ltUNDERSCORE 624
858 #define ltAMPERSAND 625
859 #define ltPERCENT 626
862 #define ltLPARENTH 629
863 #define ltRPARENTH 630
867 #define ltRANGLEBRA 634
868 #define ltLANGLEBRA 635
871 #define ltSINGLEQUOTE 638
872 #define ltBACKQUOTE 639
874 #define ltAT_SYMBOL 641
876 // Characters, not macros but with special Latex significance
877 #define ltSPECIALDOLLAR 660
878 #define ltSPECIALDOUBLEDOLLAR 661
879 #define ltSPECIALTILDE 662
880 #define ltSPECIALHASH 663
881 #define ltSPECIALAMPERSAND 664
882 #define ltSUPERTABULAR 665
885 #define ltACCENT_GRAVE 700
886 #define ltACCENT_ACUTE 701
887 #define ltACCENT_CARET 702
888 #define ltACCENT_UMLAUT 703
889 #define ltACCENT_TILDE 704
890 #define ltACCENT_DOT 705
891 #define ltACCENT_CADILLA 706
898 #define ltEPSILON 804
899 #define ltVAREPSILON 805
903 #define ltVARTHETA 809
915 #define ltVARSIGMA 821
917 #define ltUPSILON 823
924 #define ltCAP_GAMMA 830
925 #define ltCAP_DELTA 831
926 #define ltCAP_THETA 832
927 #define ltCAP_LAMBDA 833
930 #define ltCAP_SIGMA 836
931 #define ltCAP_UPSILON 837
932 #define ltCAP_PHI 838
933 #define ltCAP_PSI 839
934 #define ltCAP_OMEGA 840
936 // Binary operation symbols
941 #define ltSUBSETEQ 854
942 #define ltSQSUBSET 855
943 #define ltSQSUBSETEQ 856
951 #define ltSUPSETEQ 864
952 #define ltSQSUPSET 865
953 #define ltSQSUPSETEQ 866
965 #define ltPARALLEL 878
976 // Negated relation symbols (selected)
979 #define ltNOTSUBSET 892
982 #define ltLEFTARROW 900
983 #define ltLEFTARROW2 901
984 #define ltRIGHTARROW 902
985 #define ltRIGHTARROW2 903
986 #define ltLEFTRIGHTARROW 904
987 #define ltLEFTRIGHTARROW2 905
988 #define ltUPARROW 906
989 #define ltUPARROW2 907
990 #define ltDOWNARROW 908
991 #define ltDOWNARROW2 909
993 // Miscellaneous symbols
998 #define ltEMPTYSET 1004
1001 #define ltPARTIAL 1007
1003 #define ltFORALL 1009
1004 #define ltEXISTS 1010
1006 #define ltSHARP 1012
1007 #define ltANGLE 1013
1008 #define ltTRIANGLE 1014
1009 #define ltCLUBSUIT 1015
1010 #define ltDIAMONDSUIT 1016
1011 #define ltHEARTSUIT 1017
1012 #define ltSPADESUIT 1018
1013 #define ltINFTY 1019
1015 // Binary operation symbols
1018 #define ltTIMES 1032
1026 #define ltWEDGE 1040
1028 #define ltBULLET 1042
1029 #define ltDIAMOND 1043
1030 #define ltOSLASH 1044
1032 #define ltDIAMOND2 1046
1033 #define ltBIGTRIANGLEDOWN 1047
1034 #define ltOPLUS 1048
1035 #define ltOTIMES 1049
1038 #define ltRMFAMILY 1200
1039 #define ltSFFAMILY 1201
1040 #define ltTTFAMILY 1202
1041 #define ltBFSERIES 1203
1042 #define ltITSHAPE 1204
1043 #define ltSLSHAPE 1205
1044 #define ltSCSHAPE 1206
1046 #define ltMDSERIES 1207
1047 #define ltUPSHAPE 1208
1049 #define ltTEXTRM 1209
1050 #define ltTEXTSF 1210
1051 #define ltTEXTTT 1211
1052 #define ltTEXTBF 1212
1053 #define ltTEXTIT 1213
1054 #define ltTEXTSL 1214
1055 #define ltTEXTSC 1215
1058 #define ltDOCUMENTCLASS 1217
1061 #define ltSMALLSPACE1 1250
1062 #define ltSMALLSPACE2 1251
1065 #define ltTOPLEVEL 15000
1066 #define ltCUSTOM_MACRO 15001
1067 #define ltSOLO_BLOCK 15002