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"
17 #include "wx/wfstream.h"
18 #include "wx/txtstrm.h"
31 * We have a list of macro definitions which we must define
32 * in advance to enable the parsing to recognize macros.
37 #define FORBID_ABSOLUTELY 2
41 const unsigned long MAX_LINE_BUFFER_SIZE
= 600;
43 const unsigned long MAX_LINE_BUFFER_SIZE
= 11000;
46 class TexMacroDef
: public wxObject
55 TexMacroDef(int the_id
, const wxChar
*the_name
, int n
, bool ig
, bool forbidLevel
= FORBID_OK
);
56 virtual ~TexMacroDef(void);
59 #define CHUNK_TYPE_MACRO 1
60 #define CHUNK_TYPE_ARG 2
61 #define CHUNK_TYPE_STRING 3
64 We have nested lists to represent the Tex document.
65 Each element of a list of chunks can be one of:
67 - a macro with/without arguments. Arguments are lists of TexChunks.
69 Example (\toplevel is implicit but made explicit here):
71 AddMacroDef(ltMYMAT, "mymat", 2);
73 \toplevel{The cat sat on the \mymat{very coarse and {\it cheap}}{mat}}.
77 TexChunk: type = macro, name = toplevel, no_args = 1
80 TexChunk: type = argument
83 TexChunk: type = string, value = "The cat sat on the "
84 TexChunk: type = macro, name = mymat, no_args = 2
87 TexChunk: type = argument
90 TexChunk: type = string, value = "very coarse and "
91 TexChunk: type = macro, name = it, no_args = 1
94 TexChunk: type = argument
97 TexChunk: type = string, value = "cheap"
99 TexChunk: type = argument
102 TexChunk: type = string, value = mat
115 bool optional
; // Is an optional argument
118 TexChunk(int the_type
, TexMacroDef
*the_def
= NULL
);
119 TexChunk(TexChunk
& toCopy
);
120 virtual ~TexChunk(void);
123 // Represents a topic, used for generating a table of contents file (.cnt).
124 // Also for storing keywords found in a topic, a list of which is then inserted
125 // into the topic in the next pass.
126 class TexTopic
: public wxObject
129 // This flag is set to indicate that the topic has children.
130 // If this is the case, we know to insert a 'book' icon at this level,
131 // not just a 'page' icon. We don't want to have to open a book only
132 // to find there's only one page in it. We might force a book to be used if
133 // a top-level topic has no children (?)
136 wxStringList
*keywords
;
137 TexTopic(wxChar
*f
= NULL
);
138 virtual ~TexTopic(void);
140 extern wxHashTable TopicTable
;
141 void AddKeyWordForTopic(wxChar
*topic
, wxChar
*entry
, wxChar
*filename
= NULL
);
142 void ClearKeyWordTable(void);
144 extern wxChar wxTex2RTFBuffer
[];
145 extern TexChunk
*TopLevel
;
146 extern wxHashTable MacroDefs
;
147 extern wxStringList IgnorableInputFiles
; // Ignorable \input files, e.g. psbox.tex
149 bool read_a_line(wxChar
*buf
);
150 bool TexLoadFile(const wxString
& filename
);
151 int ParseArg(TexChunk
*thisArg
, wxList
& children
, wxChar
*buffer
, int pos
,
152 wxChar
*environment
= NULL
, bool parseArgToBrace
= true, TexChunk
*customMacroArgs
= NULL
);
153 int ParseMacroBody(const wxChar
*macro_name
, TexChunk
*parent
, int no_args
,
154 wxChar
*buffer
, int pos
, wxChar
*environment
= NULL
, bool parseArgToBrace
= true, TexChunk
*customMacroArgs
= NULL
);
155 void TraverseDocument(void);
156 void TraverseFromChunk(TexChunk
*chunk
, wxNode
*thisNode
= NULL
, bool childrenOnly
= false);
157 #define TraverseChildrenFromChunk(arg) TraverseFromChunk(arg, NULL, true)
158 void SetCurrentOutput(FILE *fd
);
159 void SetCurrentOutputs(FILE *fd1
, FILE *fd2
);
160 extern FILE *CurrentOutput1
;
161 extern FILE *CurrentOutput2
;
162 void AddMacroDef(int the_id
, const wxChar
*name
, int n
, bool ignore
= false, bool forbidden
= false);
163 void TexInitialize(int bufSize
);
164 void TexCleanUp(void);
165 void TexOutput(const wxChar
*s
, bool ordinaryText
= false);
166 wxChar
*GetArgData(TexChunk
*chunk
);
167 wxChar
*GetArgData(void); // Get the string for the current argument
168 int GetNoArgs(void); // Get the number of arguments for the current macro
169 TexChunk
*GetArgChunk(void); // Get the chunk for the current argument
170 TexChunk
*GetTopLevelChunk(void); // Get the chunk for the top level
171 TexChunk
*GetNextChunk(void); // Look ahead to the next chunk
172 bool IsArgOptional(void); // Is this argument an optional argument?
173 void DefineDefaultMacros(void); // Optional set of default macros
174 int GetCurrentColumn(void); // number of characters on current line
175 wxChar
*ConvertCase(wxChar
*s
); // Convert case, according to upperCaseNames setting.
176 extern wxPathList TexPathList
; // Path list, can be used for file searching.
178 extern bool StringMatch(const wxChar
*one
, const wxChar
*two
, bool subString
= true, bool exact
= false);
180 // Define a variable value from the .ini file
181 wxChar
*RegisterSetting(const wxString
& settingName
, const wxString
& settingValue
, bool interactive
= true);
183 // Major document styles
184 #define LATEX_REPORT 1
185 #define LATEX_ARTICLE 2
186 #define LATEX_LETTER 3
188 #define LATEX_SLIDES 5
190 extern TexChunk
*DocumentTitle
;
191 extern TexChunk
*DocumentAuthor
;
192 extern TexChunk
*DocumentDate
;
193 extern int DocumentStyle
;
194 extern int MinorDocumentStyle
;
195 extern wxChar
*BibliographyStyleString
;
196 extern wxChar
*DocumentStyleString
;
197 extern wxChar
*MinorDocumentStyleString
;
199 extern int normalFont
;
200 extern int smallFont
;
202 extern int largeFont1
;
203 extern int LargeFont2
;
204 extern int LARGEFont3
;
205 extern int hugeFont1
;
206 extern int HugeFont2
;
207 extern int HUGEFont3
;
210 * USER-ADJUSTABLE SETTINGS
214 // Section font sizes
215 extern int chapterFont
;
216 extern int sectionFont
;
217 extern int subsectionFont
;
218 extern int titleFont
;
219 extern int authorFont
;
220 extern bool winHelp
; // Output in Windows Help format if true, linear otherwise
221 extern bool isInteractive
;
222 extern bool runTwice
;
223 extern int convertMode
;
224 extern bool checkCurlyBraces
;
225 extern bool checkSyntax
;
226 extern bool stopRunning
;
227 extern int mirrorMargins
;
228 extern bool headerRule
;
229 extern bool footerRule
;
230 extern int labelIndentTab
; // From left indent to item label (points)
231 extern int itemIndentTab
; // From left indent to item (points)
232 extern bool useUpButton
;
233 extern int htmlBrowseButtons
;
234 extern bool useHeadingStyles
; // Insert \s1, s2 etc.
235 extern bool useWord
; // Insert Word table of contents, etc. etc.
236 extern bool indexSubsections
; // put subsections in index
237 extern bool compatibilityMode
;
238 extern bool generateHPJ
; // Generate WinHelp HPJ file
239 extern wxChar
*winHelpTitle
; // Title for Windows Help file
240 extern int defaultTableColumnWidth
;
241 extern wxChar
*bitmapMethod
;
242 extern bool truncateFilenames
; // Truncate for DOS
243 extern int winHelpVersion
; // Version e.g. 4 for Win95
244 extern bool winHelpContents
; // Generate .cnt file
245 extern bool htmlIndex
; // Generate .htx HTML index file
246 extern bool htmlFrameContents
; // Use frames for HTML contents page
247 extern wxChar
*htmlStylesheet
; // Use this CSS stylesheet for HTML pages
248 extern int contentsDepth
; // Depth of contents for linear RTF files
249 extern bool upperCaseNames
; // Filenames; default is lower case
250 extern wxChar
*backgroundImageString
; // HTML background image
251 extern wxChar
*backgroundColourString
; // HTML background colour
252 extern wxChar
*textColourString
; // HTML text colour
253 extern wxChar
*linkColourString
; // HTML link colour
254 extern wxChar
*followedLinkColourString
; // HTML followed link colour
255 extern bool combineSubSections
; // Stop splitting files below section
256 extern bool htmlWorkshopFiles
; // generate HTML Help Workshop project files
257 extern bool ignoreBadRefs
; // Don't insert (REF NOT FOUND)
258 extern wxChar
*htmlFaceName
; // HTML face name
260 // Names to help with internationalisation
261 extern wxChar
*ContentsNameString
;
262 extern wxChar
*AbstractNameString
;
263 extern wxChar
*GlossaryNameString
;
264 extern wxChar
*ReferencesNameString
;
265 extern wxChar
*FiguresNameString
;
266 extern wxChar
*TablesNameString
;
267 extern wxChar
*FigureNameString
;
268 extern wxChar
*TableNameString
;
269 extern wxChar
*IndexNameString
;
270 extern wxChar
*ChapterNameString
;
271 extern wxChar
*SectionNameString
;
272 extern wxChar
*SubsectionNameString
;
273 extern wxChar
*SubsubsectionNameString
;
274 extern wxChar
*UpNameString
;
277 * HTML button identifiers: what kind of browse buttons
278 * are placed in HTML files, if any.
282 #define HTML_BUTTONS_NONE 0
283 #define HTML_BUTTONS_BITMAP 1
284 #define HTML_BUTTONS_TEXT 2
291 extern int chapterNo
;
292 extern int sectionNo
;
293 extern int subsectionNo
;
294 extern int subsubsectionNo
;
299 extern int ParIndent
;
303 // Set by client and by Tex2Any
304 extern TexChunk
*currentSection
;
306 // Header/footers/pagestyle
307 extern TexChunk
* LeftHeaderOdd
;
308 extern TexChunk
* LeftFooterOdd
;
309 extern TexChunk
* CentreHeaderOdd
;
310 extern TexChunk
* CentreFooterOdd
;
311 extern TexChunk
* RightHeaderOdd
;
312 extern TexChunk
* RightFooterOdd
;
313 extern TexChunk
* LeftHeaderEven
;
314 extern TexChunk
* LeftFooterEven
;
315 extern TexChunk
* CentreHeaderEven
;
316 extern TexChunk
* CentreFooterEven
;
317 extern TexChunk
* RightHeaderEven
;
318 extern TexChunk
* RightFooterEven
;
319 extern wxChar
* PageStyle
;
321 // Repeat the currentSection, either real (Chapter) or simulated (References)
322 extern void OutputCurrentSection(void);
323 extern void OutputCurrentSectionToString(wxChar
*buf
);
324 extern void OutputChunkToString(TexChunk
*chunk
, wxChar
*buf
);
326 // Called by Tex2Any to simulate a section
327 extern void FakeCurrentSection(wxChar
*fakeSection
, bool addToContents
= true);
330 * Local to Tex2Any library
334 extern wxChar
*currentArgData
;
335 extern bool haveArgData
; // If true, we're simulating the data.
336 void StartSimulateArgument(wxChar
*data
);
337 void EndSimulateArgument(void);
344 // Called on start/end of macro examination
345 void OnMacro(int macroId
, int no_args
, bool start
);
347 // Called on start/end of argument examination.
348 // Return true at the start of an argument to traverse
349 // (output) the argument.
350 bool OnArgument(int macroId
, int arg_no
, bool start
);
352 // Default: library-defined
353 void DefaultOnMacro(int macroId
, int no_args
, bool start
);
355 // Default: library-defined
356 bool DefaultOnArgument(int macroId
, int arg_no
, bool start
);
359 void OnError(const wxChar
*msg
);
361 // Called for information
362 void OnInform(const wxChar
*msg
);
364 // Special yield wrapper
365 void Tex2RTFYield(bool force
= false);
372 // Look for \label macro, use this ref name if found or
373 // make up a topic name otherwise.
374 wxChar
*FindTopicName(TexChunk
*chunk
);
375 // Force the current topic to be this (e.g. force 'references' label).
376 void ForceTopicName(const wxChar
*name
);
377 void ResetTopicCounter(void);
379 // Parse unit eg. 14, 12pt, 34cm and return value in points.
380 int ParseUnitArgument(wxChar
*unitArg
);
382 // Set small, large, normal etc. point sizes for reference size
383 void SetFontSizes(int pointSize
);
386 * Strip off any extension (dot something) from end of file,
387 * IF one exists. Inserts zero into buffer.
391 void StripExtension(wxChar
*buffer
);
394 * Reference structure
398 class TexRef
: public wxObject
401 wxChar
*refLabel
; // Reference label
402 wxChar
*refFile
; // Reference filename (can be NULL)
403 wxChar
*sectionNumber
; // Section or figure number (as a string)
404 wxChar
*sectionName
; // name e.g. 'section'
405 TexRef(const wxChar
*label
, const wxChar
*file
, const wxChar
*section
, const wxChar
*sectionN
= NULL
);
406 virtual ~TexRef(void);
414 void AddTexRef(wxChar
*name
, wxChar
*file
= NULL
, wxChar
*sectionName
= NULL
,
415 int chapter
= 0, int section
= 0, int subsection
= 0, int subsubsection
= 0);
418 * Read and write reference file (.ref), to resolve refs for second pass.
421 void WriteTexReferences(wxChar
*filename
);
422 void ReadTexReferences(wxChar
*filename
);
429 class BibEntry
: public wxObject
435 * book, inbook, article, phdthesis, inproceedings, techreport
457 wxChar
*organization
;
460 inline BibEntry(void)
483 extern wxList BibList
;
484 extern wxStringList CitationList
;
486 bool ReadBib(wxChar
*filename
);
487 void OutputBib(void);
488 void ResolveBibReferences(void);
489 void AddCitation(wxChar
*citeKey
);
490 TexRef
*FindReference(wxChar
*key
);
493 * Ability to customize, or at least suppress unknown macro errors
497 extern wxList CustomMacroList
;
499 #define CUSTOM_MACRO_IGNORE 0
500 #define CUSTOM_MACRO_OUTPUT 1
501 #define CUSTOM_MACRO_MARK 2
503 class CustomMacro
: public wxObject
509 inline CustomMacro(const wxChar
*name
, int args
, wxChar
*body
)
512 macroName
= wxStrcpy(new wxChar
[wxStrlen(name
) + 1], name
);
514 macroBody
= wxStrcpy(new wxChar
[wxStrlen(body
) + 1], body
);
518 virtual ~CustomMacro();
521 bool ReadCustomMacros(const wxString
& filename
);
522 void ShowCustomMacros(void);
523 CustomMacro
*FindCustomMacro(wxChar
*name
);
524 wxChar
*ParseMultifieldString(wxChar
*s
, int *pos
);
531 class ColourTableEntry
: public wxObject
539 ColourTableEntry(const wxChar
*theName
, unsigned int r
, unsigned int g
, unsigned int b
);
540 virtual ~ColourTableEntry(void);
543 extern wxList ColourTable
;
544 extern void AddColour(const wxChar
*theName
, unsigned int r
, unsigned int g
, unsigned int b
);
545 extern int FindColourPosition(wxChar
*theName
);
546 // Converts e.g. "red" -> "#FF0000"
547 extern bool FindColourHTMLString(wxChar
*theName
, wxChar
*buf
);
548 extern void InitialiseColourTable(void);
551 #define ltADDCONTENTSLINE 2
552 #define ltADDTOCOUNTER 3
560 #define ltBACKSLASH 30
561 #define ltBASELINESKIP 31
564 #define ltBIBLIOGRAPHYSTYLE 34
565 #define ltBIBLIOGRAPHY 35
567 #define ltBACKSLASHRAW 37
568 #define ltBACKGROUND 38
569 #define ltBACKGROUNDCOLOUR 39
570 #define ltBACKGROUNDIMAGE 40
573 #define ltCAPTIONSTAR 50
576 #define ltCENTERLINE 53
577 #define ltCENTERING 54
579 #define ltCEXTRACT 56
580 #define ltCHAPTERHEADING 57
581 #define ltCHAPTERSTAR 58
586 #define ltCLEARDOUBLEPAGE 63
587 #define ltCLEARPAGE 64
589 #define ltCLIPSFUNC 66
590 #define ltCOLUMNSEP 67
592 #define ltCOPYRIGHT 69
598 #define ltCHAPTERHEADINGSTAR 73
601 #define ltDESCRIPTION 91
602 #define ltDESTRUCT 92
603 #define ltDOCUMENTSTYLE 93
604 #define ltDOCUMENT 94
605 #define ltDOUBLESPACE 95
606 #define ltDEFINECOLOUR 96
607 #define ltDEFINECOLOR 97
610 #define ltENUMERATE 121
611 #define ltEQUATION 122
612 #define ltEVENSIDEMARGIN 123
616 #define ltFLUSHLEFT 152
617 #define ltFLUSHRIGHT 153
618 #define ltFOOTHEIGHT 154
619 #define ltFOOTNOTE 155
620 #define ltFOOTSKIP 156
621 #define ltFRAMEBOX 157
622 #define ltFUNCTIONSECTION 158
624 #define ltFIGURESTAR 160
625 #define ltFOOTNOTESIZE 161
626 #define ltFOOTNOTEPOPUP 162
627 #define ltFANCYPLAIN 163
630 #define ltFOLLOWEDLINKCOLOUR 166
632 #define ltGLOSSARY 180
635 #define ltHEADHEIGHT 200
636 #define ltHELPGLOSSARY 201
637 #define ltHELPIGNORE 202
638 #define ltHELPONLY 203
639 #define ltHELPINPUT 204
640 #define ltHELPFONTFAMILY 205
641 #define ltHELPFONTSIZE 206
642 #define ltHELPREFN 207
643 #define ltHELPREF 208
647 #define ltHSPACESTAR 212
649 #define ltHSKIPSTAR 214
654 #define ltHTMLIGNORE 219
655 #define ltHTMLONLY 220
657 #define ltINCLUDEONLY 240
658 #define ltINCLUDE 241
661 #define ltITEMIZE 244
665 #define ltITEMSEP 248
666 #define ltINDENTED 249
667 #define ltIMAGEMAP 250
670 #define ltINSERTATLEVEL 253
681 #define ltLINEBREAK 287
682 #define ltLISTOFFIGURES 288
683 #define ltLISTOFTABLES 289
686 #define ltLATEXIGNORE 292
687 #define ltLATEXONLY 293
688 #define ltLOWERCASE 294
689 #define ltLBRACERAW 295
690 #define ltLINKCOLOUR 296
692 #define ltMAKEGLOSSARY 300
693 #define ltMAKEINDEX 301
694 #define ltMAKETITLE 302
695 #define ltMARKRIGHT 303
696 #define ltMARKBOTH 304
697 #define ltMARGINPARWIDTH 305
698 #define ltMARGINPAR 306
699 #define ltMARGINPARODD 307
700 #define ltMARGINPAREVEN 308
702 #define ltMEMBERSECTION 310
704 #define ltMULTICOLUMN 312
705 #define ltMARGINPARSEP 313
707 #define ltNEWCOUNTER 330
708 #define ltNEWLINE 331
709 #define ltNEWPAGE 332
711 #define ltNOINDENT 334
712 #define ltNOLINEBREAK 335
713 #define ltNOPAGEBREAK 336
714 #define ltNORMALSIZE 337
715 #define ltNORMALBOX 338
716 #define ltNORMALBOXD 339
717 #define ltNUMBEREDBIBITEM 340
719 #define ltONECOLUMN 360
720 #define ltODDSIDEMARGIN 361
722 #define ltPAGEBREAK 380
723 #define ltPAGEREF 381
724 #define ltPAGESTYLE 382
725 #define ltPAGENUMBERING 383
726 #define ltPARAGRAPHSTAR 384
727 #define ltPARAGRAPH 385
729 #define ltPARINDENT 387
730 #define ltPARSKIP 388
731 #define ltPARTSTAR 389
735 #define ltPICTURE 393
738 #define ltPRINTINDEX 396
739 #define ltPSBOXTO 397
741 #define ltPOPREFONLY 399
744 #define ltQUOTATION 421
746 #define ltRAGGEDBOTTOM 440
747 #define ltRAGGEDLEFT 441
748 #define ltRAGGEDRIGHT 442
755 #define ltRULEDROW 449
760 #define ltRTFIGNORE 454
761 #define ltRTFONLY 455
762 #define ltRBRACERAW 456
763 #define ltREGISTERED 457
766 #define ltSECTIONHEADING 471
767 #define ltSECTIONSTAR 472
768 #define ltSECTION 473
769 #define ltSETCOUNTER 474
771 #define ltSHORTCITE 476
772 #define ltSINGLESPACE 477
773 #define ltSLOPPYPAR 478
777 #define ltSUBITEM 482
778 #define ltSUBPARAGRAPHSTAR 483
779 #define ltSUBPARAGRAPH 484
780 #define ltSPECIAL 485
781 #define ltSUBSECTIONSTAR 486
782 #define ltSUBSECTION 487
783 #define ltSUBSUBSECTIONSTAR 488
784 #define ltSUBSUBSECTION 489
785 #define ltSCRIPTSIZE 490
786 #define ltSETHEADER 491
787 #define ltSETFOOTER 492
788 #define ltSIZEDBOX 493
789 #define ltSIZEDBOXD 494
790 #define ltSECTIONHEADINGSTAR 495
792 #define ltSETHOTSPOTCOLOUR 497
793 #define ltSETHOTSPOTCOLOR 498
794 #define ltSETHOTSPOTUNDERLINE 499
795 #define ltSETTRANSPARENCY 500
797 #define ltTABBING 510
798 #define ltTABLEOFCONTENTS 511
800 #define ltTABULAR 513
803 #define ltTEXTWIDTH 516
804 #define ltTEXTHEIGHT 517
805 #define ltTHEBIBLIOGRAPHY 518
806 #define ltTITLEPAGE 519
810 #define ltTOPMARGIN 523
811 #define ltTOPSKIP 524
814 #define ltTYPEOUT 527
815 #define ltTWOCOLUMN 528
816 #define ltTHEPAGE 529
817 #define ltTHECHAPTER 530
818 #define ltTHESECTION 531
819 #define ltTHISPAGESTYLE 532
821 #define ltTWOCOLWIDTHA 533
822 #define ltTWOCOLWIDTHB 534
823 #define ltTWOCOLSPACING 535
824 #define ltTWOCOLITEM 536
825 #define ltTWOCOLITEMRULED 537
826 #define ltTWOCOLLIST 538
827 #define ltTEXTCOLOUR 539
829 #define ltUNDERLINE 550
831 #define ltUPPERCASE 552
832 #define ltUSEPACKAGE 553
835 #define ltVERBATIMINPUT 571
836 #define ltVERBATIM 572
843 #define ltVSPACESTAR 579
844 #define ltVSKIPSTAR 580
847 #define ltVERBSTAR 583
849 #define ltWXCLIPS 600
850 #define ltWINHELPIGNORE 601
851 #define ltWINHELPONLY 602
853 #define ltXLPIGNORE 603
854 #define ltXLPONLY 604
857 #define ltBACKSLASHCHAR 621
859 #define ltFORWARDSLASH 623
860 #define ltUNDERSCORE 624
861 #define ltAMPERSAND 625
862 #define ltPERCENT 626
865 #define ltLPARENTH 629
866 #define ltRPARENTH 630
870 #define ltRANGLEBRA 634
871 #define ltLANGLEBRA 635
874 #define ltSINGLEQUOTE 638
875 #define ltBACKQUOTE 639
877 #define ltAT_SYMBOL 641
879 // Characters, not macros but with special Latex significance
880 #define ltSPECIALDOLLAR 660
881 #define ltSPECIALDOUBLEDOLLAR 661
882 #define ltSPECIALTILDE 662
883 #define ltSPECIALHASH 663
884 #define ltSPECIALAMPERSAND 664
885 #define ltSUPERTABULAR 665
888 #define ltACCENT_GRAVE 700
889 #define ltACCENT_ACUTE 701
890 #define ltACCENT_CARET 702
891 #define ltACCENT_UMLAUT 703
892 #define ltACCENT_TILDE 704
893 #define ltACCENT_DOT 705
894 #define ltACCENT_CADILLA 706
901 #define ltEPSILON 804
902 #define ltVAREPSILON 805
906 #define ltVARTHETA 809
918 #define ltVARSIGMA 821
920 #define ltUPSILON 823
927 #define ltCAP_GAMMA 830
928 #define ltCAP_DELTA 831
929 #define ltCAP_THETA 832
930 #define ltCAP_LAMBDA 833
933 #define ltCAP_SIGMA 836
934 #define ltCAP_UPSILON 837
935 #define ltCAP_PHI 838
936 #define ltCAP_PSI 839
937 #define ltCAP_OMEGA 840
939 // Binary operation symbols
944 #define ltSUBSETEQ 854
945 #define ltSQSUBSET 855
946 #define ltSQSUBSETEQ 856
954 #define ltSUPSETEQ 864
955 #define ltSQSUPSET 865
956 #define ltSQSUPSETEQ 866
968 #define ltPARALLEL 878
979 // Negated relation symbols (selected)
982 #define ltNOTSUBSET 892
985 #define ltLEFTARROW 900
986 #define ltLEFTARROW2 901
987 #define ltRIGHTARROW 902
988 #define ltRIGHTARROW2 903
989 #define ltLEFTRIGHTARROW 904
990 #define ltLEFTRIGHTARROW2 905
991 #define ltUPARROW 906
992 #define ltUPARROW2 907
993 #define ltDOWNARROW 908
994 #define ltDOWNARROW2 909
996 // Miscellaneous symbols
1001 #define ltEMPTYSET 1004
1002 #define ltNABLA 1005
1004 #define ltPARTIAL 1007
1006 #define ltFORALL 1009
1007 #define ltEXISTS 1010
1009 #define ltSHARP 1012
1010 #define ltANGLE 1013
1011 #define ltTRIANGLE 1014
1012 #define ltCLUBSUIT 1015
1013 #define ltDIAMONDSUIT 1016
1014 #define ltHEARTSUIT 1017
1015 #define ltSPADESUIT 1018
1016 #define ltINFTY 1019
1018 // Binary operation symbols
1021 #define ltTIMES 1032
1029 #define ltWEDGE 1040
1031 #define ltBULLET 1042
1032 #define ltDIAMOND 1043
1033 #define ltOSLASH 1044
1035 #define ltDIAMOND2 1046
1036 #define ltBIGTRIANGLEDOWN 1047
1037 #define ltOPLUS 1048
1038 #define ltOTIMES 1049
1041 #define ltRMFAMILY 1200
1042 #define ltSFFAMILY 1201
1043 #define ltTTFAMILY 1202
1044 #define ltBFSERIES 1203
1045 #define ltITSHAPE 1204
1046 #define ltSLSHAPE 1205
1047 #define ltSCSHAPE 1206
1049 #define ltMDSERIES 1207
1050 #define ltUPSHAPE 1208
1052 #define ltTEXTRM 1209
1053 #define ltTEXTSF 1210
1054 #define ltTEXTTT 1211
1055 #define ltTEXTBF 1212
1056 #define ltTEXTIT 1213
1057 #define ltTEXTSL 1214
1058 #define ltTEXTSC 1215
1061 #define ltDOCUMENTCLASS 1217
1064 #define ltSMALLSPACE1 1250
1065 #define ltSMALLSPACE2 1251
1068 #define ltTOPLEVEL 15000
1069 #define ltCUSTOM_MACRO 15001
1070 #define ltSOLO_BLOCK 15002