1 /////////////////////////////////////////////////////////////////////////////
3 // Purpose: Latex conversion header
4 // Author: Julian Smart
8 // Copyright: (c) Julian Smart
9 // Licence: wxWindows licence
10 /////////////////////////////////////////////////////////////////////////////
16 #include "wx/tokenzr.h"
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 unsigned long MAX_LINE_BUFFER_SIZE
= 600;
41 const unsigned long MAX_LINE_BUFFER_SIZE
= 11000;
44 class TexMacroDef
: public wxObject
53 TexMacroDef(int the_id
, const wxChar
*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(wxChar
*f
= NULL
);
138 extern wxHashTable TopicTable
;
139 void AddKeyWordForTopic(wxChar
*topic
, wxChar
*entry
, wxChar
*filename
= NULL
);
140 void ClearKeyWordTable(void);
142 extern wxChar 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(wxChar
*buf
);
148 bool TexLoadFile(const wxString
& filename
);
149 int ParseArg(TexChunk
*thisArg
, wxList
& children
, wxChar
*buffer
, int pos
,
150 wxChar
*environment
= NULL
, bool parseArgToBrace
= true, TexChunk
*customMacroArgs
= NULL
);
151 int ParseMacroBody(const wxChar
*macro_name
, TexChunk
*parent
, int no_args
,
152 wxChar
*buffer
, int pos
, wxChar
*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 wxChar
*name
, int n
, bool ignore
= false, bool forbidden
= false);
161 void TexInitialize(int bufSize
);
162 void TexCleanUp(void);
163 void TexOutput(const wxChar
*s
, bool ordinaryText
= false);
164 wxChar
*GetArgData(TexChunk
*chunk
);
165 wxChar
*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 wxChar
*ConvertCase(wxChar
*s
); // Convert case, according to upperCaseNames setting.
174 extern wxPathList TexPathList
; // Path list, can be used for file searching.
176 extern bool StringMatch(const wxChar
*one
, const wxChar
*two
, bool subString
= true, bool exact
= false);
178 // Define a variable value from the .ini file
179 wxChar
*RegisterSetting(wxChar
*settingName
, wxChar
*settingValue
, bool interactive
= true);
181 // Major document styles
182 #define LATEX_REPORT 1
183 #define LATEX_ARTICLE 2
184 #define LATEX_LETTER 3
186 #define LATEX_SLIDES 5
188 extern TexChunk
*DocumentTitle
;
189 extern TexChunk
*DocumentAuthor
;
190 extern TexChunk
*DocumentDate
;
191 extern int DocumentStyle
;
192 extern int MinorDocumentStyle
;
193 extern wxChar
*BibliographyStyleString
;
194 extern wxChar
*DocumentStyleString
;
195 extern wxChar
*MinorDocumentStyleString
;
197 extern int normalFont
;
198 extern int smallFont
;
200 extern int largeFont1
;
201 extern int LargeFont2
;
202 extern int LARGEFont3
;
203 extern int hugeFont1
;
204 extern int HugeFont2
;
205 extern int HUGEFont3
;
208 * USER-ADJUSTABLE SETTINGS
212 // Section font sizes
213 extern int chapterFont
;
214 extern int sectionFont
;
215 extern int subsectionFont
;
216 extern int titleFont
;
217 extern int authorFont
;
218 extern bool winHelp
; // Output in Windows Help format if true, linear otherwise
219 extern bool isInteractive
;
220 extern bool runTwice
;
221 extern int convertMode
;
222 extern bool checkCurlyBraces
;
223 extern bool checkSyntax
;
224 extern bool stopRunning
;
225 extern int mirrorMargins
;
226 extern bool headerRule
;
227 extern bool footerRule
;
228 extern int labelIndentTab
; // From left indent to item label (points)
229 extern int itemIndentTab
; // From left indent to item (points)
230 extern bool useUpButton
;
231 extern int htmlBrowseButtons
;
232 extern bool useHeadingStyles
; // Insert \s1, s2 etc.
233 extern bool useWord
; // Insert Word table of contents, etc. etc.
234 extern bool indexSubsections
; // put subsections in index
235 extern bool compatibilityMode
;
236 extern bool generateHPJ
; // Generate WinHelp HPJ file
237 extern wxChar
*winHelpTitle
; // Title for Windows Help file
238 extern int defaultTableColumnWidth
;
239 extern wxChar
*bitmapMethod
;
240 extern bool truncateFilenames
; // Truncate for DOS
241 extern int winHelpVersion
; // Version e.g. 4 for Win95
242 extern bool winHelpContents
; // Generate .cnt file
243 extern bool htmlIndex
; // Generate .htx HTML index file
244 extern bool htmlFrameContents
; // Use frames for HTML contents page
245 extern wxChar
*htmlStylesheet
; // Use this CSS stylesheet for HTML pages
246 extern int contentsDepth
; // Depth of contents for linear RTF files
247 extern bool upperCaseNames
; // Filenames; default is lower case
248 extern wxChar
*backgroundImageString
; // HTML background image
249 extern wxChar
*backgroundColourString
; // HTML background colour
250 extern wxChar
*textColourString
; // HTML text colour
251 extern wxChar
*linkColourString
; // HTML link colour
252 extern wxChar
*followedLinkColourString
; // HTML followed link colour
253 extern bool combineSubSections
; // Stop splitting files below section
254 extern bool htmlWorkshopFiles
; // generate HTML Help Workshop project files
255 extern bool ignoreBadRefs
; // Don't insert (REF NOT FOUND)
256 extern wxChar
*htmlFaceName
; // HTML face name
258 // Names to help with internationalisation
259 extern wxChar
*ContentsNameString
;
260 extern wxChar
*AbstractNameString
;
261 extern wxChar
*GlossaryNameString
;
262 extern wxChar
*ReferencesNameString
;
263 extern wxChar
*FiguresNameString
;
264 extern wxChar
*TablesNameString
;
265 extern wxChar
*FigureNameString
;
266 extern wxChar
*TableNameString
;
267 extern wxChar
*IndexNameString
;
268 extern wxChar
*ChapterNameString
;
269 extern wxChar
*SectionNameString
;
270 extern wxChar
*SubsectionNameString
;
271 extern wxChar
*SubsubsectionNameString
;
272 extern wxChar
*UpNameString
;
275 * HTML button identifiers: what kind of browse buttons
276 * are placed in HTML files, if any.
280 #define HTML_BUTTONS_NONE 0
281 #define HTML_BUTTONS_BITMAP 1
282 #define HTML_BUTTONS_TEXT 2
289 extern int chapterNo
;
290 extern int sectionNo
;
291 extern int subsectionNo
;
292 extern int subsubsectionNo
;
297 extern int ParIndent
;
301 // Set by client and by Tex2Any
302 extern TexChunk
*currentSection
;
304 // Header/footers/pagestyle
305 extern TexChunk
* LeftHeaderOdd
;
306 extern TexChunk
* LeftFooterOdd
;
307 extern TexChunk
* CentreHeaderOdd
;
308 extern TexChunk
* CentreFooterOdd
;
309 extern TexChunk
* RightHeaderOdd
;
310 extern TexChunk
* RightFooterOdd
;
311 extern TexChunk
* LeftHeaderEven
;
312 extern TexChunk
* LeftFooterEven
;
313 extern TexChunk
* CentreHeaderEven
;
314 extern TexChunk
* CentreFooterEven
;
315 extern TexChunk
* RightHeaderEven
;
316 extern TexChunk
* RightFooterEven
;
317 extern wxChar
* PageStyle
;
319 // Repeat the currentSection, either real (Chapter) or simulated (References)
320 extern void OutputCurrentSection(void);
321 extern void OutputCurrentSectionToString(wxChar
*buf
);
322 extern void OutputChunkToString(TexChunk
*chunk
, wxChar
*buf
);
324 // Called by Tex2Any to simulate a section
325 extern void FakeCurrentSection(wxChar
*fakeSection
, bool addToContents
= true);
328 * Local to Tex2Any library
332 extern wxChar
*currentArgData
;
333 extern bool haveArgData
; // If true, we're simulating the data.
334 void StartSimulateArgument(wxChar
*data
);
335 void EndSimulateArgument(void);
342 // Called on start/end of macro examination
343 void OnMacro(int macroId
, int no_args
, bool start
);
345 // Called on start/end of argument examination.
346 // Return true at the start of an argument to traverse
347 // (output) the argument.
348 bool OnArgument(int macroId
, int arg_no
, bool start
);
350 // Default: library-defined
351 void DefaultOnMacro(int macroId
, int no_args
, bool start
);
353 // Default: library-defined
354 bool DefaultOnArgument(int macroId
, int arg_no
, bool start
);
357 void OnError(const wxChar
*msg
);
359 // Called for information
360 void OnInform(const wxChar
*msg
);
362 // Special yield wrapper
363 void Tex2RTFYield(bool force
= false);
370 // Look for \label macro, use this ref name if found or
371 // make up a topic name otherwise.
372 wxChar
*FindTopicName(TexChunk
*chunk
);
373 // Force the current topic to be this (e.g. force 'references' label).
374 void ForceTopicName(const wxChar
*name
);
375 void ResetTopicCounter(void);
377 // Parse unit eg. 14, 12pt, 34cm and return value in points.
378 int ParseUnitArgument(wxChar
*unitArg
);
380 // Set small, large, normal etc. point sizes for reference size
381 void SetFontSizes(int pointSize
);
384 * Strip off any extension (dot something) from end of file,
385 * IF one exists. Inserts zero into buffer.
389 void StripExtension(wxChar
*buffer
);
392 * Reference structure
396 class TexRef
: public wxObject
399 wxChar
*refLabel
; // Reference label
400 wxChar
*refFile
; // Reference filename (can be NULL)
401 wxChar
*sectionNumber
; // Section or figure number (as a string)
402 wxChar
*sectionName
; // name e.g. 'section'
403 TexRef(const wxChar
*label
, const wxChar
*file
, const wxChar
*section
, const wxChar
*sectionN
= NULL
);
412 void AddTexRef(wxChar
*name
, wxChar
*file
= NULL
, wxChar
*sectionName
= NULL
,
413 int chapter
= 0, int section
= 0, int subsection
= 0, int subsubsection
= 0);
416 * Read and write reference file (.ref), to resolve refs for second pass.
419 void WriteTexReferences(wxChar
*filename
);
420 void ReadTexReferences(wxChar
*filename
);
427 class BibEntry
: public wxObject
433 * book, inbook, article, phdthesis, inproceedings, techreport
455 wxChar
*organization
;
458 inline BibEntry(void)
481 extern wxList BibList
;
482 extern wxStringList CitationList
;
484 bool ReadBib(wxChar
*filename
);
485 void OutputBib(void);
486 void ResolveBibReferences(void);
487 void AddCitation(wxChar
*citeKey
);
488 TexRef
*FindReference(wxChar
*key
);
491 * Ability to customize, or at least suppress unknown macro errors
495 extern wxList CustomMacroList
;
497 #define CUSTOM_MACRO_IGNORE 0
498 #define CUSTOM_MACRO_OUTPUT 1
499 #define CUSTOM_MACRO_MARK 2
501 class CustomMacro
: public wxObject
507 inline CustomMacro(wxChar
*name
, int args
, wxChar
*body
)
510 macroName
= wxStrcpy(new wxChar
[wxStrlen(name
) + 1], name
);
512 macroBody
= wxStrcpy(new wxChar
[wxStrlen(body
) + 1], body
);
519 bool ReadCustomMacros(wxChar
*filename
);
520 void ShowCustomMacros(void);
521 CustomMacro
*FindCustomMacro(wxChar
*name
);
522 wxChar
*ParseMultifieldString(wxChar
*s
, int *pos
);
529 class ColourTableEntry
: public wxObject
537 ColourTableEntry(const wxChar
*theName
, unsigned int r
, unsigned int g
, unsigned int b
);
538 ~ColourTableEntry(void);
541 extern wxList ColourTable
;
542 extern void AddColour(const wxChar
*theName
, unsigned int r
, unsigned int g
, unsigned int b
);
543 extern int FindColourPosition(wxChar
*theName
);
544 // Converts e.g. "red" -> "#FF0000"
545 extern bool FindColourHTMLString(wxChar
*theName
, wxChar
*buf
);
546 extern void InitialiseColourTable(void);
549 #define ltADDCONTENTSLINE 2
550 #define ltADDTOCOUNTER 3
558 #define ltBACKSLASH 30
559 #define ltBASELINESKIP 31
562 #define ltBIBLIOGRAPHYSTYLE 34
563 #define ltBIBLIOGRAPHY 35
565 #define ltBACKSLASHRAW 37
566 #define ltBACKGROUND 38
567 #define ltBACKGROUNDCOLOUR 39
568 #define ltBACKGROUNDIMAGE 40
571 #define ltCAPTIONSTAR 50
574 #define ltCENTERLINE 53
575 #define ltCENTERING 54
577 #define ltCEXTRACT 56
578 #define ltCHAPTERHEADING 57
579 #define ltCHAPTERSTAR 58
584 #define ltCLEARDOUBLEPAGE 63
585 #define ltCLEARPAGE 64
587 #define ltCLIPSFUNC 66
588 #define ltCOLUMNSEP 67
590 #define ltCOPYRIGHT 69
596 #define ltCHAPTERHEADINGSTAR 73
599 #define ltDESCRIPTION 91
600 #define ltDESTRUCT 92
601 #define ltDOCUMENTSTYLE 93
602 #define ltDOCUMENT 94
603 #define ltDOUBLESPACE 95
604 #define ltDEFINECOLOUR 96
605 #define ltDEFINECOLOR 97
608 #define ltENUMERATE 121
609 #define ltEQUATION 122
610 #define ltEVENSIDEMARGIN 123
614 #define ltFLUSHLEFT 152
615 #define ltFLUSHRIGHT 153
616 #define ltFOOTHEIGHT 154
617 #define ltFOOTNOTE 155
618 #define ltFOOTSKIP 156
619 #define ltFRAMEBOX 157
620 #define ltFUNCTIONSECTION 158
622 #define ltFIGURESTAR 160
623 #define ltFOOTNOTESIZE 161
624 #define ltFOOTNOTEPOPUP 162
625 #define ltFANCYPLAIN 163
628 #define ltFOLLOWEDLINKCOLOUR 166
630 #define ltGLOSSARY 180
633 #define ltHEADHEIGHT 200
634 #define ltHELPGLOSSARY 201
635 #define ltHELPIGNORE 202
636 #define ltHELPONLY 203
637 #define ltHELPINPUT 204
638 #define ltHELPFONTFAMILY 205
639 #define ltHELPFONTSIZE 206
640 #define ltHELPREFN 207
641 #define ltHELPREF 208
645 #define ltHSPACESTAR 212
647 #define ltHSKIPSTAR 214
652 #define ltHTMLIGNORE 219
653 #define ltHTMLONLY 220
655 #define ltINCLUDEONLY 240
656 #define ltINCLUDE 241
659 #define ltITEMIZE 244
663 #define ltITEMSEP 248
664 #define ltINDENTED 249
665 #define ltIMAGEMAP 250
668 #define ltINSERTATLEVEL 253
679 #define ltLINEBREAK 287
680 #define ltLISTOFFIGURES 288
681 #define ltLISTOFTABLES 289
684 #define ltLATEXIGNORE 292
685 #define ltLATEXONLY 293
686 #define ltLOWERCASE 294
687 #define ltLBRACERAW 295
688 #define ltLINKCOLOUR 296
690 #define ltMAKEGLOSSARY 300
691 #define ltMAKEINDEX 301
692 #define ltMAKETITLE 302
693 #define ltMARKRIGHT 303
694 #define ltMARKBOTH 304
695 #define ltMARGINPARWIDTH 305
696 #define ltMARGINPAR 306
697 #define ltMARGINPARODD 307
698 #define ltMARGINPAREVEN 308
700 #define ltMEMBERSECTION 310
702 #define ltMULTICOLUMN 312
703 #define ltMARGINPARSEP 313
705 #define ltNEWCOUNTER 330
706 #define ltNEWLINE 331
707 #define ltNEWPAGE 332
709 #define ltNOINDENT 334
710 #define ltNOLINEBREAK 335
711 #define ltNOPAGEBREAK 336
712 #define ltNORMALSIZE 337
713 #define ltNORMALBOX 338
714 #define ltNORMALBOXD 339
715 #define ltNUMBEREDBIBITEM 340
717 #define ltONECOLUMN 360
718 #define ltODDSIDEMARGIN 361
720 #define ltPAGEBREAK 380
721 #define ltPAGEREF 381
722 #define ltPAGESTYLE 382
723 #define ltPAGENUMBERING 383
724 #define ltPARAGRAPHSTAR 384
725 #define ltPARAGRAPH 385
727 #define ltPARINDENT 387
728 #define ltPARSKIP 388
729 #define ltPARTSTAR 389
733 #define ltPICTURE 393
736 #define ltPRINTINDEX 396
737 #define ltPSBOXTO 397
739 #define ltPOPREFONLY 399
742 #define ltQUOTATION 421
744 #define ltRAGGEDBOTTOM 440
745 #define ltRAGGEDLEFT 441
746 #define ltRAGGEDRIGHT 442
753 #define ltRULEDROW 449
758 #define ltRTFIGNORE 454
759 #define ltRTFONLY 455
760 #define ltRBRACERAW 456
761 #define ltREGISTERED 457
764 #define ltSECTIONHEADING 471
765 #define ltSECTIONSTAR 472
766 #define ltSECTION 473
767 #define ltSETCOUNTER 474
769 #define ltSHORTCITE 476
770 #define ltSINGLESPACE 477
771 #define ltSLOPPYPAR 478
775 #define ltSUBITEM 482
776 #define ltSUBPARAGRAPHSTAR 483
777 #define ltSUBPARAGRAPH 484
778 #define ltSPECIAL 485
779 #define ltSUBSECTIONSTAR 486
780 #define ltSUBSECTION 487
781 #define ltSUBSUBSECTIONSTAR 488
782 #define ltSUBSUBSECTION 489
783 #define ltSCRIPTSIZE 490
784 #define ltSETHEADER 491
785 #define ltSETFOOTER 492
786 #define ltSIZEDBOX 493
787 #define ltSIZEDBOXD 494
788 #define ltSECTIONHEADINGSTAR 495
790 #define ltSETHOTSPOTCOLOUR 497
791 #define ltSETHOTSPOTCOLOR 498
792 #define ltSETHOTSPOTUNDERLINE 499
793 #define ltSETTRANSPARENCY 500
795 #define ltTABBING 510
796 #define ltTABLEOFCONTENTS 511
798 #define ltTABULAR 513
801 #define ltTEXTWIDTH 516
802 #define ltTEXTHEIGHT 517
803 #define ltTHEBIBLIOGRAPHY 518
804 #define ltTITLEPAGE 519
808 #define ltTOPMARGIN 523
809 #define ltTOPSKIP 524
812 #define ltTYPEOUT 527
813 #define ltTWOCOLUMN 528
814 #define ltTHEPAGE 529
815 #define ltTHECHAPTER 530
816 #define ltTHESECTION 531
817 #define ltTHISPAGESTYLE 532
819 #define ltTWOCOLWIDTHA 533
820 #define ltTWOCOLWIDTHB 534
821 #define ltTWOCOLSPACING 535
822 #define ltTWOCOLITEM 536
823 #define ltTWOCOLITEMRULED 537
824 #define ltTWOCOLLIST 538
825 #define ltTEXTCOLOUR 539
827 #define ltUNDERLINE 550
829 #define ltUPPERCASE 552
830 #define ltUSEPACKAGE 553
833 #define ltVERBATIMINPUT 571
834 #define ltVERBATIM 572
841 #define ltVSPACESTAR 579
842 #define ltVSKIPSTAR 580
845 #define ltVERBSTAR 583
847 #define ltWXCLIPS 600
848 #define ltWINHELPIGNORE 601
849 #define ltWINHELPONLY 602
851 #define ltXLPIGNORE 603
852 #define ltXLPONLY 604
855 #define ltBACKSLASHCHAR 621
857 #define ltFORWARDSLASH 623
858 #define ltUNDERSCORE 624
859 #define ltAMPERSAND 625
860 #define ltPERCENT 626
863 #define ltLPARENTH 629
864 #define ltRPARENTH 630
868 #define ltRANGLEBRA 634
869 #define ltLANGLEBRA 635
872 #define ltSINGLEQUOTE 638
873 #define ltBACKQUOTE 639
875 #define ltAT_SYMBOL 641
877 // Characters, not macros but with special Latex significance
878 #define ltSPECIALDOLLAR 660
879 #define ltSPECIALDOUBLEDOLLAR 661
880 #define ltSPECIALTILDE 662
881 #define ltSPECIALHASH 663
882 #define ltSPECIALAMPERSAND 664
883 #define ltSUPERTABULAR 665
886 #define ltACCENT_GRAVE 700
887 #define ltACCENT_ACUTE 701
888 #define ltACCENT_CARET 702
889 #define ltACCENT_UMLAUT 703
890 #define ltACCENT_TILDE 704
891 #define ltACCENT_DOT 705
892 #define ltACCENT_CADILLA 706
899 #define ltEPSILON 804
900 #define ltVAREPSILON 805
904 #define ltVARTHETA 809
916 #define ltVARSIGMA 821
918 #define ltUPSILON 823
925 #define ltCAP_GAMMA 830
926 #define ltCAP_DELTA 831
927 #define ltCAP_THETA 832
928 #define ltCAP_LAMBDA 833
931 #define ltCAP_SIGMA 836
932 #define ltCAP_UPSILON 837
933 #define ltCAP_PHI 838
934 #define ltCAP_PSI 839
935 #define ltCAP_OMEGA 840
937 // Binary operation symbols
942 #define ltSUBSETEQ 854
943 #define ltSQSUBSET 855
944 #define ltSQSUBSETEQ 856
952 #define ltSUPSETEQ 864
953 #define ltSQSUPSET 865
954 #define ltSQSUPSETEQ 866
966 #define ltPARALLEL 878
977 // Negated relation symbols (selected)
980 #define ltNOTSUBSET 892
983 #define ltLEFTARROW 900
984 #define ltLEFTARROW2 901
985 #define ltRIGHTARROW 902
986 #define ltRIGHTARROW2 903
987 #define ltLEFTRIGHTARROW 904
988 #define ltLEFTRIGHTARROW2 905
989 #define ltUPARROW 906
990 #define ltUPARROW2 907
991 #define ltDOWNARROW 908
992 #define ltDOWNARROW2 909
994 // Miscellaneous symbols
999 #define ltEMPTYSET 1004
1000 #define ltNABLA 1005
1002 #define ltPARTIAL 1007
1004 #define ltFORALL 1009
1005 #define ltEXISTS 1010
1007 #define ltSHARP 1012
1008 #define ltANGLE 1013
1009 #define ltTRIANGLE 1014
1010 #define ltCLUBSUIT 1015
1011 #define ltDIAMONDSUIT 1016
1012 #define ltHEARTSUIT 1017
1013 #define ltSPADESUIT 1018
1014 #define ltINFTY 1019
1016 // Binary operation symbols
1019 #define ltTIMES 1032
1027 #define ltWEDGE 1040
1029 #define ltBULLET 1042
1030 #define ltDIAMOND 1043
1031 #define ltOSLASH 1044
1033 #define ltDIAMOND2 1046
1034 #define ltBIGTRIANGLEDOWN 1047
1035 #define ltOPLUS 1048
1036 #define ltOTIMES 1049
1039 #define ltRMFAMILY 1200
1040 #define ltSFFAMILY 1201
1041 #define ltTTFAMILY 1202
1042 #define ltBFSERIES 1203
1043 #define ltITSHAPE 1204
1044 #define ltSLSHAPE 1205
1045 #define ltSCSHAPE 1206
1047 #define ltMDSERIES 1207
1048 #define ltUPSHAPE 1208
1050 #define ltTEXTRM 1209
1051 #define ltTEXTSF 1210
1052 #define ltTEXTTT 1211
1053 #define ltTEXTBF 1212
1054 #define ltTEXTIT 1213
1055 #define ltTEXTSL 1214
1056 #define ltTEXTSC 1215
1059 #define ltDOCUMENTCLASS 1217
1062 #define ltSMALLSPACE1 1250
1063 #define ltSMALLSPACE2 1251
1066 #define ltTOPLEVEL 15000
1067 #define ltCUSTOM_MACRO 15001
1068 #define ltSOLO_BLOCK 15002