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
37 class TexMacroDef
: public wxObject
46 TexMacroDef(int the_id
, char *the_name
, int n
, bool ig
, bool forbidLevel
= FORBID_OK
);
50 #define CHUNK_TYPE_MACRO 1
51 #define CHUNK_TYPE_ARG 2
52 #define CHUNK_TYPE_STRING 3
55 We have nested lists to represent the Tex document.
56 Each element of a list of chunks can be one of:
58 - a macro with/without arguments. Arguments are lists of TexChunks.
60 Example (\toplevel is implicit but made explicit here):
62 AddMacroDef(ltMYMAT, "mymat", 2);
64 \toplevel{The cat sat on the \mymat{very coarse and {\it cheap}}{mat}}.
68 TexChunk: type = macro, name = toplevel, no_args = 1
71 TexChunk: type = argument
74 TexChunk: type = string, value = "The cat sat on the "
75 TexChunk: type = macro, name = mymat, no_args = 2
78 TexChunk: type = argument
81 TexChunk: type = string, value = "very coarse and "
82 TexChunk: type = macro, name = it, no_args = 1
85 TexChunk: type = argument
88 TexChunk: type = string, value = "cheap"
90 TexChunk: type = argument
93 TexChunk: type = string, value = mat
106 bool optional
; // Is an optional argument
109 TexChunk(int the_type
, TexMacroDef
*the_def
= NULL
);
110 TexChunk(TexChunk
& toCopy
);
111 virtual ~TexChunk(void);
114 // Represents a topic, used for generating a table of contents file (.cnt).
115 // Also for storing keywords found in a topic, a list of which is then inserted
116 // into the topic in the next pass.
117 class TexTopic
: public wxObject
120 // This flag is set to indicate that the topic has children.
121 // If this is the case, we know to insert a 'book' icon at this level,
122 // not just a 'page' icon. We don't want to have to open a book only
123 // to find there's only one page in it. We might force a book to be used if
124 // a top-level topic has no children (?)
127 wxStringList
*keywords
;
128 TexTopic(char *f
= NULL
);
131 extern wxHashTable TopicTable
;
132 void AddKeyWordForTopic(char *topic
, char *entry
, char *filename
= NULL
);
133 void ClearKeyWordTable(void);
135 extern TexChunk
*TopLevel
;
136 extern wxHashTable MacroDefs
;
137 extern wxStringList IgnorableInputFiles
; // Ignorable \input files, e.g. psbox.tex
139 bool read_a_line(char *buf
);
140 bool TexLoadFile(char *filename
);
141 int ParseArg(TexChunk
*thisArg
, wxList
& children
, char *buffer
, int pos
,
142 char *environment
= NULL
, bool parseArgToBrace
= TRUE
, TexChunk
*customMacroArgs
= NULL
);
143 int ParseMacroBody(char *macro_name
, TexChunk
*parent
, int no_args
,
144 char *buffer
, int pos
, char *environment
= NULL
, bool parseArgToBrace
= TRUE
, TexChunk
*customMacroArgs
= NULL
);
145 void TraverseDocument(void);
146 void TraverseFromChunk(TexChunk
*chunk
, wxNode
*thisNode
= NULL
, bool childrenOnly
= FALSE
);
147 #define TraverseChildrenFromChunk(arg) TraverseFromChunk(arg, NULL, TRUE)
148 void SetCurrentOutput(FILE *fd
);
149 void SetCurrentOutputs(FILE *fd1
, FILE *fd2
);
150 extern FILE *CurrentOutput1
;
151 extern FILE *CurrentOutput2
;
152 void AddMacroDef(int the_id
, char *name
, int n
, bool ignore
= FALSE
, bool forbidden
= FALSE
);
153 void TexInitialize(int bufSize
);
154 void TexCleanUp(void);
155 void TexOutput(char *s
, bool ordinaryText
= FALSE
);
156 char *GetArgData(TexChunk
*chunk
);
157 char *GetArgData(void); // Get the string for the current argument
158 int GetNoArgs(void); // Get the number of arguments for the current macro
159 TexChunk
*GetArgChunk(void); // Get the chunk for the current argument
160 TexChunk
*GetTopLevelChunk(void); // Get the chunk for the top level
161 TexChunk
*GetNextChunk(void); // Look ahead to the next chunk
162 bool IsArgOptional(void); // Is this argument an optional argument?
163 void DefineDefaultMacros(void); // Optional set of default macros
164 int GetCurrentColumn(void); // number of characters on current line
165 char *ConvertCase(char *s
); // Convert case, according to upperCaseNames setting.
166 extern wxPathList TexPathList
; // Path list, can be used for file searching.
168 // Define a variable value from the .ini file
169 char *RegisterSetting(char *settingName
, char *settingValue
, bool interactive
= TRUE
);
171 // Major document styles
172 #define LATEX_REPORT 1
173 #define LATEX_ARTICLE 2
174 #define LATEX_LETTER 3
176 #define LATEX_SLIDES 5
178 extern TexChunk
*DocumentTitle
;
179 extern TexChunk
*DocumentAuthor
;
180 extern TexChunk
*DocumentDate
;
181 extern int DocumentStyle
;
182 extern int MinorDocumentStyle
;
183 extern char *BibliographyStyleString
;
184 extern char *DocumentStyleString
;
185 extern char *MinorDocumentStyleString
;
187 extern int normalFont
;
188 extern int smallFont
;
190 extern int largeFont1
;
191 extern int LargeFont2
;
192 extern int LARGEFont3
;
193 extern int hugeFont1
;
194 extern int HugeFont2
;
195 extern int HUGEFont3
;
198 * USER-ADJUSTABLE SETTINGS
202 // Section font sizes
203 extern int chapterFont
;
204 extern int sectionFont
;
205 extern int subsectionFont
;
206 extern int titleFont
;
207 extern int authorFont
;
208 extern bool winHelp
; // Output in Windows Help format if TRUE, linear otherwise
209 extern bool isInteractive
;
210 extern bool runTwice
;
211 extern int convertMode
;
212 extern bool stopRunning
;
213 extern int mirrorMargins
;
214 extern bool headerRule
;
215 extern bool footerRule
;
216 extern int labelIndentTab
; // From left indent to item label (points)
217 extern int itemIndentTab
; // From left indent to item (points)
218 extern bool useUpButton
;
219 extern int htmlBrowseButtons
;
220 extern bool useHeadingStyles
; // Insert \s1, s2 etc.
221 extern bool useWord
; // Insert Word table of contents, etc. etc.
222 extern bool indexSubsections
; // put subsections in index
223 extern bool compatibilityMode
;
224 extern bool generateHPJ
; // Generate WinHelp HPJ file
225 extern char *winHelpTitle
; // Title for Windows Help file
226 extern int defaultTableColumnWidth
;
227 extern char *bitmapMethod
;
228 extern bool truncateFilenames
; // Truncate for DOS
229 extern int winHelpVersion
; // Version e.g. 4 for Win95
230 extern bool winHelpContents
; // Generate .cnt file
231 extern bool htmlIndex
; // Generate .htx HTML index file
232 extern bool htmlFrameContents
; // Use frames for HTML contents page
233 extern int contentsDepth
; // Depth of contents for linear RTF files
234 extern bool upperCaseNames
; // Filenames; default is lower case
235 extern char *backgroundImageString
; // HTML background image
236 extern char *backgroundColourString
; // HTML background colour
237 extern char *textColourString
; // HTML text colour
238 extern char *linkColourString
; // HTML link colour
239 extern char *followedLinkColourString
; // HTML followed link colour
240 extern bool combineSubSections
; // Stop splitting files below section
241 extern bool htmlWorkshopFiles
; // generate HTML Help Workshop project files
243 // Names to help with internationalisation
244 extern char *ContentsNameString
;
245 extern char *AbstractNameString
;
246 extern char *GlossaryNameString
;
247 extern char *ReferencesNameString
;
248 extern char *FiguresNameString
;
249 extern char *TablesNameString
;
250 extern char *FigureNameString
;
251 extern char *TableNameString
;
252 extern char *IndexNameString
;
253 extern char *ChapterNameString
;
254 extern char *SectionNameString
;
255 extern char *SubsectionNameString
;
256 extern char *SubsubsectionNameString
;
257 extern char *UpNameString
;
260 * HTML button identifiers: what kind of browse buttons
261 * are placed in HTML files, if any.
265 #define HTML_BUTTONS_NONE 0
266 #define HTML_BUTTONS_BITMAP 1
267 #define HTML_BUTTONS_TEXT 2
274 extern int chapterNo
;
275 extern int sectionNo
;
276 extern int subsectionNo
;
277 extern int subsubsectionNo
;
282 extern int ParIndent
;
286 // Set by client and by Tex2Any
287 extern TexChunk
*currentSection
;
289 // Header/footers/pagestyle
290 extern TexChunk
* LeftHeaderOdd
;
291 extern TexChunk
* LeftFooterOdd
;
292 extern TexChunk
* CentreHeaderOdd
;
293 extern TexChunk
* CentreFooterOdd
;
294 extern TexChunk
* RightHeaderOdd
;
295 extern TexChunk
* RightFooterOdd
;
296 extern TexChunk
* LeftHeaderEven
;
297 extern TexChunk
* LeftFooterEven
;
298 extern TexChunk
* CentreHeaderEven
;
299 extern TexChunk
* CentreFooterEven
;
300 extern TexChunk
* RightHeaderEven
;
301 extern TexChunk
* RightFooterEven
;
302 extern char * PageStyle
;
304 // Repeat the currentSection, either real (Chapter) or simulated (References)
305 extern void OutputCurrentSection(void);
306 extern void OutputCurrentSectionToString(char *buf
);
307 extern void OutputChunkToString(TexChunk
*chunk
, char *buf
);
309 extern char *fakeCurrentSection
;
311 // Called by Tex2Any to simulate a section
312 extern void FakeCurrentSection(char *fakeSection
, bool addToContents
= TRUE
);
315 * Local to Tex2Any library
319 extern char *currentArgData
;
320 extern bool haveArgData
; // If TRUE, we're simulating the data.
321 void StartSimulateArgument(char *data
);
322 void EndSimulateArgument(void);
329 // Called on start/end of macro examination
330 void OnMacro(int macroId
, int no_args
, bool start
);
332 // Called on start/end of argument examination.
333 // Return TRUE at the start of an argument to traverse
334 // (output) the argument.
335 bool OnArgument(int macroId
, int arg_no
, bool start
);
337 // Default: library-defined
338 void DefaultOnMacro(int macroId
, int no_args
, bool start
);
340 // Default: library-defined
341 bool DefaultOnArgument(int macroId
, int arg_no
, bool start
);
344 void OnError(char *msg
);
346 // Called for information
347 void OnInform(char *msg
);
349 // Special yield wrapper
350 void Tex2RTFYield(bool force
= FALSE
);
357 // Look for \label macro, use this ref name if found or
358 // make up a topic name otherwise.
359 char *FindTopicName(TexChunk
*chunk
);
360 // Force the current topic to be this (e.g. force 'references' label).
361 void ForceTopicName(char *name
);
362 void ResetTopicCounter(void);
364 // Parse unit eg. 14, 12pt, 34cm and return value in points.
365 int ParseUnitArgument(char *unitArg
);
367 // Set small, large, normal etc. point sizes for reference size
368 void SetFontSizes(int pointSize
);
371 * Strip off any extension (dot something) from end of file,
372 * IF one exists. Inserts zero into buffer.
376 void StripExtension(char *buffer
);
379 * Reference structure
383 class TexRef
: public wxObject
386 char *refLabel
; // Reference label
387 char *refFile
; // Reference filename (can be NULL)
388 char *sectionNumber
; // Section or figure number (as a string)
389 char *sectionName
; // name e.g. 'section'
390 TexRef(char *label
, char *file
, char *section
, char *sectionN
= NULL
);
399 void AddTexRef(char *name
, char *file
= NULL
, char *sectionName
= NULL
,
400 int chapter
= 0, int section
= 0, int subsection
= 0, int subsubsection
= 0);
403 * Read and write reference file (.ref), to resolve refs for second pass.
406 void WriteTexReferences(char *filename
);
407 void ReadTexReferences(char *filename
);
414 class BibEntry
: public wxObject
420 * book, inbook, article, phdthesis, inproceedings, techreport
445 inline BibEntry(void)
468 extern wxList BibList
;
469 extern wxStringList CitationList
;
471 bool ReadBib(char *filename
);
472 void OutputBib(void);
473 void ResolveBibReferences(void);
474 void AddCitation(char *citeKey
);
475 TexRef
*FindReference(char *key
);
478 * Ability to customize, or at least suppress unknown macro errors
482 extern wxList CustomMacroList
;
484 #define CUSTOM_MACRO_IGNORE 0
485 #define CUSTOM_MACRO_OUTPUT 1
486 #define CUSTOM_MACRO_MARK 2
488 class CustomMacro
: public wxObject
494 inline CustomMacro(char *name
, int args
, char *body
)
497 macroName
= copystring(name
);
499 macroBody
= copystring(body
);
506 bool ReadCustomMacros(char *filename
);
507 void ShowCustomMacros(void);
508 CustomMacro
*FindCustomMacro(char *name
);
509 char *ParseMultifieldString(char *s
, int *pos
);
516 class ColourTableEntry
: public wxObject
524 ColourTableEntry(char *theName
, unsigned int r
, unsigned int g
, unsigned int b
);
525 ~ColourTableEntry(void);
528 extern wxList ColourTable
;
529 extern void AddColour(char *theName
, unsigned int r
, unsigned int g
, unsigned int b
);
530 extern int FindColourPosition(char *theName
);
531 // Converts e.g. "red" -> "#FF0000"
532 extern bool FindColourHTMLString(char *theName
, char *buf
);
533 extern void InitialiseColourTable(void);
536 #define ltADDCONTENTSLINE 2
537 #define ltADDTOCOUNTER 3
545 #define ltBACKSLASH 30
546 #define ltBASELINESKIP 31
549 #define ltBIBLIOGRAPHYSTYLE 34
550 #define ltBIBLIOGRAPHY 35
552 #define ltBACKSLASHRAW 37
553 #define ltBACKGROUND 38
554 #define ltBACKGROUNDCOLOUR 39
555 #define ltBACKGROUNDIMAGE 40
558 #define ltCAPTIONSTAR 50
561 #define ltCENTERLINE 53
562 #define ltCENTERING 54
564 #define ltCEXTRACT 56
565 #define ltCHAPTERHEADING 57
566 #define ltCHAPTERSTAR 58
571 #define ltCLEARDOUBLEPAGE 63
572 #define ltCLEARPAGE 64
574 #define ltCLIPSFUNC 66
575 #define ltCOLUMNSEP 67
577 #define ltCOPYRIGHT 69
583 #define ltCHAPTERHEADINGSTAR 73
586 #define ltDESCRIPTION 91
587 #define ltDESTRUCT 92
588 #define ltDOCUMENTSTYLE 93
589 #define ltDOCUMENT 94
590 #define ltDOUBLESPACE 95
591 #define ltDEFINECOLOUR 96
592 #define ltDEFINECOLOR 97
595 #define ltENUMERATE 121
596 #define ltEQUATION 122
597 #define ltEVENSIDEMARGIN 123
601 #define ltFLUSHLEFT 152
602 #define ltFLUSHRIGHT 153
603 #define ltFOOTHEIGHT 154
604 #define ltFOOTNOTE 155
605 #define ltFOOTSKIP 156
606 #define ltFRAMEBOX 157
607 #define ltFUNCTIONSECTION 158
609 #define ltFIGURESTAR 160
610 #define ltFOOTNOTESIZE 161
611 #define ltFOOTNOTEPOPUP 162
612 #define ltFANCYPLAIN 163
615 #define ltFOLLOWEDLINKCOLOUR 166
617 #define ltGLOSSARY 180
620 #define ltHEADHEIGHT 200
621 #define ltHELPGLOSSARY 201
622 #define ltHELPIGNORE 202
623 #define ltHELPONLY 203
624 #define ltHELPINPUT 204
625 #define ltHELPFONTFAMILY 205
626 #define ltHELPFONTSIZE 206
627 #define ltHELPREFN 207
628 #define ltHELPREF 208
632 #define ltHSPACESTAR 212
634 #define ltHSKIPSTAR 214
639 #define ltHTMLIGNORE 219
640 #define ltHTMLONLY 220
642 #define ltINCLUDEONLY 240
643 #define ltINCLUDE 241
646 #define ltITEMIZE 244
650 #define ltITEMSEP 248
651 #define ltINDENTED 249
652 #define ltIMAGEMAP 250
655 #define ltINSERTATLEVEL 253
666 #define ltLINEBREAK 287
667 #define ltLISTOFFIGURES 288
668 #define ltLISTOFTABLES 289
671 #define ltLATEXIGNORE 292
672 #define ltLATEXONLY 293
673 #define ltLOWERCASE 294
674 #define ltLBRACERAW 295
675 #define ltLINKCOLOUR 296
677 #define ltMAKEGLOSSARY 300
678 #define ltMAKEINDEX 301
679 #define ltMAKETITLE 302
680 #define ltMARKRIGHT 303
681 #define ltMARKBOTH 304
682 #define ltMARGINPARWIDTH 305
683 #define ltMARGINPAR 306
684 #define ltMARGINPARODD 307
685 #define ltMARGINPAREVEN 308
687 #define ltMEMBERSECTION 310
689 #define ltMULTICOLUMN 312
690 #define ltMARGINPARSEP 313
692 #define ltNEWCOUNTER 330
693 #define ltNEWLINE 331
694 #define ltNEWPAGE 332
696 #define ltNOINDENT 334
697 #define ltNOLINEBREAK 335
698 #define ltNOPAGEBREAK 336
699 #define ltNORMALSIZE 337
700 #define ltNORMALBOX 338
701 #define ltNORMALBOXD 339
702 #define ltNUMBEREDBIBITEM 340
704 #define ltONECOLUMN 360
705 #define ltODDSIDEMARGIN 361
707 #define ltPAGEBREAK 380
708 #define ltPAGEREF 381
709 #define ltPAGESTYLE 382
710 #define ltPAGENUMBERING 383
711 #define ltPARAGRAPHSTAR 384
712 #define ltPARAGRAPH 385
714 #define ltPARINDENT 387
715 #define ltPARSKIP 388
716 #define ltPARTSTAR 389
720 #define ltPICTURE 393
723 #define ltPRINTINDEX 396
724 #define ltPSBOXTO 397
726 #define ltPOPREFONLY 399
729 #define ltQUOTATION 421
731 #define ltRAGGEDBOTTOM 440
732 #define ltRAGGEDLEFT 441
733 #define ltRAGGEDRIGHT 442
740 #define ltRULEDROW 449
745 #define ltRTFIGNORE 454
746 #define ltRTFONLY 455
747 #define ltRBRACERAW 456
748 #define ltREGISTERED 457
751 #define ltSECTIONHEADING 471
752 #define ltSECTIONSTAR 472
753 #define ltSECTION 473
754 #define ltSETCOUNTER 474
756 #define ltSHORTCITE 476
757 #define ltSINGLESPACE 477
758 #define ltSLOPPYPAR 478
762 #define ltSUBITEM 482
763 #define ltSUBPARAGRAPHSTAR 483
764 #define ltSUBPARAGRAPH 484
765 #define ltSPECIAL 485
766 #define ltSUBSECTIONSTAR 486
767 #define ltSUBSECTION 487
768 #define ltSUBSUBSECTIONSTAR 488
769 #define ltSUBSUBSECTION 489
770 #define ltSCRIPTSIZE 490
771 #define ltSETHEADER 491
772 #define ltSETFOOTER 492
773 #define ltSIZEDBOX 493
774 #define ltSIZEDBOXD 494
775 #define ltSECTIONHEADINGSTAR 495
777 #define ltSETHOTSPOTCOLOUR 497
778 #define ltSETHOTSPOTCOLOR 498
779 #define ltSETHOTSPOTUNDERLINE 499
780 #define ltSETTRANSPARENCY 500
782 #define ltTABBING 510
783 #define ltTABLEOFCONTENTS 511
785 #define ltTABULAR 513
788 #define ltTEXTWIDTH 516
789 #define ltTEXTHEIGHT 517
790 #define ltTHEBIBLIOGRAPHY 518
791 #define ltTITLEPAGE 519
795 #define ltTOPMARGIN 523
796 #define ltTOPSKIP 524
799 #define ltTYPEOUT 527
800 #define ltTWOCOLUMN 528
801 #define ltTHEPAGE 529
802 #define ltTHECHAPTER 530
803 #define ltTHESECTION 531
804 #define ltTHISPAGESTYLE 532
806 #define ltTWOCOLWIDTHA 533
807 #define ltTWOCOLWIDTHB 534
808 #define ltTWOCOLSPACING 535
809 #define ltTWOCOLITEM 536
810 #define ltTWOCOLITEMRULED 537
811 #define ltTWOCOLLIST 538
812 #define ltTEXTCOLOUR 539
814 #define ltUNDERLINE 550
816 #define ltUPPERCASE 552
817 #define ltUSEPACKAGE 553
820 #define ltVERBATIMINPUT 571
821 #define ltVERBATIM 572
828 #define ltVSPACESTAR 579
829 #define ltVSKIPSTAR 580
832 #define ltVERBSTAR 583
834 #define ltWXCLIPS 600
835 #define ltWINHELPIGNORE 601
836 #define ltWINHELPONLY 602
838 #define ltXLPIGNORE 603
839 #define ltXLPONLY 604
842 #define ltBACKSLASHCHAR 621
844 #define ltFORWARDSLASH 623
845 #define ltUNDERSCORE 624
846 #define ltAMPERSAND 625
847 #define ltPERCENT 626
850 #define ltLPARENTH 629
851 #define ltRPARENTH 630
855 #define ltRANGLEBRA 634
856 #define ltLANGLEBRA 635
859 #define ltSINGLEQUOTE 638
860 #define ltBACKQUOTE 639
862 #define ltAT_SYMBOL 641
864 // Characters, not macros but with special Latex significance
865 #define ltSPECIALDOLLAR 660
866 #define ltSPECIALDOUBLEDOLLAR 661
867 #define ltSPECIALTILDE 662
868 #define ltSPECIALHASH 663
869 #define ltSPECIALAMPERSAND 664
870 #define ltSUPERTABULAR 665
873 #define ltACCENT_GRAVE 700
874 #define ltACCENT_ACUTE 701
875 #define ltACCENT_CARET 702
876 #define ltACCENT_UMLAUT 703
877 #define ltACCENT_TILDE 704
878 #define ltACCENT_DOT 705
879 #define ltACCENT_CADILLA 706
886 #define ltEPSILON 804
887 #define ltVAREPSILON 805
891 #define ltVARTHETA 809
903 #define ltVARSIGMA 821
905 #define ltUPSILON 823
912 #define ltCAP_GAMMA 830
913 #define ltCAP_DELTA 831
914 #define ltCAP_THETA 832
915 #define ltCAP_LAMBDA 833
918 #define ltCAP_SIGMA 836
919 #define ltCAP_UPSILON 837
920 #define ltCAP_PHI 838
921 #define ltCAP_PSI 839
922 #define ltCAP_OMEGA 840
924 // Binary operation symbols
929 #define ltSUBSETEQ 854
930 #define ltSQSUBSET 855
931 #define ltSQSUBSETEQ 856
939 #define ltSUPSETEQ 864
940 #define ltSQSUPSET 865
941 #define ltSQSUPSETEQ 866
953 #define ltPARALLEL 878
964 // Negated relation symbols (selected)
967 #define ltNOTSUBSET 892
970 #define ltLEFTARROW 900
971 #define ltLEFTARROW2 901
972 #define ltRIGHTARROW 902
973 #define ltRIGHTARROW2 903
974 #define ltLEFTRIGHTARROW 904
975 #define ltLEFTRIGHTARROW2 905
976 #define ltUPARROW 906
977 #define ltUPARROW2 907
978 #define ltDOWNARROW 908
979 #define ltDOWNARROW2 909
981 // Miscellaneous symbols
986 #define ltEMPTYSET 1004
989 #define ltPARTIAL 1007
991 #define ltFORALL 1009
992 #define ltEXISTS 1010
996 #define ltTRIANGLE 1014
997 #define ltCLUBSUIT 1015
998 #define ltDIAMONDSUIT 1016
999 #define ltHEARTSUIT 1017
1000 #define ltSPADESUIT 1018
1001 #define ltINFTY 1019
1003 // Binary operation symbols
1006 #define ltTIMES 1032
1014 #define ltWEDGE 1040
1016 #define ltBULLET 1042
1017 #define ltDIAMOND 1043
1018 #define ltOSLASH 1044
1020 #define ltDIAMOND2 1046
1021 #define ltBIGTRIANGLEDOWN 1047
1022 #define ltOPLUS 1048
1023 #define ltOTIMES 1049
1026 #define ltRMFAMILY 1200
1027 #define ltSFFAMILY 1201
1028 #define ltTTFAMILY 1202
1029 #define ltBFSERIES 1203
1030 #define ltITSHAPE 1204
1031 #define ltSLSHAPE 1205
1032 #define ltSCSHAPE 1206
1034 #define ltMDSERIES 1207
1035 #define ltUPSHAPE 1208
1037 #define ltTEXTRM 1209
1038 #define ltTEXTSF 1210
1039 #define ltTEXTTT 1211
1040 #define ltTEXTBF 1212
1041 #define ltTEXTIT 1213
1042 #define ltTEXTSL 1214
1043 #define ltTEXTSC 1215
1046 #define ltDOCUMENTCLASS 1217
1049 #define ltSMALLSPACE1 1250
1050 #define ltSMALLSPACE2 1251
1053 #define ltTOPLEVEL 15000
1054 #define ltCUSTOM_MACRO 15001
1055 #define ltSOLO_BLOCK 15002