]> git.saurik.com Git - wxWidgets.git/commitdiff
Applied patch [ 867187 ] wxWindows-like markup in TEX2RTF tool
authorJulian Smart <julian@anthemion.co.uk>
Thu, 8 Jan 2004 11:54:30 +0000 (11:54 +0000)
committerJulian Smart <julian@anthemion.co.uk>
Thu, 8 Jan 2004 11:54:30 +0000 (11:54 +0000)
git-svn-id: https://svn.wxwidgets.org/svn/wx/wxWidgets/trunk@25095 c3d73ce0-8a6f-49c7-b76d-6d57e0e08775

14 files changed:
utils/tex2rtf/src/bmputils.h
utils/tex2rtf/src/htmlutil.cpp
utils/tex2rtf/src/readshg.cpp
utils/tex2rtf/src/readshg.h
utils/tex2rtf/src/rtfutils.cpp
utils/tex2rtf/src/rtfutils.h
utils/tex2rtf/src/table.cpp
utils/tex2rtf/src/table.h
utils/tex2rtf/src/tex2any.cpp
utils/tex2rtf/src/tex2any.h
utils/tex2rtf/src/tex2rtf.cpp
utils/tex2rtf/src/tex2rtf.h
utils/tex2rtf/src/texutils.cpp
utils/tex2rtf/src/xlputils.cpp

index 0f8b07a453ab90d0d73ce87235053cbc52c6dda9..a8d685423e92e7bcf7dd33b41b662508dba216a4 100644 (file)
@@ -13,7 +13,7 @@
 static char hexArray[] = { '0', '1', '2', '3', '4', '5', '6', '7', '8', '9', 'A', 'B',
   'C', 'D', 'E', 'F' };
 
-void DecToHex(int dec, char *buf)
+void DecToHex(int dec, wxChar *buf)
 {
   int firstDigit = (int)(dec/16.0);
   int secondDigit = (int)(dec - (firstDigit*16.0));
@@ -41,30 +41,46 @@ static unsigned long getint(FILE *fp)
 
 bool GetBMPHeader(FILE *fp, int *Width, int *Height, int *Planes, int *BitsPerPixel)
 {
-  unsigned long bfSize, bfOffBits, biSize, biWidth, biHeight, biPlanes;
-  unsigned long biBitCount, biCompression, biSizeImage, biXPelsPerMeter;
-  unsigned long biYPelsPerMeter, biClrUsed, biClrImportant;
+  // Remember about all fields but store only important ones
+  unsigned long /*
+                bfSize, 
+                bfOffBits, 
+                biSize, 
+                */ 
+                biWidth, 
+                biHeight, 
+                biPlanes,
+                biBitCount
+                /*        ,
+                biCompression,
+                biSizeImage, 
+                biXPelsPerMeter, 
+                biYPelsPerMeter, 
+                biClrUsed, 
+                biClrImportant
+                */
+                ;
 
   /* read the file type (first two bytes) */
   int c = getc(fp); int c1 = getc(fp);
   if (c!='B' || c1!='M') { return FALSE; }
 
-  bfSize = getint(fp);
+  /* bfSize = */          getint(fp);
   getshort(fp);         /* reserved and ignored */
   getshort(fp);
-  bfOffBits = getint(fp);
+  /* bfOffBits = */       getint(fp);
 
-  biSize          = getint(fp);
+  /* biSize          = */ getint(fp);
   biWidth         = getint(fp);
   biHeight        = getint(fp);
   biPlanes        = getshort(fp);
   biBitCount      = getshort(fp);
-  biCompression   = getint(fp);
-  biSizeImage     = getint(fp);
-  biXPelsPerMeter = getint(fp);
-  biYPelsPerMeter = getint(fp);
-  biClrUsed       = getint(fp);
-  biClrImportant  = getint(fp);
+  /* biCompression   = */ getint(fp);
+  /* biSizeImage     = */ getint(fp);
+  /* biXPelsPerMeter = */ getint(fp);
+  /* biYPelsPerMeter = */ getint(fp);
+  /* biClrUsed       = */ getint(fp);
+  /* biClrImportant  = */ getint(fp);
 
   *Width = (int)biWidth;
   *Height = (int)biHeight;
@@ -91,19 +107,19 @@ bool OutputBitmapHeader(FILE *fd, bool isWinHelp = FALSE)
   int goalW = 15*Width;
   int goalH = 15*Height;
 
-  TexOutput("{\\pict");
-  if (isWinHelp) TexOutput("\\wbitmap0");
-  else TexOutput("\\dibitmap");
-
-  char buf[50];
-  TexOutput("\\picw"); sprintf(buf, "%d", Width); TexOutput(buf);
-  TexOutput("\\pich"); sprintf(buf, "%d", Height); TexOutput(buf);
-  TexOutput("\\wbmbitspixel"); sprintf(buf, "%d", BitsPerPixel); TexOutput(buf);
-  TexOutput("\\wbmplanes"); sprintf(buf, "%d", Planes); TexOutput(buf);
-  TexOutput("\\wbmwidthbytes"); sprintf(buf, "%d", scanLineWidth); TexOutput(buf);
-  TexOutput("\\picwgoal"); sprintf(buf, "%d", goalW); TexOutput(buf);
-  TexOutput("\\pichgoal"); sprintf(buf, "%d", goalH); TexOutput(buf);
-  TexOutput("\n");
+  TexOutput(_T("{\\pict"));
+  if (isWinHelp) TexOutput(_T("\\wbitmap0"));
+  else TexOutput(_T("\\dibitmap)"));
+
+  wxChar buf[50];
+  TexOutput(_T("\\picw")); wxSprintf(buf, _T("%d"), Width); TexOutput(buf);
+  TexOutput(_T("\\pich")); wxSprintf(buf, _T("%d"), Height); TexOutput(buf);
+  TexOutput(_T("\\wbmbitspixel")); wxSprintf(buf, _T("%d"), BitsPerPixel); TexOutput(buf);
+  TexOutput(_T("\\wbmplanes")); wxSprintf(buf, _T("%d"), Planes); TexOutput(buf);
+  TexOutput(_T("\\wbmwidthbytes")); wxSprintf(buf, _T("%d"), scanLineWidth); TexOutput(buf);
+  TexOutput(_T("\\picwgoal")); wxSprintf(buf, _T("%d"), goalW); TexOutput(buf);
+  TexOutput(_T("\\pichgoal")); wxSprintf(buf, _T("%d"), goalH); TexOutput(buf);
+  TexOutput(_T("\n"));
   return TRUE;
 }
 
@@ -113,20 +129,20 @@ bool OutputBitmapData(FILE *fd)
   fseek(fd, 14, SEEK_SET);
   int bytesSoFar = 0;
   int ch = getc(fd);
-  char hexBuf[3];
+  wxChar hexBuf[3];
   while (ch != EOF)
   {
     if (bytesSoFar == scanLineWidth)
     {
       bytesSoFar = 0;
-      TexOutput("\n");
+      TexOutput(_T("\n"));
     }
     DecToHex(ch, hexBuf);
     TexOutput(hexBuf);
     bytesSoFar ++;
     ch = getc(fd);
   }
-  TexOutput("\n}\n");
+  TexOutput(_T("\n}\n"));
   return TRUE;
 }
 
@@ -158,7 +174,7 @@ bool GetMetafileHeader(FILE *handle, int *width, int *height)
   return TRUE;
 }
 
-bool OutputMetafileHeader(FILE *handle, bool isWinHelp, int userWidth, int userHeight)
+bool OutputMetafileHeader(FILE *handle, bool WXUNUSED(isWinHelp), int userWidth, int userHeight)
 {
   int Width, Height;
   if (!GetMetafileHeader(handle, &Width, &Height))
@@ -187,22 +203,22 @@ bool OutputMetafileHeader(FILE *handle, bool isWinHelp, int userWidth, int userH
     goalH = userHeight;
   }
 
-  TexOutput("{\\pict");
-  TexOutput("\\wmetafile8");
+  TexOutput(_T("{\\pict"));
+  TexOutput(_T("\\wmetafile8"));
 
-  char buf[50];
-  TexOutput("\\picw"); sprintf(buf, "%d", Width); TexOutput(buf);
-  TexOutput("\\pich"); sprintf(buf, "%d", Height); TexOutput(buf);
-  TexOutput("\\picwgoal"); sprintf(buf, "%d", goalW); TexOutput(buf);
-  TexOutput("\\pichgoal"); sprintf(buf, "%d", goalH); TexOutput(buf);
-  TexOutput("\n");
+  wxChar buf[50];
+  TexOutput(_T("\\picw")); wxSprintf(buf, _T("%d"), Width); TexOutput(buf);
+  TexOutput(_T("\\pich")); wxSprintf(buf, _T("%d"), Height); TexOutput(buf);
+  TexOutput(_T("\\picwgoal")); wxSprintf(buf, _T("%d"), goalW); TexOutput(buf);
+  TexOutput(_T("\\pichgoal")); wxSprintf(buf, _T("%d"), goalH); TexOutput(buf);
+  TexOutput(_T("\n"));
   return TRUE;
 }
 
 bool OutputMetafileData(FILE *handle)
 {
   int bytesSoFar = 0;
-  char hexBuf[3];
+  wxChar hexBuf[3];
   int ch;
   do
   {
@@ -210,7 +226,7 @@ bool OutputMetafileData(FILE *handle)
     if (bytesSoFar == scanLineWidth)
     {
       bytesSoFar = 0;
-      TexOutput("\n");
+      TexOutput(_T("\n"));
     }
     if (ch != EOF)
     {
@@ -219,7 +235,7 @@ bool OutputMetafileData(FILE *handle)
       bytesSoFar ++;
     }
   } while (ch != EOF);
-  TexOutput("\n}\n");
+  TexOutput(_T("\n}\n"));
   return TRUE;
 }
 
index 46aa726a933c2642e77bd2ad3621a0e20fa3f6af..a286f46279f422c4349e4f12ca32d0358d21c7fe 100644 (file)
@@ -35,11 +35,11 @@ static inline wxChar* copystring(const wxChar* s)
 extern wxHashTable TexReferences;
 
 
-extern void DecToHex(int, char *);
-void GenerateHTMLIndexFile(char *fname);
+extern void DecToHex(int, wxChar *);
+void GenerateHTMLIndexFile(wxChar *fname);
 
-void GenerateHTMLWorkshopFiles(char *fname);
-void HTMLWorkshopAddToContents(int level, char *s, char *file);
+void GenerateHTMLWorkshopFiles(wxChar *fname);
+void HTMLWorkshopAddToContents(int level, wxChar *s, wxChar *file);
 void HTMLWorkshopStartContents();
 void HTMLWorkshopEndContents();
 
@@ -47,15 +47,15 @@ void OutputContentsFrame(void);
 
 #include "readshg.h" // Segmented hypergraphics parsing
 
-char *ChaptersName = NULL;
-char *SectionsName = NULL;
-char *SubsectionsName = NULL;
-char *SubsubsectionsName = NULL;
-char *TitlepageName = NULL;
-char *lastFileName = NULL;
-char *lastTopic = NULL;
-char *currentFileName = NULL;
-char *contentsFrameName = NULL;
+wxChar *ChaptersName = NULL;
+wxChar *SectionsName = NULL;
+wxChar *SubsectionsName = NULL;
+wxChar *SubsubsectionsName = NULL;
+wxChar *TitlepageName = NULL;
+wxChar *lastFileName = NULL;
+wxChar *lastTopic = NULL;
+wxChar *currentFileName = NULL;
+wxChar *contentsFrameName = NULL;
 
 static TexChunk *descriptionItemArg = NULL;
 static TexChunk *helpRefFilename = NULL;
@@ -81,7 +81,7 @@ static bool inFigure = FALSE;
 static bool inTable = FALSE;
 
 // This is defined in the Tex2Any library.
-extern char *BigBuffer;
+extern wxChar *BigBuffer;
 
 // DHS Two-column table dimensions.
 static int TwoColWidthA = -1;
@@ -91,9 +91,9 @@ static int TwoColWidthB = -1;
 class HyperReference: public wxObject
 {
  public:
-  char *refName;
-  char *refFile;
-  HyperReference(char *name, char *file)
+  wxChar *refName;
+  wxChar *refFile;
+  HyperReference(wxChar *name, wxChar *file)
   {
     if (name) refName = copystring(name);
     if (file) refFile = copystring(file);
@@ -103,9 +103,9 @@ class HyperReference: public wxObject
 class TexNextPage: public wxObject
 {
  public:
-  char *label;
-  char *filename;
-  TexNextPage(char *theLabel, char *theFile)
+  wxChar *label;
+  wxChar *filename;
+  TexNextPage(wxChar *theLabel, wxChar *theFile)
   {
     label = copystring(theLabel);
     filename = copystring(theFile);
@@ -119,23 +119,23 @@ class TexNextPage: public wxObject
 
 wxHashTable TexNextPages(wxKEY_STRING);
 
-static char *CurrentChapterName = NULL;
-static char *CurrentChapterFile = NULL;
-static char *CurrentSectionName = NULL;
-static char *CurrentSectionFile = NULL;
-static char *CurrentSubsectionName = NULL;
-static char *CurrentSubsectionFile = NULL;
-static char *CurrentSubsubsectionName = NULL;
-static char *CurrentSubsubsectionFile = NULL;
-static char *CurrentTopic = NULL;
-
-static void SetCurrentTopic(char *s)
+static wxChar *CurrentChapterName = NULL;
+static wxChar *CurrentChapterFile = NULL;
+static wxChar *CurrentSectionName = NULL;
+static wxChar *CurrentSectionFile = NULL;
+static wxChar *CurrentSubsectionName = NULL;
+static wxChar *CurrentSubsectionFile = NULL;
+static wxChar *CurrentSubsubsectionName = NULL;
+static wxChar *CurrentSubsubsectionFile = NULL;
+static wxChar *CurrentTopic = NULL;
+
+static void SetCurrentTopic(wxChar *s)
 {
   if (CurrentTopic) delete[] CurrentTopic;
   CurrentTopic = copystring(s);
 }
 
-void SetCurrentChapterName(char *s, char *file)
+void SetCurrentChapterName(wxChar *s, wxChar *file)
 {
   if (CurrentChapterName) delete[] CurrentChapterName;
   CurrentChapterName = copystring(s);
@@ -146,7 +146,7 @@ void SetCurrentChapterName(char *s, char *file)
 
   SetCurrentTopic(s);
 }
-void SetCurrentSectionName(char *s, char *file)
+void SetCurrentSectionName(wxChar *s, wxChar *file)
 {
   if (CurrentSectionName) delete[] CurrentSectionName;
   CurrentSectionName = copystring(s);
@@ -156,7 +156,7 @@ void SetCurrentSectionName(char *s, char *file)
   currentFileName = CurrentSectionFile;
   SetCurrentTopic(s);
 }
-void SetCurrentSubsectionName(char *s, char *file)
+void SetCurrentSubsectionName(wxChar *s, wxChar *file)
 {
   if (CurrentSubsectionName) delete[] CurrentSubsectionName;
   CurrentSubsectionName = copystring(s);
@@ -165,7 +165,7 @@ void SetCurrentSubsectionName(char *s, char *file)
   currentFileName = CurrentSubsectionFile;
   SetCurrentTopic(s);
 }
-void SetCurrentSubsubsectionName(char *s, char *file)
+void SetCurrentSubsubsectionName(wxChar *s, wxChar *file)
 {
   if (CurrentSubsubsectionName) delete[] CurrentSubsubsectionName;
   CurrentSubsubsectionName = copystring(s);
@@ -180,23 +180,23 @@ void SetCurrentSubsubsectionName(char *s, char *file)
  *
  */
 
-void ReopenFile(FILE **fd, char **fileName)
+void ReopenFile(FILE **fd, wxChar **fileName)
 {
   if (*fd)
   {
-    fprintf(*fd, "\n</FONT></BODY></HTML>\n");
+    wxFprintf(*fd, _T("\n</FONT></BODY></HTML>\n"));
     fclose(*fd);
   }
   fileId ++;
-  char buf[400];
+  wxChar buf[400];
   if (truncateFilenames)
-    sprintf(buf, "%s%d.htm", FileRoot, fileId);
+    wxSprintf(buf, _T("%s%d.htm"), FileRoot, fileId);
   else
-    sprintf(buf, "%s%d.html", FileRoot, fileId);
+    wxSprintf(buf, _T("%s%d.html"), FileRoot, fileId);
   if (*fileName) delete[] *fileName;
   *fileName = copystring(wxFileNameFromPath(buf));
-  *fd = fopen(buf, "w");
-  fprintf(*fd, "<HTML>\n");
+  *fd = wxFopen(buf, _T("w"));
+  wxFprintf(*fd, _T("<HTML>\n"));
 }
 
 /*
@@ -204,7 +204,7 @@ void ReopenFile(FILE **fd, char **fileName)
  * in subsectionCombine mode
  */
 
-static char *SectionContentsFilename = NULL;
+static wxChar *SectionContentsFilename = NULL;
 static FILE *SectionContentsFD = NULL;
 
 void ReopenSectionContentsFile(void)
@@ -221,13 +221,13 @@ void ReopenSectionContentsFile(void)
     // Create the name from the current section filename
     if ( CurrentSectionFile )
     {
-        char buf[256];
-        strcpy(buf, CurrentSectionFile);
+        wxChar buf[256];
+        wxStrcpy(buf, CurrentSectionFile);
         wxStripExtension(buf);
-        strcat(buf, ".con");
+        wxStrcat(buf, _T(".con"));
         SectionContentsFilename = copystring(buf);
 
-        SectionContentsFD = fopen(SectionContentsFilename, "w");
+        SectionContentsFD = wxFopen(SectionContentsFilename, _T("w"));
     }
 }
 
@@ -244,7 +244,7 @@ void ProcessText2HTML(TexChunk *chunk)
   int ptr = 0;
   int i = 0;
   char ch = 1;
-  int len = strlen(chunk->value);
+  int len = wxStrlen(chunk->value);
   while (ch != 0)
   {
     ch = chunk->value[i];
@@ -254,7 +254,7 @@ void ProcessText2HTML(TexChunk *chunk)
                         ((len > i+1 && chunk->value[i+1] == 13) &&
                         (len > i+2 && chunk->value[i+2] == 10))))
     {
-      BigBuffer[ptr] = 0; strcat(BigBuffer, "<P>\n\n"); ptr += 5;
+      BigBuffer[ptr] = 0; wxStrcat(BigBuffer, _T("<P>\n\n")); ptr += 5;
       i += 2;
       changed = TRUE;
     }
@@ -273,7 +273,7 @@ void ProcessText2HTML(TexChunk *chunk)
     else if (ch == '<') // Change < to &lt
     {
       BigBuffer[ptr] = 0;
-      strcat(BigBuffer, "&lt;");
+      wxStrcat(BigBuffer, _T("&lt;"));
       ptr += 4;
       i += 1;
       changed = TRUE;
@@ -281,7 +281,7 @@ void ProcessText2HTML(TexChunk *chunk)
     else if (ch == '>') // Change > to &gt
     {
       BigBuffer[ptr] = 0;
-      strcat(BigBuffer, "&gt;");
+      wxStrcat(BigBuffer, _T("&gt;"));
       ptr += 4;
       i += 1;
       changed = TRUE;
@@ -366,60 +366,60 @@ void Text2HTML(TexChunk *chunk)
  *
  */
 
-void AddBrowseButtons(char *upLabel, char *upFilename,
-  char *previousLabel, char *previousFilename,
-  char *thisLabel, char *thisFilename)
+void AddBrowseButtons(wxChar *upLabel, wxChar *upFilename,
+  wxChar *previousLabel, wxChar *previousFilename,
+  wxChar *thisLabel, wxChar *thisFilename)
 {
-  char contentsReferenceBuf[80];
-  char upReferenceBuf[80];
-  char backReferenceBuf[80];
-  char forwardReferenceBuf[80];
+  wxChar contentsReferenceBuf[80];
+  wxChar upReferenceBuf[80];
+  wxChar backReferenceBuf[80];
+  wxChar forwardReferenceBuf[80];
   if (htmlBrowseButtons == HTML_BUTTONS_NONE)
     return;
 
-  char *contentsReference = NULL;
+  wxChar *contentsReference; // no need to initialize because always assigned below
   if (htmlBrowseButtons == HTML_BUTTONS_TEXT)
     contentsReference = ContentsNameString;
   else
   {
 //    contentsReference = "<img align=center src=\"contents.gif\" BORDER=0 ALT=\"Contents\">";
     contentsReference = contentsReferenceBuf;
-    sprintf(contentsReference, "<img align=center src=\"%s\" BORDER=0 ALT=\"Contents\">", ConvertCase("contents.gif"));
+    wxSprintf(contentsReference, _T("<img align=center src=\"%s\" BORDER=0 ALT=\"Contents\">"), ConvertCase(_T("contents.gif")));
   }
 
-  char *upReference = NULL;
+  wxChar *upReference; // no need to initialize because always assigned below
   if (htmlBrowseButtons == HTML_BUTTONS_TEXT)
     upReference = UpNameString;
   else
   {
 //    upReference = "<img align=center src=\"up.gif\" ALT=\"Up\">";
     upReference = upReferenceBuf;
-    sprintf(upReference, "<img align=center src=\"%s\" BORDER=0 ALT=\"Up\">", ConvertCase("up.gif"));
+    wxSprintf(upReference, _T("<img align=center src=\"%s\" BORDER=0 ALT=\"Up\">"), ConvertCase(_T("up.gif")));
   }
 
-  char *backReference = NULL;
+  wxChar *backReference; // no need to initialize because always assigned below
   if (htmlBrowseButtons == HTML_BUTTONS_TEXT)
-    backReference = "&lt;&lt;";
+    backReference = _T("&lt;&lt;");
   else
   {
 //    backReference = "<img align=center src=\"back.gif\" ALT=\"Previous\">";
     backReference = backReferenceBuf;
-    sprintf(backReference, "<img align=center src=\"%s\" BORDER=0 ALT=\"Previous\">", ConvertCase("back.gif"));
+    wxSprintf(backReference, _T("<img align=center src=\"%s\" BORDER=0 ALT=\"Previous\">"), ConvertCase(_T("back.gif")));
   }
 
-  char *forwardReference = NULL;
+  wxChar *forwardReference; // no need to initialize because always assigned below
   if (htmlBrowseButtons == HTML_BUTTONS_TEXT)
-    forwardReference = "&gt;&gt;";
+    forwardReference = _T("&gt;&gt;");
   else
   {
 //    forwardReference = "<img align=center src=\"forward.gif\" ALT=\"Next\">";
     forwardReference = forwardReferenceBuf;
-    sprintf(forwardReference, "<img align=center src=\"%s\" BORDER=0 ALT=\"Next\">", ConvertCase("forward.gif"));
+    wxSprintf(forwardReference, _T("<img align=center src=\"%s\" BORDER=0 ALT=\"Next\">"), ConvertCase(_T("forward.gif")));
   }
 
-  TexOutput("<CENTER>");
+  TexOutput(_T("<CENTER>"));
 
-  char buf[200];
+  wxChar buf[200];
 
   /*
    * Contents button
@@ -428,19 +428,19 @@ void AddBrowseButtons(char *upLabel, char *upFilename,
 
   if (truncateFilenames)
   {
-    char buf1[80];
-    strcpy(buf1, ConvertCase(wxFileNameFromPath(FileRoot)));
-    sprintf(buf, "\n<A HREF=\"%s.%s\">%s</A> ", buf1, ConvertCase("htm"), contentsReference);
+    wxChar buf1[80];
+    wxStrcpy(buf1, ConvertCase(wxFileNameFromPath(FileRoot)));
+    wxSprintf(buf, _T("\n<A HREF=\"%s.%s\">%s</A> "), buf1, ConvertCase(_T("htm")), contentsReference);
   }
   else
   {
-    char buf1[80];
-    strcpy(buf1, ConvertCase(wxFileNameFromPath(FileRoot)));
-    sprintf(buf, "\n<A HREF=\"%s%s\">%s</A> ", buf1, ConvertCase("_contents.html"), contentsReference);
+    wxChar buf1[80];
+    wxStrcpy(buf1, ConvertCase(wxFileNameFromPath(FileRoot)));
+    wxSprintf(buf, _T("\n<A HREF=\"%s%s\">%s</A> "), buf1, ConvertCase(_T("_contents.html")), contentsReference);
   }
-//  TexOutput("<NOFRAMES>");
+//  TexOutput(_T("<NOFRAMES>"));
   TexOutput(buf);
-//  TexOutput("</NOFRAMES>");
+//  TexOutput(_T("</NOFRAMES>"));
 
   /*
    * Up button
@@ -449,15 +449,15 @@ void AddBrowseButtons(char *upLabel, char *upFilename,
 
   if (upLabel && upFilename)
   {
-    if (strlen(upLabel) > 0)
-      sprintf(buf, "<A HREF=\"%s#%s\">%s</A> ", ConvertCase(upFilename), upLabel, upReference);
+    if (wxStrlen(upLabel) > 0)
+      wxSprintf(buf, _T("<A HREF=\"%s#%s\">%s</A> "), ConvertCase(upFilename), upLabel, upReference);
     else
-      sprintf(buf, "<A HREF=\"%s\">%s</A> ", ConvertCase(upFilename), upReference);
-    if (strcmp(upLabel, "contents") == 0)
+      wxSprintf(buf, _T("<A HREF=\"%s\">%s</A> "), ConvertCase(upFilename), upReference);
+    if (wxStrcmp(upLabel, _T("contents")) == 0)
     {
-//      TexOutput("<NOFRAMES>");
+//      TexOutput(_T("<NOFRAMES>"));
       TexOutput(buf);
-//      TexOutput("</NOFRAMES>");
+//      TexOutput(_T("</NOFRAMES>"));
     }
     else
      TexOutput(buf);
@@ -470,12 +470,12 @@ void AddBrowseButtons(char *upLabel, char *upFilename,
 
   if (previousLabel && previousFilename)
   {
-    sprintf(buf, "<A HREF=\"%s#%s\">%s</A> ", ConvertCase(previousFilename), previousLabel, backReference);
-    if (strcmp(previousLabel, "contents") == 0)
+    wxSprintf(buf, _T("<A HREF=\"%s#%s\">%s</A> "), ConvertCase(previousFilename), previousLabel, backReference);
+    if (wxStrcmp(previousLabel, _T("contents")) == 0)
     {
-//      TexOutput("<NOFRAMES>");
+//      TexOutput(_T("<NOFRAMES>"));
       TexOutput(buf);
-//      TexOutput("</NOFRAMES>");
+//      TexOutput(_T("</NOFRAMES>"));
     }
     else
       TexOutput(buf);
@@ -483,12 +483,12 @@ void AddBrowseButtons(char *upLabel, char *upFilename,
   else
   {
     // A placeholder so the buttons don't keep moving position
-    sprintf(buf, "%s ", backReference);
+    wxSprintf(buf, _T("%s "), backReference);
     TexOutput(buf);
   }
 
-  char *nextLabel = NULL;
-  char *nextFilename = NULL;
+  wxChar *nextLabel = NULL;
+  wxChar *nextFilename = NULL;
 
   // Get the next page, and record the previous page's 'next' page
   // (i.e. this page)
@@ -517,13 +517,13 @@ void AddBrowseButtons(char *upLabel, char *upFilename,
 
   if (nextLabel && nextFilename)
   {
-    sprintf(buf, "<A HREF=\"%s#%s\">%s</A> ", ConvertCase(nextFilename), nextLabel, forwardReference);
+    wxSprintf(buf, _T("<A HREF=\"%s#%s\">%s</A> "), ConvertCase(nextFilename), nextLabel, forwardReference);
     TexOutput(buf);
   }
   else
   {
     // A placeholder so the buttons don't keep moving position
-    sprintf(buf, "%s ", forwardReference);
+    wxSprintf(buf, _T("%s "), forwardReference);
     TexOutput(buf);
   }
 
@@ -531,8 +531,8 @@ void AddBrowseButtons(char *upLabel, char *upFilename,
    * Horizontal rule to finish it off nicely.
    *
    */
-  TexOutput("</CENTER>");
-  TexOutput("<HR>\n");
+  TexOutput(_T("</CENTER>"));
+  TexOutput(_T("<HR>\n"));
 
   // Update last topic/filename
   if (lastFileName)
@@ -545,39 +545,41 @@ void AddBrowseButtons(char *upLabel, char *upFilename,
 
 // A colour string is either 3 numbers separated by semicolons (RGB),
 // or a reference to a GIF. Return the filename or a hex string like #934CE8
-char *ParseColourString(char *bkStr, bool *isPicture)
+wxChar *ParseColourString(wxChar *bkStr, bool *isPicture)
 {
-  static char resStr[300];
-  strcpy(resStr, bkStr);
-  char *tok1 = strtok(resStr, ";");
-  char *tok2 = strtok(NULL, ";");
-  if (tok1)
+  static wxChar resStr[300];
+  wxStrcpy(resStr, bkStr);
+  wxStringTokenizer tok(resStr, _T(";"), wxTOKEN_STRTOK);
+  if (tok.HasMoreTokens())
   {
-    if (!tok2)
+    wxString token1 = tok.GetNextToken();
+    if (!tok.HasMoreTokens())
     {
       *isPicture = TRUE;
       return resStr;
     }
     else
     {
+      wxString token2 = tok.GetNextToken();
       *isPicture = FALSE;
-      char *tok3 = strtok(NULL, ";");
-      if (tok3)
+      if (tok.HasMoreTokens())
       {
+        wxString token3 = tok.GetNextToken();
+
         // Now convert 3 strings into decimal numbers, and then hex numbers.
-        int red = atoi(tok1);
-        int green = atoi(tok2);
-        int blue = atoi(tok3);
+        int red = wxAtoi(token1.c_str());
+        int green = wxAtoi(token2.c_str());
+        int blue = wxAtoi(token3.c_str());
 
-        strcpy(resStr, "#");
+        wxStrcpy(resStr, _T("#"));
 
-        char buf[3];
+        wxChar buf[3];
         DecToHex(red, buf);
-        strcat(resStr, buf);
+        wxStrcat(resStr, buf);
         DecToHex(green, buf);
-        strcat(resStr, buf);
+        wxStrcat(resStr, buf);
         DecToHex(blue, buf);
-        strcat(resStr, buf);
+        wxStrcat(resStr, buf);
         return resStr;
       }
       else return NULL;
@@ -594,32 +596,35 @@ void OutputFont(void)
   if (htmlFaceName)
   {
     // Output <FONT FACE=...>
-    TexOutput("<FONT FACE=\"");
+    TexOutput(_T("<FONT FACE=\""));
     TexOutput(htmlFaceName);
-    TexOutput("\">\n");
+    TexOutput(_T("\">\n"));
   }
 }
 
 // Output start of <BODY> block
 void OutputBodyStart(void)
 {
-  TexOutput("\n<BODY");
+  TexOutput(_T("\n<BODY"));
   if (backgroundImageString)
   {
     bool isPicture = FALSE;
-    char *s = ParseColourString(backgroundImageString, &isPicture);
+    wxChar *s = ParseColourString(backgroundImageString, &isPicture);
     if (s)
     {
-      TexOutput(" BACKGROUND=\""); TexOutput(s); TexOutput("\"");
+      TexOutput(_T(" BACKGROUND=\""));
+      TexOutput(s); 
+      TexOutput(_T("\""));
     }
   }
   if (backgroundColourString)
   {
     bool isPicture = FALSE;
-    char *s = ParseColourString(backgroundColourString, &isPicture);
+    wxChar *s = ParseColourString(backgroundColourString, &isPicture);
     if (s)
     {
-      TexOutput(" BGCOLOR="); TexOutput(s);
+      TexOutput(_T(" BGCOLOR="));
+      TexOutput(s);
     }
   }
 
@@ -627,53 +632,53 @@ void OutputBodyStart(void)
   if (textColourString)
   {
     bool isPicture = FALSE;
-    char *s = ParseColourString(textColourString, &isPicture);
+    wxChar *s = ParseColourString(textColourString, &isPicture);
     if (s)
     {
-      TexOutput(" TEXT="); TexOutput(s);
+      TexOutput(_T(" TEXT=")); TexOutput(s);
     }
   }
   // Set link text colour, if one is specified
   if (linkColourString)
   {
     bool isPicture = FALSE;
-    char *s = ParseColourString(linkColourString, &isPicture);
+    wxChar *s = ParseColourString(linkColourString, &isPicture);
     if (s)
     {
-      TexOutput(" LINK="); TexOutput(s);
+      TexOutput(_T(" LINK=")); TexOutput(s);
     }
   }
   // Set followed link text colour, if one is specified
   if (followedLinkColourString)
   {
     bool isPicture = FALSE;
-    char *s = ParseColourString(followedLinkColourString, &isPicture);
+    wxChar *s = ParseColourString(followedLinkColourString, &isPicture);
     if (s)
     {
-      TexOutput(" VLINK="); TexOutput(s);
+      TexOutput(_T(" VLINK=")); TexOutput(s);
     }
   }
-  TexOutput(">\n");
+  TexOutput(_T(">\n"));
 
   OutputFont();
 }
 
 void HTMLHead()
 {
-  TexOutput("<head>");
+  TexOutput(_T("<head>"));
   if (htmlStylesheet) {
-    TexOutput("<link rel=stylesheet type=\"text/css\" href=\"");
+    TexOutput(_T("<link rel=stylesheet type=\"text/css\" href=\""));
     TexOutput(htmlStylesheet);
-    TexOutput("\">");
+    TexOutput(_T("\">"));
   }
 };
 
 void HTMLHeadTo(FILE* f)
 {
   if (htmlStylesheet)
-    fprintf(f,"<head><link rel=stylesheet type=\"text/css\" href=\"%s\">",htmlStylesheet);
+    wxFprintf(f,_T("<head><link rel=stylesheet type=\"text/css\" href=\"%s\">"),htmlStylesheet);
   else
-    fprintf(f,"<head>");
+    wxFprintf(f,_T("<head>"));
 }
 
 // Called on start/end of macro examination
@@ -697,7 +702,7 @@ void HTMLOnMacro(int macroId, int no_args, bool start)
       SetCurrentOutput(NULL);
       startedSections = TRUE;
 
-      char *topicName = FindTopicName(GetNextChunk());
+      wxChar *topicName = FindTopicName(GetNextChunk());
       ReopenFile(&Chapters, &ChaptersName);
       AddTexRef(topicName, ChaptersName, ChapterNameString);
 
@@ -707,38 +712,38 @@ void HTMLOnMacro(int macroId, int no_args, bool start)
       SetCurrentOutput(Chapters);
 
       HTMLHead();
-      TexOutput("<title>");
+      TexOutput(_T("<title>"));
       OutputCurrentSection(); // Repeat section header
-      TexOutput("</title></head>\n");
+      TexOutput(_T("</title></head>\n"));
       OutputBodyStart();
 
-      char titleBuf[200];
+      wxChar titleBuf[200];
       if (truncateFilenames)
-        sprintf(titleBuf, "%s.htm", wxFileNameFromPath(FileRoot));
+        wxSprintf(titleBuf, _T("%s.htm"), wxFileNameFromPath(FileRoot));
       else
-        sprintf(titleBuf, "%s_contents.html", wxFileNameFromPath(FileRoot));
+        wxSprintf(titleBuf, _T("%s_contents.html"), wxFileNameFromPath(FileRoot));
 
-      fprintf(Chapters, "<A NAME=\"%s\"></A>", topicName);
+      wxFprintf(Chapters, _T("<A NAME=\"%s\"></A>"), topicName);
 
-      AddBrowseButtons("", titleBuf, // Up
+      AddBrowseButtons(_T(""), titleBuf, // Up
                        lastTopic, lastFileName,  // Last topic
                        topicName, ChaptersName); // This topic
 
-      fprintf(Contents, "\n<LI><A HREF=\"%s#%s\">", ConvertCase(ChaptersName), topicName);
+      wxFprintf(Contents, _T("\n<LI><A HREF=\"%s#%s\">"), ConvertCase(ChaptersName), topicName);
 
       if (htmlFrameContents && FrameContents)
       {
         SetCurrentOutput(FrameContents);
-        fprintf(FrameContents, "\n<LI><A HREF=\"%s#%s\" TARGET=\"mainwindow\">", ConvertCase(ChaptersName), topicName);
+        wxFprintf(FrameContents, _T("\n<LI><A HREF=\"%s#%s\" TARGET=\"mainwindow\">"), ConvertCase(ChaptersName), topicName);
         OutputCurrentSection();
-        fprintf(FrameContents, "</A>\n");
+        wxFprintf(FrameContents, _T("</A>\n"));
       }
 
       SetCurrentOutputs(Contents, Chapters);
-      fprintf(Chapters, "\n<H2>");
+      wxFprintf(Chapters, _T("\n<H2>"));
       OutputCurrentSection();
-      fprintf(Contents, "</A>\n");
-      fprintf(Chapters, "</H2>\n");
+      wxFprintf(Contents, _T("</A>\n"));
+      wxFprintf(Chapters, _T("</H2>\n"));
 
       SetCurrentOutput(Chapters);
 
@@ -768,7 +773,7 @@ void HTMLOnMacro(int macroId, int no_args, bool start)
       SetCurrentOutput(NULL);
       startedSections = TRUE;
 
-      char *topicName = FindTopicName(GetNextChunk());
+      wxChar *topicName = FindTopicName(GetNextChunk());
       ReopenFile(&Sections, &SectionsName);
       AddTexRef(topicName, SectionsName, SectionNameString);
 
@@ -777,12 +782,12 @@ void HTMLOnMacro(int macroId, int no_args, bool start)
 
       SetCurrentOutput(Sections);
       HTMLHead();
-      TexOutput("<title>");
+      TexOutput(_T("<title>"));
       OutputCurrentSection();
-      TexOutput("</title></head>\n");
+      TexOutput(_T("</title></head>\n"));
       OutputBodyStart();
 
-      fprintf(Sections, "<A NAME=\"%s\"></A>", topicName);
+      wxFprintf(Sections, _T("<A NAME=\"%s\"></A>"), topicName);
       AddBrowseButtons(CurrentChapterName, CurrentChapterFile, // Up
                        lastTopic, lastFileName,  // Last topic
                        topicName, SectionsName); // This topic
@@ -791,18 +796,18 @@ void HTMLOnMacro(int macroId, int no_args, bool start)
 
       SetCurrentOutputs(jumpFrom, Sections);
       if (DocumentStyle == LATEX_ARTICLE)
-        fprintf(jumpFrom, "\n<LI><A HREF=\"%s#%s\">", ConvertCase(SectionsName), topicName);
+        wxFprintf(jumpFrom, _T("\n<LI><A HREF=\"%s#%s\">"), ConvertCase(SectionsName), topicName);
       else
-        fprintf(jumpFrom, "\n<A HREF=\"%s#%s\"><B>", ConvertCase(SectionsName), topicName);
+        wxFprintf(jumpFrom, _T("\n<A HREF=\"%s#%s\"><B>"), ConvertCase(SectionsName), topicName);
 
-      fprintf(Sections, "\n<H2>");
+      wxFprintf(Sections, _T("\n<H2>"));
       OutputCurrentSection();
 
       if (DocumentStyle == LATEX_ARTICLE)
-        fprintf(jumpFrom, "</A>\n");
+        wxFprintf(jumpFrom, _T("</A>\n"));
       else
-        fprintf(jumpFrom, "</B></A><BR>\n");
-      fprintf(Sections, "</H2>\n");
+        wxFprintf(jumpFrom, _T("</B></A><BR>\n"));
+      wxFprintf(Sections, _T("</H2>\n"));
 
       SetCurrentOutput(Sections);
       // Add this section title to the list of keywords
@@ -823,7 +828,7 @@ void HTMLOnMacro(int macroId, int no_args, bool start)
     {
       if (!Sections)
       {
-        OnError("You cannot have a subsection before a section!");
+        OnError(_T("You cannot have a subsection before a section!"));
       }
       else
       {
@@ -835,11 +840,11 @@ void HTMLOnMacro(int macroId, int no_args, bool start)
           if ( combineSubSections && !subsectionStarted )
           {
             // Read old .con file in at this point
-            char buf[256];
-            strcpy(buf, CurrentSectionFile);
+            wxChar buf[256];
+            wxStrcpy(buf, CurrentSectionFile);
             wxStripExtension(buf);
-            strcat(buf, ".con");
-            FILE *fd = fopen(buf, "r");
+            wxStrcat(buf, _T(".con"));
+            FILE *fd = wxFopen(buf, _T("r"));
             if ( fd )
             {
                 int ch = getc(fd);
@@ -850,7 +855,7 @@ void HTMLOnMacro(int macroId, int no_args, bool start)
                 }
                 fclose(fd);
             }
-            fprintf(Sections, "<P>\n");
+            wxFprintf(Sections, _T("<P>\n"));
 
             // Close old file, create a new file for the sub(sub)section contents entries
             ReopenSectionContentsFile();
@@ -859,7 +864,7 @@ void HTMLOnMacro(int macroId, int no_args, bool start)
           startedSections = TRUE;
           subsectionStarted = TRUE;
 
-          char *topicName = FindTopicName(GetNextChunk());
+          wxChar *topicName = FindTopicName(GetNextChunk());
 
           if ( !combineSubSections )
           {
@@ -871,23 +876,23 @@ void HTMLOnMacro(int macroId, int no_args, bool start)
             SetCurrentOutput(Subsections);
 
            HTMLHead();
-            TexOutput("<title>");
+            TexOutput(_T("<title>"));
             OutputCurrentSection();
-            TexOutput("</title></head>\n");
+            TexOutput(_T("</title></head>\n"));
             OutputBodyStart();
 
-            fprintf(Subsections, "<A NAME=\"%s\"></A>", topicName);
+            wxFprintf(Subsections, _T("<A NAME=\"%s\"></A>"), topicName);
             AddBrowseButtons(CurrentSectionName, CurrentSectionFile, // Up
                            lastTopic, lastFileName,  // Last topic
                            topicName, SubsectionsName); // This topic
 
             SetCurrentOutputs(Sections, Subsections);
-            fprintf(Sections, "\n<A HREF=\"%s#%s\"><B>", ConvertCase(SubsectionsName), topicName);
+            wxFprintf(Sections, _T("\n<A HREF=\"%s#%s\"><B>"), ConvertCase(SubsectionsName), topicName);
 
-            fprintf(Subsections, "\n<H3>");
+            wxFprintf(Subsections, _T("\n<H3>"));
             OutputCurrentSection();
-            fprintf(Sections, "</B></A><BR>\n");
-            fprintf(Subsections, "</H3>\n");
+            wxFprintf(Sections, _T("</B></A><BR>\n"));
+            wxFprintf(Subsections, _T("</H3>\n"));
 
             SetCurrentOutput(Subsections);
           }
@@ -897,18 +902,18 @@ void HTMLOnMacro(int macroId, int no_args, bool start)
             SetCurrentSubsectionName(topicName, SectionsName);
 
 //            if ( subsectionNo != 0 )
-            fprintf(Sections, "\n<HR>\n");
+            wxFprintf(Sections, _T("\n<HR>\n"));
 
             // We're putting everything into the section file
-            fprintf(Sections, "<A NAME=\"%s\"></A>", topicName);
-            fprintf(Sections, "\n<H3>");
+            wxFprintf(Sections, _T("<A NAME=\"%s\"></A>"), topicName);
+            wxFprintf(Sections, _T("\n<H3>"));
             OutputCurrentSection();
-            fprintf(Sections, "</H3>\n");
+            wxFprintf(Sections, _T("</H3>\n"));
 
             SetCurrentOutput(SectionContentsFD);
-            fprintf(SectionContentsFD, "<A HREF=\"#%s\">", topicName);
+            wxFprintf(SectionContentsFD, _T("<A HREF=\"#%s\">"), topicName);
             OutputCurrentSection();
-            TexOutput("</A><BR>\n");
+            TexOutput(_T("</A><BR>\n"));
 
             if (htmlWorkshopFiles) HTMLWorkshopAddToContents(2, topicName, SectionsName);
             SetCurrentOutput(Sections);
@@ -931,7 +936,7 @@ void HTMLOnMacro(int macroId, int no_args, bool start)
     {
       if (!Subsections && !combineSubSections)
       {
-        OnError("You cannot have a subsubsection before a subsection!");
+        OnError(_T("You cannot have a subsubsection before a subsection!"));
       }
       else
       {
@@ -940,7 +945,7 @@ void HTMLOnMacro(int macroId, int no_args, bool start)
 
         startedSections = TRUE;
 
-        char *topicName = FindTopicName(GetNextChunk());
+        wxChar *topicName = FindTopicName(GetNextChunk());
 
         if ( !combineSubSections )
         {
@@ -952,41 +957,41 @@ void HTMLOnMacro(int macroId, int no_args, bool start)
 
             SetCurrentOutput(Subsubsections);
            HTMLHead();
-            TexOutput("<title>");
+            TexOutput(_T("<title>"));
             OutputCurrentSection();
-            TexOutput("</title></head>\n");
+            TexOutput(_T("</title></head>\n"));
             OutputBodyStart();
 
-            fprintf(Subsubsections, "<A NAME=\"%s\"></A>", topicName);
+            wxFprintf(Subsubsections, _T("<A NAME=\"%s\"></A>"), topicName);
 
             AddBrowseButtons(CurrentSubsectionName, CurrentSubsectionFile, // Up
                          lastTopic, lastFileName,  // Last topic
                          topicName, SubsubsectionsName); // This topic
 
             SetCurrentOutputs(Subsections, Subsubsections);
-            fprintf(Subsections, "\n<A HREF=\"%s#%s\"><B>", ConvertCase(SubsubsectionsName), topicName);
+            wxFprintf(Subsections, _T("\n<A HREF=\"%s#%s\"><B>"), ConvertCase(SubsubsectionsName), topicName);
 
-            fprintf(Subsubsections, "\n<H3>");
+            wxFprintf(Subsubsections, _T("\n<H3>"));
             OutputCurrentSection();
-            fprintf(Subsections, "</B></A><BR>\n");
-            fprintf(Subsubsections, "</H3>\n");
+            wxFprintf(Subsections, _T("</B></A><BR>\n"));
+            wxFprintf(Subsubsections, _T("</H3>\n"));
         }
         else
         {
             AddTexRef(topicName, SectionsName, SubsubsectionNameString);
             SetCurrentSubsectionName(topicName, SectionsName);
-            fprintf(Sections, "\n<HR>\n");
+            wxFprintf(Sections, _T("\n<HR>\n"));
 
             // We're putting everything into the section file
-            fprintf(Sections, "<A NAME=\"%s\"></A>", topicName);
-            fprintf(Sections, "\n<H3>");
+            wxFprintf(Sections, _T("<A NAME=\"%s\"></A>"), topicName);
+            wxFprintf(Sections, _T("\n<H3>"));
             OutputCurrentSection();
-            fprintf(Sections, "</H3>\n");
+            wxFprintf(Sections, _T("</H3>\n"));
 /* TODO: where do we put subsubsection contents entry - indented, with subsection entries?
             SetCurrentOutput(SectionContentsFD);
-            fprintf(SectionContentsFD, "<A HREF=\"#%s\">", topicName);
+            wxFprintf(SectionContentsFD, "<A HREF=\"#%s\">", topicName);
             OutputCurrentSection();
-            TexOutput("</A><BR>");
+            TexOutput(_T("</A><BR>"));
 */
             if (htmlWorkshopFiles) HTMLWorkshopAddToContents(2, topicName, SectionsName);
             SetCurrentOutput(Sections);
@@ -1047,19 +1052,19 @@ void HTMLOnMacro(int macroId, int no_args, bool start)
   }
   case ltVOID:
 //    if (start)
-//      TexOutput("<B>void</B>");
+//      TexOutput(_T("<B>void</B>"));
     break;
   case ltHARDY:
     if (start)
-      TexOutput("HARDY");
+      TexOutput(_T("HARDY"));
     break;
   case ltWXCLIPS:
     if (start)
-      TexOutput("wxCLIPS");
+      TexOutput(_T("wxCLIPS"));
     break;
   case ltAMPERSAND:
     if (start)
-      TexOutput("&amp;");
+      TexOutput(_T("&amp;"));
     break;
   case ltSPECIALAMPERSAND:
   {
@@ -1069,17 +1074,17 @@ void HTMLOnMacro(int macroId, int no_args, bool start)
       {
         // End cell, start cell
 
-        TexOutput("</FONT></TD>");
+        TexOutput(_T("</FONT></TD>"));
 
         // Start new row and cell, setting alignment for the first cell.
         if (currentColumn < noColumns)
           currentColumn ++;
 
-        char buf[100];
+        wxChar buf[100];
         if (TableData[currentColumn].justification == 'c')
-          sprintf(buf, "\n<TD ALIGN=CENTER>");
+          wxSprintf(buf, _T("\n<TD ALIGN=CENTER>"));
         else if (TableData[currentColumn].justification == 'r')
-          sprintf(buf, "\n<TD ALIGN=RIGHT>");
+          wxSprintf(buf, _T("\n<TD ALIGN=RIGHT>"));
         else if (TableData[currentColumn].absWidth)
         {
           // Convert from points * 20 into pixels.
@@ -1088,15 +1093,15 @@ void HTMLOnMacro(int macroId, int no_args, bool start)
           // Say the display is 100 DPI (dots/pixels per inch).
           // There are 72 pts to the inch. So 1pt = 1/72 inch, or 100 * 1/72 dots.
           int pixels = (int)(points * 100.0 / 72.0);
-          sprintf(buf, "<TD ALIGN=CENTER WIDTH=%d>", pixels);
+          wxSprintf(buf, _T("<TD ALIGN=CENTER WIDTH=%d>"), pixels);
         }
         else
-          sprintf(buf, "\n<TD ALIGN=LEFT>");
+          wxSprintf(buf, _T("\n<TD ALIGN=LEFT>"));
         TexOutput(buf);
                OutputFont();
       }
       else
-        TexOutput("&amp;");
+        TexOutput(_T("&amp;"));
     }
     break;
   }
@@ -1109,10 +1114,10 @@ void HTMLOnMacro(int macroId, int no_args, bool start)
         // End row. In fact, tables without use of \row or \ruledrow isn't supported for
         // HTML: the syntax is too different (e.g. how do we know where to put the first </TH>
         // if we've ended the last row?). So normally you wouldn't use \\ to end a row.
-        TexOutput("</TR>\n");
+        TexOutput(_T("</TR>\n"));
       }
       else
-        TexOutput("<BR>\n");
+        TexOutput(_T("<BR>\n"));
     }
     break;
   }
@@ -1124,11 +1129,11 @@ void HTMLOnMacro(int macroId, int no_args, bool start)
       currentColumn = 0;
 
       // Start new row and cell, setting alignment for the first cell.
-      char buf[100];
+      wxChar buf[100];
       if (TableData[currentColumn].justification == 'c')
-        sprintf(buf, "<TR>\n<TD ALIGN=CENTER>");
+        wxSprintf(buf, _T("<TR>\n<TD ALIGN=CENTER>"));
       else if (TableData[currentColumn].justification == 'r')
-        sprintf(buf, "<TR>\n<TD ALIGN=RIGHT>");
+        wxSprintf(buf, _T("<TR>\n<TD ALIGN=RIGHT>"));
       else if (TableData[currentColumn].absWidth)
       {
         // Convert from points * 20 into pixels.
@@ -1137,10 +1142,10 @@ void HTMLOnMacro(int macroId, int no_args, bool start)
         // Say the display is 100 DPI (dots/pixels per inch).
         // There are 72 pts to the inch. So 1pt = 1/72 inch, or 100 * 1/72 dots.
         int pixels = (int)(points * 100.0 / 72.0);
-        sprintf(buf, "<TR>\n<TD ALIGN=CENTER WIDTH=%d>", pixels);
+        wxSprintf(buf, _T("<TR>\n<TD ALIGN=CENTER WIDTH=%d>"), pixels);
       }
       else
-        sprintf(buf, "<TR>\n<TD ALIGN=LEFT>");
+        wxSprintf(buf, _T("<TR>\n<TD ALIGN=LEFT>"));
       TexOutput(buf);
          OutputFont();
     }
@@ -1148,7 +1153,7 @@ void HTMLOnMacro(int macroId, int no_args, bool start)
     {
       // End cell and row
       // Start new row and cell
-      TexOutput("</FONT></TD>\n</TR>\n");
+      TexOutput(_T("</FONT></TD>\n</TR>\n"));
     }
     break;
   }
@@ -1156,7 +1161,7 @@ void HTMLOnMacro(int macroId, int no_args, bool start)
   case ltBRCLEAR:
   {
     if (start)
-      TexOutput("<BR CLEAR=ALL>");
+      TexOutput(_T("<BR CLEAR=ALL>"));
     break;
   }
   case ltRTFSP:  // Explicit space, RTF only
@@ -1166,18 +1171,18 @@ void HTMLOnMacro(int macroId, int no_args, bool start)
     if (start)
     {
       if (inVerbatim)
-        TexOutput("~");
+        TexOutput(_T("~"));
       else
-        TexOutput(" ");
+        TexOutput(_T(" "));
     }
     break;
   }
   case ltINDENTED :
   {
     if ( start )
-        TexOutput("<UL><UL>\n");
+        TexOutput(_T("<UL><UL>\n"));
     else
-        TexOutput("</UL></UL>\n");
+        TexOutput(_T("</UL></UL>\n"));
     break;
   }
   case ltITEMIZE:
@@ -1201,14 +1206,14 @@ void HTMLOnMacro(int macroId, int no_args, bool start)
       switch (listType)
       {
         case LATEX_ITEMIZE:
-          TexOutput("<UL>\n");
+          TexOutput(_T("<UL>\n"));
           break;
         case LATEX_ENUMERATE:
-          TexOutput("<OL>\n");
+          TexOutput(_T("<OL>\n"));
           break;
         case LATEX_DESCRIPTION:
         default:
-          TexOutput("<DL>\n");
+          TexOutput(_T("<DL>\n"));
           break;
       }
     }
@@ -1221,14 +1226,14 @@ void HTMLOnMacro(int macroId, int no_args, bool start)
         switch (struc->listType)
         {
           case LATEX_ITEMIZE:
-            TexOutput("</UL>\n");
+            TexOutput(_T("</UL>\n"));
             break;
           case LATEX_ENUMERATE:
-            TexOutput("</OL>\n");
+            TexOutput(_T("</OL>\n"));
             break;
           case LATEX_DESCRIPTION:
           default:
-            TexOutput("</DL>\n");
+            TexOutput(_T("</DL>\n"));
             break;
         }
 
@@ -1241,9 +1246,9 @@ void HTMLOnMacro(int macroId, int no_args, bool start)
   case ltTWOCOLLIST :
   {
     if ( start )
-        TexOutput("\n<TABLE>\n");
+        TexOutput(_T("\n<TABLE>\n"));
     else {
-        TexOutput("\n</TABLE>\n");
+        TexOutput(_T("\n</TABLE>\n"));
     // DHS 
         TwoColWidthA = -1;
         TwoColWidthB = -1;
@@ -1253,7 +1258,7 @@ void HTMLOnMacro(int macroId, int no_args, bool start)
   case ltPAR:
   {
     if (start)
-      TexOutput("<P>\n");
+      TexOutput(_T("<P>\n"));
     break;
   }
 /* For footnotes we need to output the text at the bottom of the page and
@@ -1263,28 +1268,28 @@ void HTMLOnMacro(int macroId, int no_args, bool start)
   {
     if (start)
     {
-      TexOutput("<FN>);
+      TexOutput(_T("<FN>"));
     }
-    else TexOutput("</FN>");
+    else TexOutput(_T("</FN>"));
     break;
   }
 */
   case ltVERB:
   {
     if (start)
-      TexOutput("<TT>");
-    else TexOutput("</TT>");
+      TexOutput(_T("<TT>"));
+    else TexOutput(_T("</TT>"));
     break;
   }
   case ltVERBATIM:
   {
     if (start)
     {
-      char buf[100];
-      sprintf(buf, "<PRE>\n");
+      wxChar buf[100];
+      wxSprintf(buf, _T("<PRE>\n"));
       TexOutput(buf);
     }
-    else TexOutput("</PRE>\n");
+    else TexOutput(_T("</PRE>\n"));
     break;
   }
   case ltCENTERLINE:
@@ -1292,9 +1297,9 @@ void HTMLOnMacro(int macroId, int no_args, bool start)
   {
     if (start)
     {
-      TexOutput("<CENTER>");
+      TexOutput(_T("<CENTER>"));
     }
-    else TexOutput("</CENTER>");
+    else TexOutput(_T("</CENTER>"));
     break;
   }
   case ltFLUSHLEFT:
@@ -1302,9 +1307,9 @@ void HTMLOnMacro(int macroId, int no_args, bool start)
 /*
     if (start)
     {
-      TexOutput("{\\ql ");
+      TexOutput(_T("{\\ql "));
     }
-    else TexOutput("}\\par\\pard\n");
+    else TexOutput(_T("}\\par\\pard\n"));
 */
     break;
   }
@@ -1313,9 +1318,9 @@ void HTMLOnMacro(int macroId, int no_args, bool start)
 /*
     if (start)
     {
-      TexOutput("{\\qr ");
+      TexOutput(_T("{\\qr "));
     }
-    else TexOutput("}\\par\\pard\n");
+    else TexOutput(_T("}\\par\\pard\n"));
 */
     break;
   }
@@ -1324,9 +1329,9 @@ void HTMLOnMacro(int macroId, int no_args, bool start)
     if (start)
     {
       // Netscape extension
-      TexOutput("<FONT SIZE=2>");
+      TexOutput(_T("<FONT SIZE=2>"));
     }
-    else TexOutput("</FONT>");
+    else TexOutput(_T("</FONT>"));
     break;
   }
   case ltTINY:
@@ -1334,9 +1339,9 @@ void HTMLOnMacro(int macroId, int no_args, bool start)
     if (start)
     {
       // Netscape extension
-      TexOutput("<FONT SIZE=1>");
+      TexOutput(_T("<FONT SIZE=1>"));
     }
-    else TexOutput("</FONT>");
+    else TexOutput(_T("</FONT>"));
     break;
   }
   case ltNORMALSIZE:
@@ -1344,9 +1349,9 @@ void HTMLOnMacro(int macroId, int no_args, bool start)
     if (start)
     {
       // Netscape extension
-      TexOutput("<FONT SIZE=3>");
+      TexOutput(_T("<FONT SIZE=3>"));
     }
-    else TexOutput("</FONT>");
+    else TexOutput(_T("</FONT>"));
     break;
   }
   case ltlarge:
@@ -1354,9 +1359,9 @@ void HTMLOnMacro(int macroId, int no_args, bool start)
     if (start)
     {
       // Netscape extension
-      TexOutput("<FONT SIZE=4>");
+      TexOutput(_T("<FONT SIZE=4>"));
     }
-    else TexOutput("</FONT>");
+    else TexOutput(_T("</FONT>"));
     break;
   }
   case ltLarge:
@@ -1364,9 +1369,9 @@ void HTMLOnMacro(int macroId, int no_args, bool start)
     if (start)
     {
       // Netscape extension
-      TexOutput("<FONT SIZE=5>");
+      TexOutput(_T("<FONT SIZE=5>"));
     }
-    else TexOutput("</FONT>");
+    else TexOutput(_T("</FONT>"));
     break;
   }
   case ltLARGE:
@@ -1374,9 +1379,9 @@ void HTMLOnMacro(int macroId, int no_args, bool start)
     if (start)
     {
       // Netscape extension
-      TexOutput("<FONT SIZE=6>");
+      TexOutput(_T("<FONT SIZE=6>"));
     }
-    else TexOutput("</FONT>");
+    else TexOutput(_T("</FONT>"));
     break;
   }
   case ltBFSERIES:
@@ -1385,9 +1390,9 @@ void HTMLOnMacro(int macroId, int no_args, bool start)
   {
     if (start)
     {
-      TexOutput("<B>");
+      TexOutput(_T("<B>"));
     }
-    else TexOutput("</B>");
+    else TexOutput(_T("</B>"));
     break;
   }
   case ltITSHAPE:
@@ -1396,9 +1401,9 @@ void HTMLOnMacro(int macroId, int no_args, bool start)
   {
     if (start)
     {
-      TexOutput("<I>");
+      TexOutput(_T("<I>"));
     }
-    else TexOutput("</I>");
+    else TexOutput(_T("</I>"));
     break;
   }
   case ltEMPH:
@@ -1406,18 +1411,18 @@ void HTMLOnMacro(int macroId, int no_args, bool start)
   {
     if (start)
     {
-      TexOutput("<EM>");
+      TexOutput(_T("<EM>"));
     }
-    else TexOutput("</EM>");
+    else TexOutput(_T("</EM>"));
     break;
   }
   case ltUNDERLINE:
   {
     if (start)
     {
-      TexOutput("<UL>");
+      TexOutput(_T("<UL>"));
     }
-    else TexOutput("</UL>");
+    else TexOutput(_T("</UL>"));
     break;
   }
   case ltTTFAMILY:
@@ -1426,52 +1431,52 @@ void HTMLOnMacro(int macroId, int no_args, bool start)
   {
     if (start)
     {
-      TexOutput("<TT>");
+      TexOutput(_T("<TT>"));
     }
-    else TexOutput("</TT>");
+    else TexOutput(_T("</TT>"));
     break;
   }
   case ltCOPYRIGHT:
   {
     if (start)
-      TexOutput("&copy;", TRUE);
+      TexOutput(_T("&copy;"), TRUE);
     break;
   }
   case ltREGISTERED:
   {
     if (start)
-      TexOutput("&reg;", TRUE);
+      TexOutput(_T("&reg;"), TRUE);
     break;
   }
   // Arrows
   case ltLEFTARROW:
   {
-    if (start) TexOutput("&lt;--");
+    if (start) TexOutput(_T("&lt;--"));
     break;
   }
   case ltLEFTARROW2:
   {
-    if (start) TexOutput("&lt;==");
+    if (start) TexOutput(_T("&lt;=="));
     break;
   }
   case ltRIGHTARROW:
   {
-      if (start) TexOutput("--&gt;");
+      if (start) TexOutput(_T("--&gt;"));
       break;
   }
   case ltRIGHTARROW2:
   {
-    if (start) TexOutput("==&gt;");
+    if (start) TexOutput(_T("==&gt;"));
     break;
   }
   case ltLEFTRIGHTARROW:
   {
-    if (start) TexOutput("&lt;--&gt;");
+    if (start) TexOutput(_T("&lt;--&gt;"));
     break;
   }
   case ltLEFTRIGHTARROW2:
   {
-    if (start) TexOutput("&lt;==&gt;");
+    if (start) TexOutput(_T("&lt;==&gt;"));
     break;
   }
 /*
@@ -1493,15 +1498,15 @@ void HTMLOnMacro(int macroId, int no_args, bool start)
         {
           if (descriptionItemArg)
           {
-            TexOutput("<DT> ");
+            TexOutput(_T("<DT> "));
             TraverseChildrenFromChunk(descriptionItemArg);
-            TexOutput("\n");
+            TexOutput(_T("\n"));
             descriptionItemArg = NULL;
           }
-          TexOutput("<DD>");
+          TexOutput(_T("<DD>"));
         }
         else
-          TexOutput("<LI>");
+          TexOutput(_T("<LI>"));
       }
     }
     break;
@@ -1511,25 +1516,25 @@ void HTMLOnMacro(int macroId, int no_args, bool start)
     if (start && DocumentTitle && DocumentAuthor)
     {
       // Add a special label for the contents page.
-//      TexOutput("<CENTER>\n");
-      TexOutput("<A NAME=\"contents\">");
-      TexOutput("<H2 ALIGN=CENTER>\n");
+//      TexOutput(_T("<CENTER>\n"));
+      TexOutput(_T("<A NAME=\"contents\">"));
+      TexOutput(_T("<H2 ALIGN=CENTER>\n"));
       TraverseChildrenFromChunk(DocumentTitle);
-      TexOutput("</H2>");
-      TexOutput("<P>");
-      TexOutput("</A>\n");
-      TexOutput("<P>\n\n");
-      TexOutput("<H3 ALIGN=CENTER>");
+      TexOutput(_T("</H2>"));
+      TexOutput(_T("<P>"));
+      TexOutput(_T("</A>\n"));
+      TexOutput(_T("<P>\n\n"));
+      TexOutput(_T("<H3 ALIGN=CENTER>"));
       TraverseChildrenFromChunk(DocumentAuthor);
-      TexOutput("</H3><P>\n\n");
+      TexOutput(_T("</H3><P>\n\n"));
       if (DocumentDate)
       {
-        TexOutput("<H3 ALIGN=CENTER>");
+        TexOutput(_T("<H3 ALIGN=CENTER>"));
         TraverseChildrenFromChunk(DocumentDate);
-        TexOutput("</H3><P>\n\n");
+        TexOutput(_T("</H3><P>\n\n"));
       }
-//      TexOutput("\n</CENTER>\n");
-      TexOutput("\n<P><HR><P>\n");
+//      TexOutput(_T("\n</CENTER>\n"));
+      TexOutput(_T("\n<P><HR><P>\n"));
 
 /*
       // Now do optional frame contents page
@@ -1538,24 +1543,24 @@ void HTMLOnMacro(int macroId, int no_args, bool start)
         SetCurrentOutput(FrameContents);
 
         // Add a special label for the contents page.
-        TexOutput("<CENTER>\n");
-        TexOutput("<H3>\n");
+        TexOutput(_T("<CENTER>\n"));
+        TexOutput(_T("<H3>\n"));
         TraverseChildrenFromChunk(DocumentTitle);
-        TexOutput("</H3>");
-        TexOutput("<P>");
-        TexOutput("</A>\n");
-        TexOutput("<P>\n\n");
-        TexOutput("<H3>");
+        TexOutput(_T("</H3>"));
+        TexOutput(_T("<P>"));
+        TexOutput(_T("</A>\n"));
+        TexOutput(_T("<P>\n\n"));
+        TexOutput(_T("<H3>"));
         TraverseChildrenFromChunk(DocumentAuthor);
-        TexOutput("</H3><P>\n\n");
+        TexOutput(_T("</H3><P>\n\n"));
         if (DocumentDate)
         {
-          TexOutput("<H4>");
+          TexOutput(_T("<H4>"));
           TraverseChildrenFromChunk(DocumentDate);
-          TexOutput("</H4><P>\n\n");
+          TexOutput(_T("</H4><P>\n\n"));
         }
-        TexOutput("\n</CENTER>\n");
-        TexOutput("<P><HR><P>\n");
+        TexOutput(_T("\n</CENTER>\n"));
+        TexOutput(_T("<P><HR><P>\n"));
 
         SetCurrentOutput(Titlepage);
       }
@@ -1584,7 +1589,7 @@ void HTMLOnMacro(int macroId, int no_args, bool start)
     else
     {
       DefaultOnMacro(macroId, no_args, start);
-      TexOutput("</DL>\n");
+      TexOutput(_T("</DL>\n"));
     }
     break;
   }
@@ -1592,7 +1597,7 @@ void HTMLOnMacro(int macroId, int no_args, bool start)
   {
     if (start)
     {
-      TexOutput("<HR>\n");
+      TexOutput(_T("<HR>\n"));
     }
     break;
   }
@@ -1600,7 +1605,7 @@ void HTMLOnMacro(int macroId, int no_args, bool start)
   {
     if (start)
     {
-      TexOutput("<HR>\n");
+      TexOutput(_T("<HR>\n"));
     }
     break;
   }
@@ -1608,7 +1613,7 @@ void HTMLOnMacro(int macroId, int no_args, bool start)
   {
     if (start)
     {
-      FILE *fd = fopen(ContentsName, "r");
+      FILE *fd = wxFopen(ContentsName, _T("r"));
       if (fd)
       {
         int ch = getc(fd);
@@ -1621,8 +1626,8 @@ void HTMLOnMacro(int macroId, int no_args, bool start)
       }
       else
       {
-        TexOutput("RUN TEX2RTF AGAIN FOR CONTENTS PAGE\n");
-        OnInform("Run Tex2RTF again to include contents page.");
+        TexOutput(_T("RUN TEX2RTF AGAIN FOR CONTENTS PAGE\n"));
+        OnInform(_T("Run Tex2RTF again to include contents page."));
       }
     }
     break;
@@ -1630,22 +1635,22 @@ void HTMLOnMacro(int macroId, int no_args, bool start)
   case ltLANGLEBRA:
   {
     if (start)
-      TexOutput("&lt;");
+      TexOutput(_T("&lt;"));
     break;
   }
   case ltRANGLEBRA:
   {
     if (start)
-      TexOutput("&gt;");
+      TexOutput(_T("&gt;"));
     break;
   }
   case ltQUOTE:
   case ltQUOTATION:
   {
     if (start)
-      TexOutput("<BLOCKQUOTE>");
+      TexOutput(_T("<BLOCKQUOTE>"));
     else
-      TexOutput("</BLOCKQUOTE>");
+      TexOutput(_T("</BLOCKQUOTE>"));
     break;
   }
   case ltCAPTION:
@@ -1654,27 +1659,27 @@ void HTMLOnMacro(int macroId, int no_args, bool start)
     if (start)
     {
       if (inTabular)
-        TexOutput("\n<CAPTION>");
+        TexOutput(_T("\n<CAPTION>"));
 
-      char figBuf[40];
+      wxChar figBuf[40];
 
       if ( inFigure )
       {
           figureNo ++;
 
           if (DocumentStyle != LATEX_ARTICLE)
-            sprintf(figBuf, "%s %d.%d: ", FigureNameString, chapterNo, figureNo);
+            wxSprintf(figBuf, _T("%s %d.%d: "), FigureNameString, chapterNo, figureNo);
           else
-            sprintf(figBuf, "%s %d: ", FigureNameString, figureNo);
+            wxSprintf(figBuf, _T("%s %d: "), FigureNameString, figureNo);
       }
       else
       {
           tableNo ++;
 
           if (DocumentStyle != LATEX_ARTICLE)
-            sprintf(figBuf, "%s %d.%d: ", TableNameString, chapterNo, tableNo);
+            wxSprintf(figBuf, _T("%s %d.%d: "), TableNameString, chapterNo, tableNo);
           else
-            sprintf(figBuf, "%s %d: ", TableNameString, tableNo);
+            wxSprintf(figBuf, _T("%s %d: "), TableNameString, tableNo);
       }
 
       TexOutput(figBuf);
@@ -1682,9 +1687,9 @@ void HTMLOnMacro(int macroId, int no_args, bool start)
     else
     {
       if (inTabular)
-        TexOutput("\n</CAPTION>\n");
+        TexOutput(_T("\n</CAPTION>\n"));
 
-      char *topicName = FindTopicName(GetNextChunk());
+      wxChar *topicName = FindTopicName(GetNextChunk());
 
       int n = inFigure ? figureNo : tableNo;
 
@@ -1696,7 +1701,7 @@ void HTMLOnMacro(int macroId, int no_args, bool start)
   }
   case ltSS:
   {
-    if (start) TexOutput("&szlig;");
+    if (start) TexOutput(_T("&szlig;"));
     break;
   }
   case ltFIGURE:
@@ -1739,42 +1744,41 @@ bool HTMLOnArgument(int macroId, int arg_no, bool start)
     if (!start && (arg_no == 1))
       currentSection = GetArgChunk();
     return FALSE;
-    break;
   }
   case ltFUNC:
   {
     if (start && (arg_no == 1))
-      TexOutput("<B>");
+      TexOutput(_T("<B>"));
 
     if (!start && (arg_no == 1))
-      TexOutput("</B> ");
+      TexOutput(_T("</B> "));
 
     if (start && (arg_no == 2))
     {
-      if (!suppressNameDecoration) TexOutput("<B>");
+      if (!suppressNameDecoration) TexOutput(_T("<B>"));
       currentMember = GetArgChunk();
     }
     if (!start && (arg_no == 2))
     {
-      if (!suppressNameDecoration) TexOutput("</B>");
+      if (!suppressNameDecoration) TexOutput(_T("</B>"));
     }
 
     if (start && (arg_no == 3))
-      TexOutput("(");
+      TexOutput(_T("("));
     if (!start && (arg_no == 3))
-     TexOutput(")");
+     TexOutput(_T(")"));
    break;
   }
   case ltCLIPSFUNC:
   {
     if (start && (arg_no == 1))
-      TexOutput("<B>");
+      TexOutput(_T("<B>"));
     if (!start && (arg_no == 1))
-      TexOutput("</B> ");
+      TexOutput(_T("</B> "));
 
     if (start && (arg_no == 2))
     {
-      if (!suppressNameDecoration) TexOutput("( ");
+      if (!suppressNameDecoration) TexOutput(_T("( "));
       currentMember = GetArgChunk();
     }
     if (!start && (arg_no == 2))
@@ -1782,64 +1786,64 @@ bool HTMLOnArgument(int macroId, int arg_no, bool start)
     }
 
     if (!start && (arg_no == 3))
-     TexOutput(")");
+     TexOutput(_T(")"));
     break;
   }
   case ltPFUNC:
   {
     if (!start && (arg_no == 1))
-      TexOutput(" ");
+      TexOutput(_T(" "));
 
     if (start && (arg_no == 2))
-      TexOutput("(*");
+      TexOutput(_T("(*"));
     if (!start && (arg_no == 2))
-      TexOutput(")");
+      TexOutput(_T(")"));
 
     if (start && (arg_no == 2))
       currentMember = GetArgChunk();
 
     if (start && (arg_no == 3))
-      TexOutput("(");
+      TexOutput(_T("("));
     if (!start && (arg_no == 3))
-      TexOutput(")");
+      TexOutput(_T(")"));
     break;
   }
   case ltPARAM:
   {
     if (start && (arg_no == 1))
-      TexOutput("<B>");
+      TexOutput(_T("<B>"));
     if (!start && (arg_no == 1))
-      TexOutput("</B>");
+      TexOutput(_T("</B>"));
     if (start && (arg_no == 2))
     {
-      TexOutput("<I>");
+      TexOutput(_T("<I>"));
     }
     if (!start && (arg_no == 2))
     {
-      TexOutput("</I>");
+      TexOutput(_T("</I>"));
     }
     break;
   }
   case ltCPARAM:
   {
     if (start && (arg_no == 1))
-      TexOutput("<B>");
+      TexOutput(_T("<B>"));
     if (!start && (arg_no == 1))
-      TexOutput("</B> ");  // This is the difference from param - one space!
+      TexOutput(_T("</B> "));  // This is the difference from param - one space!
     if (start && (arg_no == 2))
     {
-      TexOutput("<I>");
+      TexOutput(_T("<I>"));
     }
     if (!start && (arg_no == 2))
     {
-      TexOutput("</I>");
+      TexOutput(_T("</I>"));
     }
     break;
   }
   case ltMEMBER:
   {
     if (!start && (arg_no == 1))
-      TexOutput(" ");
+      TexOutput(_T(" "));
 
     if (start && (arg_no == 2))
       currentMember = GetArgChunk();
@@ -1849,9 +1853,9 @@ bool HTMLOnArgument(int macroId, int arg_no, bool start)
   {
     if (start)
     {
-      char *sec = NULL;
+      wxChar *sec = NULL;
 
-      char *refName = GetArgData();
+      wxChar *refName = GetArgData();
       if (refName)
       {
         TexRef *texRef = FindReference(refName);
@@ -1883,14 +1887,14 @@ bool HTMLOnArgument(int macroId, int arg_no, bool start)
       if (start)
       {
         TexChunk *ref = GetArgChunk();
-        TexOutput("<A HREF=\"");
+        TexOutput(_T("<A HREF=\""));
         inVerbatim = TRUE;
         TraverseChildrenFromChunk(ref);
         inVerbatim = FALSE;
-        TexOutput("\">");
+        TexOutput(_T("\">"));
         if (helpRefText)
           TraverseChildrenFromChunk(helpRefText);
-        TexOutput("</A>");
+        TexOutput(_T("</A>"));
       }
       return FALSE;
     }
@@ -1916,48 +1920,48 @@ bool HTMLOnArgument(int macroId, int arg_no, bool start)
     {
       if (start)
       {
-        char *refName = GetArgData();
-        char *refFilename = NULL;
+        wxChar *refName = GetArgData();
+        wxChar *refFilename = NULL;
 
         if (refName)
         {
           TexRef *texRef = FindReference(refName);
           if (texRef)
           {
-            if (texRef->refFile && strcmp(texRef->refFile, "??") != 0)
+            if (texRef->refFile && wxStrcmp(texRef->refFile, _T("??")) != 0)
               refFilename = texRef->refFile;
 
-            TexOutput("<A HREF=\"");
+            TexOutput(_T("<A HREF=\""));
             // If a filename is supplied, use it, otherwise try to
             // use the filename associated with the reference (from this document).
             if (helpRefFilename)
                {
               TraverseChildrenFromChunk(helpRefFilename);
-              TexOutput("#");
+              TexOutput(_T("#"));
                }
             else if (refFilename)
                {
               TexOutput(ConvertCase(refFilename));
-              TexOutput("#");
+              TexOutput(_T("#"));
                }
             TexOutput(refName);
-            TexOutput("\">");
+            TexOutput(_T("\">"));
             if (helpRefText)
               TraverseChildrenFromChunk(helpRefText);
-            TexOutput("</A>");
+            TexOutput(_T("</A>"));
           }
           else
           {
             if (helpRefText)
               TraverseChildrenFromChunk(helpRefText);
             if (!ignoreBadRefs)
-              TexOutput(" (REF NOT FOUND)");
+              TexOutput(_T(" (REF NOT FOUND)"));
             wxString errBuf;
-            errBuf.Printf("Warning: unresolved reference '%s'", refName);
-            OnInform((char *)errBuf.c_str());
+            errBuf.Printf(_T("Warning: unresolved reference '%s'"), refName);
+            OnInform((wxChar *)errBuf.c_str());
           }
         }
-        else TexOutput("??");
+        else TexOutput(_T("??"));
       }
       return FALSE;
     }
@@ -1972,110 +1976,113 @@ bool HTMLOnArgument(int macroId, int arg_no, bool start)
     {
       if (start)
       {
-        char *alignment = "";
+        wxChar *alignment = _T("");
         if (macroId == ltIMAGEL)
-          alignment = " align=left";
+          alignment = _T(" align=left");
         else if  (macroId == ltIMAGER)
-          alignment = " align=right";
+          alignment = _T(" align=right");
 
         // Try to find an XBM or GIF image first.
-        char *filename = copystring(GetArgData());
-        char buf[500];
+        wxChar *filename = copystring(GetArgData());
+        wxChar buf[500];
 
-        strcpy(buf, filename);
+        wxStrcpy(buf, filename);
         StripExtension(buf);
-        strcat(buf, ".xbm");
+        wxStrcat(buf, _T(".xbm"));
         wxString f = TexPathList.FindValidPath(buf);
 
-        if (f == "") // Try for a GIF instead
+        if (f == _T("")) // Try for a GIF instead
         {
-          strcpy(buf, filename);
+          wxStrcpy(buf, filename);
           StripExtension(buf);
-          strcat(buf, ".gif");
+          wxStrcat(buf, _T(".gif"));
           f = TexPathList.FindValidPath(buf);
         }
 
-        if (f == "") // Try for a JPEG instead
+        if (f == _T("")) // Try for a JPEG instead
         {
-          strcpy(buf, filename);
+          wxStrcpy(buf, filename);
           StripExtension(buf);
-          strcat(buf, ".jpg");
+          wxStrcat(buf, _T(".jpg"));
           f = TexPathList.FindValidPath(buf);
         }
 
-        if (f == "") // Try for a PNG instead
+        if (f == _T("")) // Try for a PNG instead
         {
-          strcpy(buf, filename);
+          wxStrcpy(buf, filename);
           StripExtension(buf);
-          strcat(buf, ".png");
+          wxStrcat(buf, _T(".png"));
           f = TexPathList.FindValidPath(buf);
         }
 
-        if (f != "")
+        if (f != _T(""))
         {
-          char *inlineFilename = copystring(f);
+          wxChar *inlineFilename = copystring(f);
 #if 0
-          char *originalFilename = TexPathList.FindValidPath(filename);
+          wxChar *originalFilename = TexPathList.FindValidPath(filename);
           // If we have found the existing filename, make the inline
           // image point to the original file (could be PS, for example)
-          if (originalFilename && (strcmp(inlineFilename, originalFilename) != 0))
+          if (originalFilename && (wxStrcmp(inlineFilename, originalFilename) != 0))
          {
-            TexOutput("<A HREF=\"");
+            TexOutput(_T("<A HREF=\""));
             TexOutput(ConvertCase(originalFilename));
-            TexOutput("\">");
-            TexOutput("<img src=\"");
+            TexOutput(_T("\">"));
+            TexOutput(_T("<img src=\""));
             TexOutput(ConvertCase(wxFileNameFromPath(inlineFilename)));
-            TexOutput("\""); TexOutput(alignment); TexOutput("></A>");
+            TexOutput(_T("\""));
+            TexOutput(alignment); 
+            TexOutput(_T("></A>"));
          }
           else
 #endif
          {
-            TexOutput("<img src=\"");
+            TexOutput(_T("<img src=\""));
             TexOutput(ConvertCase(wxFileNameFromPath(inlineFilename)));
-            TexOutput("\""); TexOutput(alignment); TexOutput(">");
+            TexOutput(_T("\""));
+            TexOutput(alignment); 
+            TexOutput(_T(">"));
             delete[] inlineFilename;
          }
         }
         else
         {
           // Last resort - a link to a PS file.
-          TexOutput("<A HREF=\"");
+          TexOutput(_T("<A HREF=\""));
           TexOutput(ConvertCase(wxFileNameFromPath(filename)));
-          TexOutput("\">Picture</A>\n");
-          sprintf(buf, "Warning: could not find an inline XBM/GIF for %s.", filename);
+          TexOutput(_T("\">Picture</A>\n"));
+          wxSprintf(buf, _T("Warning: could not find an inline XBM/GIF for %s."), filename);
           OnInform(buf);
         }
       }
     }
     return FALSE;
-    break;
   }
   // First arg is PSBOX spec (ignored), second is image file, third is map name.
   case ltIMAGEMAP:
   {
-    static char *imageFile = NULL;
+    static wxChar *imageFile = NULL;
     if (start && (arg_no == 2))
     {
       // Try to find an XBM or GIF image first.
-      char *filename = copystring(GetArgData());
-      char buf[500];
+      wxChar *filename = copystring(GetArgData());
+      wxChar buf[500];
 
-      strcpy(buf, filename);
+      wxStrcpy(buf, filename);
       StripExtension(buf);
-      strcat(buf, ".xbm");
+      wxStrcat(buf, _T(".xbm"));
       wxString f = TexPathList.FindValidPath(buf);
 
-      if (f == "") // Try for a GIF instead
+      if (f == _T("")) // Try for a GIF instead
       {
-        strcpy(buf, filename);
+        wxStrcpy(buf, filename);
         StripExtension(buf);
-        strcat(buf, ".gif");
+        wxStrcat(buf, _T(".gif"));
         f = TexPathList.FindValidPath(buf);
       }
-      if (f == "")
+      if (f == _T(""))
       {
-        char buf[300];
-        sprintf(buf, "Warning: could not find an inline XBM/GIF for %s.", filename);
+        wxChar buf[300];
+        wxSprintf(buf, _T("Warning: could not find an inline XBM/GIF for %s."), filename);
         OnInform(buf);
       }
       delete[] filename;
@@ -2093,34 +2100,33 @@ bool HTMLOnArgument(int macroId, int arg_no, bool start)
       {
         // First, try to find a .shg (segmented hypergraphics file)
         // that we can convert to a map file
-        char buf[256];
-        strcpy(buf, imageFile);
+        wxChar buf[256];
+        wxStrcpy(buf, imageFile);
         StripExtension(buf);
-        strcat(buf, ".shg");
+        wxStrcat(buf, _T(".shg"));
         wxString f = TexPathList.FindValidPath(buf);
 
-        if (f != "")
+        if (f != _T(""))
         {
           // The default HTML file to go to is THIS file (so a no-op)
-          SHGToMap((char*) (const char*) f, currentFileName);
+          SHGToMap((wxChar *)f.c_str(), currentFileName);
         }
 
-        char *mapName = GetArgData();
-        TexOutput("<A HREF=\"/cgi-bin/imagemap/");
+        wxChar *mapName = GetArgData();
+        TexOutput(_T("<A HREF=\"/cgi-bin/imagemap/"));
         if (mapName)
           TexOutput(mapName);
         else
-          TexOutput("unknown");
-        TexOutput("\">");
-        TexOutput("<img src=\"");
+          TexOutput(_T("unknown"));
+        TexOutput(_T("\">"));
+        TexOutput(_T("<img src=\""));
         TexOutput(ConvertCase(wxFileNameFromPath(imageFile)));
-        TexOutput("\" ISMAP></A><P>");
+        TexOutput(_T("\" ISMAP></A><P>"));
         delete[] imageFile;
         imageFile = NULL;
       }
     }
     return FALSE;
-    break;
   }
   case ltINDENTED :
   {
@@ -2145,74 +2151,72 @@ bool HTMLOnArgument(int macroId, int arg_no, bool start)
   {
 /*
     if (start && (arg_no == 1))
-      TexOutput("\n<DT> ");
+      TexOutput(_T("\n<DT> "));
     if (start && (arg_no == 2))
-      TexOutput("<DD> ");
+      TexOutput(_T("<DD> "));
 */
     if (arg_no == 1)
     {
       if ( start ) {
         // DHS
        if (TwoColWidthA > -1) {
-          char buf[100];
-          sprintf(buf,"\n<TR><TD VALIGN=TOP WIDTH=%d>\n",TwoColWidthA);
+          wxChar buf[100];
+          wxSprintf(buf,_T("\n<TR><TD VALIGN=TOP WIDTH=%d>\n"),TwoColWidthA);
           TexOutput(buf);
         } else
-          TexOutput("\n<TR><TD VALIGN=TOP>\n");
+          TexOutput(_T("\n<TR><TD VALIGN=TOP>\n"));
                OutputFont();
       }  else
-            TexOutput("\n</FONT></TD>\n");
+            TexOutput(_T("\n</FONT></TD>\n"));
     }
     if (arg_no == 2)
     {
       // DHS
       if ( start ) {
        if (TwoColWidthB > -1) {
-          char buf[100];
-          sprintf(buf,"\n<TD VALIGN=TOP WIDTH=%d>\n",TwoColWidthB);
+          wxChar buf[100];
+          wxSprintf(buf,_T("\n<TD VALIGN=TOP WIDTH=%d>\n"),TwoColWidthB);
           TexOutput(buf);
         } else 
-           TexOutput("\n<TD VALIGN=TOP>\n");
+           TexOutput(_T("\n<TD VALIGN=TOP>\n"));
                OutputFont();
       }  else
-           TexOutput("\n</FONT></TD></TR>\n");
+           TexOutput(_T("\n</FONT></TD></TR>\n"));
     }
     return TRUE;
-    break;
   }
   case ltNUMBEREDBIBITEM:
   {
     if (arg_no == 1 && start)
     {
-      TexOutput("\n<DT> ");
+      TexOutput(_T("\n<DT> "));
     }
     if (arg_no == 2 && !start)
-      TexOutput("<P>\n");
+      TexOutput(_T("<P>\n"));
     break;
   }
   case ltBIBITEM:
   {
-    char buf[100];
+    wxChar buf[100];
     if (arg_no == 1 && start)
     {
-      char *citeKey = GetArgData();
+      wxChar *citeKey = GetArgData();
       TexRef *ref = (TexRef *)TexReferences.Get(citeKey);
       if (ref)
       {
         if (ref->sectionNumber) delete[] ref->sectionNumber;
-        sprintf(buf, "[%d]", citeCount);
+        wxSprintf(buf, _T("[%d]"), citeCount);
         ref->sectionNumber = copystring(buf);
       }
 
-      sprintf(buf, "\n<DT> [%d] ", citeCount);
+      wxSprintf(buf, _T("\n<DT> [%d] "), citeCount);
       TexOutput(buf);
       citeCount ++;
       return FALSE;
     }
     if (arg_no == 2 && !start)
-      TexOutput("<P>\n");
+      TexOutput(_T("<P>\n"));
     return TRUE;
-    break;
   }
   case ltMARGINPAR:
   case ltMARGINPARODD:
@@ -2222,11 +2226,11 @@ bool HTMLOnArgument(int macroId, int arg_no, bool start)
   {
     if (start)
     {
-      TexOutput("<HR>\n");
+      TexOutput(_T("<HR>\n"));
       return TRUE;
     }
     else
-      TexOutput("<HR><P>\n");
+      TexOutput(_T("<HR><P>\n"));
     break;
   }
   // DHS
@@ -2234,24 +2238,22 @@ bool HTMLOnArgument(int macroId, int arg_no, bool start)
   {
     if (start)
     {
-      char *val = GetArgData();
+      wxChar *val = GetArgData();
       float points = ParseUnitArgument(val);
       TwoColWidthA = (int)((points * 100.0) / 72.0);
     }
     return FALSE;
-    break;
   }
   // DHS
   case ltTWOCOLWIDTHB:
   {
     if (start)
     {
-      char *val = GetArgData();
+      wxChar *val = GetArgData();
       float points = ParseUnitArgument(val);
       TwoColWidthB = (int)((points * 100.0) / 72.0);
     }
     return FALSE;
-    break;
   }
   /*
    * Accents
@@ -2261,40 +2263,40 @@ bool HTMLOnArgument(int macroId, int arg_no, bool start)
   {
     if (start)
     {
-      char *val = GetArgData();
+      wxChar *val = GetArgData();
       if (val)
       {
         switch (val[0])
         {
           case 'a':
-           TexOutput("&agrave;");
+           TexOutput(_T("&agrave;"));
            break;
           case 'e':
-           TexOutput("&egrave;");
+           TexOutput(_T("&egrave;"));
            break;
           case 'i':
-           TexOutput("&igrave;");
+           TexOutput(_T("&igrave;"));
            break;
           case 'o':
-           TexOutput("&ograve;");
+           TexOutput(_T("&ograve;"));
            break;
           case 'u':
-           TexOutput("&ugrave;");
+           TexOutput(_T("&ugrave;"));
            break;
           case 'A':
-           TexOutput("&Agrave;");
+           TexOutput(_T("&Agrave;"));
            break;
           case 'E':
-           TexOutput("&Egrave;");
+           TexOutput(_T("&Egrave;"));
            break;
           case 'I':
-           TexOutput("&Igrave;");
+           TexOutput(_T("&Igrave;"));
            break;
           case 'O':
-           TexOutput("&Ograve;");
+           TexOutput(_T("&Ograve;"));
            break;
           case 'U':
-           TexOutput("&Igrave;");
+           TexOutput(_T("&Igrave;"));
            break;
           default:
            break;
@@ -2302,52 +2304,51 @@ bool HTMLOnArgument(int macroId, int arg_no, bool start)
       }
     }
     return FALSE;
-    break;
   }
   case ltACCENT_ACUTE:
   {
     if (start)
     {
-      char *val = GetArgData();
+      wxChar *val = GetArgData();
       if (val)
       {
         switch (val[0])
         {
           case 'a':
-           TexOutput("&aacute;");
+           TexOutput(_T("&aacute;"));
            break;
           case 'e':
-           TexOutput("&eacute;");
+           TexOutput(_T("&eacute;"));
            break;
           case 'i':
-           TexOutput("&iacute;");
+           TexOutput(_T("&iacute;"));
            break;
           case 'o':
-           TexOutput("&oacute;");
+           TexOutput(_T("&oacute;"));
            break;
           case 'u':
-           TexOutput("&uacute;");
+           TexOutput(_T("&uacute;"));
            break;
           case 'y':
-           TexOutput("&yacute;");
+           TexOutput(_T("&yacute;"));
            break;
           case 'A':
-           TexOutput("&Aacute;");
+           TexOutput(_T("&Aacute;"));
            break;
           case 'E':
-           TexOutput("&Eacute;");
+           TexOutput(_T("&Eacute;"));
            break;
           case 'I':
-           TexOutput("&Iacute;");
+           TexOutput(_T("&Iacute;"));
            break;
           case 'O':
-           TexOutput("&Oacute;");
+           TexOutput(_T("&Oacute;"));
            break;
           case 'U':
-           TexOutput("&Uacute;");
+           TexOutput(_T("&Uacute;"));
            break;
           case 'Y':
-           TexOutput("&Yacute;");
+           TexOutput(_T("&Yacute;"));
            break;
           default:
            break;
@@ -2355,46 +2356,45 @@ bool HTMLOnArgument(int macroId, int arg_no, bool start)
       }
     }
     return FALSE;
-    break;
   }
   case ltACCENT_CARET:
   {
     if (start)
     {
-      char *val = GetArgData();
+      wxChar *val = GetArgData();
       if (val)
       {
         switch (val[0])
         {
           case 'a':
-           TexOutput("&acirc;");
+           TexOutput(_T("&acirc;"));
            break;
           case 'e':
-           TexOutput("&ecirc;");
+           TexOutput(_T("&ecirc;"));
            break;
           case 'i':
-           TexOutput("&icirc;");
+           TexOutput(_T("&icirc;"));
            break;
           case 'o':
-           TexOutput("&ocirc;");
+           TexOutput(_T("&ocirc;"));
            break;
           case 'u':
-           TexOutput("&ucirc;");
+           TexOutput(_T("&ucirc;"));
            break;
           case 'A':
-           TexOutput("&Acirc;");
+           TexOutput(_T("&Acirc;"));
            break;
           case 'E':
-           TexOutput("&Ecirc;");
+           TexOutput(_T("&Ecirc;"));
            break;
           case 'I':
-           TexOutput("&Icirc;");
+           TexOutput(_T("&Icirc;"));
            break;
           case 'O':
-           TexOutput("&Ocirc;");
+           TexOutput(_T("&Ocirc;"));
            break;
           case 'U':
-           TexOutput("&Icirc;");
+           TexOutput(_T("&Icirc;"));
            break;
           default:
            break;
@@ -2402,37 +2402,36 @@ bool HTMLOnArgument(int macroId, int arg_no, bool start)
       }
     }
     return FALSE;
-    break;
   }
   case ltACCENT_TILDE:
   {
     if (start)
     {
-      char *val = GetArgData();
+      wxChar *val = GetArgData();
       if (val)
       {
         switch (val[0])
         {
           case ' ':
-           TexOutput("~");
+           TexOutput(_T("~"));
            break;
           case 'a':
-           TexOutput("&atilde;");
+           TexOutput(_T("&atilde;"));
            break;
           case 'n':
-           TexOutput("&ntilde;");
+           TexOutput(_T("&ntilde;"));
            break;
           case 'o':
-           TexOutput("&otilde;");
+           TexOutput(_T("&otilde;"));
            break;
           case 'A':
-           TexOutput("&Atilde;");
+           TexOutput(_T("&Atilde;"));
            break;
           case 'N':
-           TexOutput("&Ntilde;");
+           TexOutput(_T("&Ntilde;"));
            break;
           case 'O':
-           TexOutput("&Otilde;");
+           TexOutput(_T("&Otilde;"));
            break;
           default:
            break;
@@ -2440,52 +2439,51 @@ bool HTMLOnArgument(int macroId, int arg_no, bool start)
       }
     }
     return FALSE;
-    break;
   }
   case ltACCENT_UMLAUT:
   {
     if (start)
     {
-      char *val = GetArgData();
+      wxChar *val = GetArgData();
       if (val)
       {
         switch (val[0])
         {
           case 'a':
-           TexOutput("&auml;");
+           TexOutput(_T("&auml;"));
            break;
           case 'e':
-           TexOutput("&euml;");
+           TexOutput(_T("&euml;"));
            break;
           case 'i':
-           TexOutput("&iuml;");
+           TexOutput(_T("&iuml;"));
            break;
           case 'o':
-           TexOutput("&ouml;");
+           TexOutput(_T("&ouml;"));
            break;
           case 'u':
-           TexOutput("&uuml;");
+           TexOutput(_T("&uuml;"));
            break;
           case 'y':
-           TexOutput("&yuml;");
+           TexOutput(_T("&yuml;"));
            break;
           case 'A':
-           TexOutput("&Auml;");
+           TexOutput(_T("&Auml;"));
            break;
           case 'E':
-           TexOutput("&Euml;");
+           TexOutput(_T("&Euml;"));
            break;
           case 'I':
-           TexOutput("&Iuml;");
+           TexOutput(_T("&Iuml;"));
            break;
           case 'O':
-           TexOutput("&Ouml;");
+           TexOutput(_T("&Ouml;"));
            break;
           case 'U':
-           TexOutput("&Uuml;");
+           TexOutput(_T("&Uuml;"));
            break;
           case 'Y':
-           TexOutput("&Yuml;");
+           TexOutput(_T("&Yuml;"));
            break;
           default:
            break;
@@ -2493,22 +2491,21 @@ bool HTMLOnArgument(int macroId, int arg_no, bool start)
       }
     }
     return FALSE;
-    break;
   }
   case ltACCENT_DOT:
   {
     if (start)
     {
-      char *val = GetArgData();
+      wxChar *val = GetArgData();
       if (val)
       {
         switch (val[0])
         {
           case 'a':
-           TexOutput("&aring;");
+           TexOutput(_T("&aring;"));
            break;
           case 'A':
-           TexOutput("&Aring;");
+           TexOutput(_T("&Aring;"));
            break;
           default:
            break;
@@ -2516,13 +2513,12 @@ bool HTMLOnArgument(int macroId, int arg_no, bool start)
       }
     }
     return FALSE;
-    break;
   }
   case ltBACKGROUND:
   {
     if (start)
     {
-      char *val = GetArgData();
+      wxChar *val = GetArgData();
       if (val)
       {
         bool isPicture = FALSE;
@@ -2542,13 +2538,12 @@ bool HTMLOnArgument(int macroId, int arg_no, bool start)
       }
     }
     return FALSE;
-    break;
   }
   case ltBACKGROUNDIMAGE:
   {
     if (start)
     {
-      char *val = GetArgData();
+      wxChar *val = GetArgData();
       if (val)
       {
         if (backgroundImageString)
@@ -2557,13 +2552,12 @@ bool HTMLOnArgument(int macroId, int arg_no, bool start)
       }
     }
     return FALSE;
-    break;
   }
   case ltBACKGROUNDCOLOUR:
   {
     if (start)
     {
-      char *val = GetArgData();
+      wxChar *val = GetArgData();
       if (val)
       {
         if (backgroundColourString)
@@ -2572,13 +2566,12 @@ bool HTMLOnArgument(int macroId, int arg_no, bool start)
       }
     }
     return FALSE;
-    break;
   }
   case ltTEXTCOLOUR:
   {
     if (start)
     {
-      char *val = GetArgData();
+      wxChar *val = GetArgData();
       if (val)
       {
         if (textColourString)
@@ -2587,13 +2580,12 @@ bool HTMLOnArgument(int macroId, int arg_no, bool start)
       }
     }
     return FALSE;
-    break;
   }
   case ltLINKCOLOUR:
   {
     if (start)
     {
-      char *val = GetArgData();
+      wxChar *val = GetArgData();
       if (val)
       {
         if (linkColourString)
@@ -2602,13 +2594,12 @@ bool HTMLOnArgument(int macroId, int arg_no, bool start)
       }
     }
     return FALSE;
-    break;
   }
   case ltFOLLOWEDLINKCOLOUR:
   {
     if (start)
     {
-      char *val = GetArgData();
+      wxChar *val = GetArgData();
       if (val)
       {
         if (followedLinkColourString)
@@ -2617,22 +2608,21 @@ bool HTMLOnArgument(int macroId, int arg_no, bool start)
       }
     }
     return FALSE;
-    break;
   }
   case ltACCENT_CADILLA:
   {
     if (start)
     {
-      char *val = GetArgData();
+      wxChar *val = GetArgData();
       if (val)
       {
         switch (val[0])
         {
           case 'c':
-           TexOutput("&ccedil;");
+           TexOutput(_T("&ccedil;"));
            break;
           case 'C':
-           TexOutput("&Ccedil;");
+           TexOutput(_T("&Ccedil;"));
            break;
           default:
            break;
@@ -2640,7 +2630,6 @@ bool HTMLOnArgument(int macroId, int arg_no, bool start)
       }
     }
     return FALSE;
-    break;
   }
 /*
   case ltFOOTNOTE:
@@ -2666,25 +2655,25 @@ bool HTMLOnArgument(int macroId, int arg_no, bool start)
         tableVerticalLineLeft = FALSE;
         tableVerticalLineRight = FALSE;
 
-        char *alignString = copystring(GetArgData());
+        wxChar *alignString = copystring(GetArgData());
         ParseTableArgument(alignString);
 
-        TexOutput("<TABLE BORDER>\n");
+        TexOutput(_T("<TABLE BORDER>\n"));
 
         // Write the first row formatting for compatibility
         // with standard Latex
         if (compatibilityMode)
         {
-          TexOutput("<TR>\n<TD>");
+          TexOutput(_T("<TR>\n<TD>"));
                  OutputFont();
 /*
           for (int i = 0; i < noColumns; i++)
           {
             currentWidth += TableData[i].width;
-            sprintf(buf, "\\cellx%d", currentWidth);
+            wxSprintf(buf, _T("\\cellx%d"), currentWidth);
             TexOutput(buf);
           }
-          TexOutput("\\pard\\intbl\n");
+          TexOutput(_T("\\pard\\intbl\n"));
 */
         }
         delete[] alignString;
@@ -2694,7 +2683,7 @@ bool HTMLOnArgument(int macroId, int arg_no, bool start)
     }
     else if (arg_no == 2 && !start)
     {
-      TexOutput("</TABLE>\n");
+      TexOutput(_T("</TABLE>\n"));
       inTabular = FALSE;
     }
     break;
@@ -2704,35 +2693,35 @@ bool HTMLOnArgument(int macroId, int arg_no, bool start)
     if (start && (arg_no == 1))
     {
       ReopenFile(&Chapters, &ChaptersName);
-      AddTexRef("bibliography", ChaptersName, "bibliography");
-      SetCurrentSubsectionName("bibliography", ChaptersName);
+      AddTexRef(_T("bibliography"), ChaptersName, _T("bibliography"));
+      SetCurrentSubsectionName(_T("bibliography"), ChaptersName);
 
       citeCount = 1;
 
       SetCurrentOutput(Chapters);
 
-      char titleBuf[150];
+      wxChar titleBuf[150];
       if (truncateFilenames)
-        sprintf(titleBuf, "%s.htm", wxFileNameFromPath(FileRoot));
+        wxSprintf(titleBuf, _T("%s.htm"), wxFileNameFromPath(FileRoot));
       else
-        sprintf(titleBuf, "%s_contents.html", wxFileNameFromPath(FileRoot));
+        wxSprintf(titleBuf, _T("%s_contents.html"), wxFileNameFromPath(FileRoot));
 
       HTMLHead();
-      TexOutput("<title>");
+      TexOutput(_T("<title>"));
       TexOutput(ReferencesNameString);
-      TexOutput("</title></head>\n");
+      TexOutput(_T("</title></head>\n"));
       OutputBodyStart();
 
-      fprintf(Chapters, "<A NAME=\"%s\">\n<H2>%s", "bibliography", ReferencesNameString);
-      AddBrowseButtons("contents", titleBuf, // Up
+      wxFprintf(Chapters, _T("<A NAME=\"%s\">\n<H2>%s"), _T("bibliography"), ReferencesNameString);
+      AddBrowseButtons(_T("contents"), titleBuf, // Up
                        lastTopic, lastFileName,  // Last topic
-                       "bibliography", ChaptersName); // This topic
+                       _T("bibliography"), ChaptersName); // This topic
 
       SetCurrentOutputs(Contents, Chapters);
-      fprintf(Contents, "\n<LI><A HREF=\"%s#%s\">", ConvertCase(ChaptersName), "bibliography");
+      wxFprintf(Contents, _T("\n<LI><A HREF=\"%s#%s\">"), ConvertCase(ChaptersName), "bibliography");
 
-      fprintf(Contents, "%s</A>\n", ReferencesNameString);
-      fprintf(Chapters, "</H2>\n</A>\n");
+      wxFprintf(Contents, _T("%s</A>\n"), ReferencesNameString);
+      wxFprintf(Chapters, _T("</H2>\n</A>\n"));
 
       SetCurrentOutput(Chapters);
       return FALSE;
@@ -2741,15 +2730,14 @@ bool HTMLOnArgument(int macroId, int arg_no, bool start)
     {
     }
     return TRUE;
-    break;
   }
   case ltINDEX:
   {
     /* Build up list of keywords associated with topics */
     if (start)
     {
-//      char *entry = GetArgData();
-      char buf[300];
+//      wxChar *entry = GetArgData();
+      wxChar buf[300];
       OutputChunkToString(GetArgChunk(), buf);
       if (CurrentTopic)
       {
@@ -2757,7 +2745,6 @@ bool HTMLOnArgument(int macroId, int arg_no, bool start)
       }
     }
     return FALSE;
-    break;
   }
   case ltFCOL:
 //  case ltBCOL:
@@ -2768,24 +2755,23 @@ bool HTMLOnArgument(int macroId, int arg_no, bool start)
       {
         case 1:
         {
-          char *name = GetArgData();
-          char buf2[10];
+          wxChar *name = GetArgData();
+          wxChar buf2[10];
           if (!FindColourHTMLString(name, buf2))
           {
-            strcpy(buf2, "#000000");
-            char buf[100];
-                       sprintf(buf, "Could not find colour name %s", name);
+            wxStrcpy(buf2, _T("#000000"));
+            wxChar buf[100];
+                       wxSprintf(buf, _T("Could not find colour name %s"), name);
             OnError(buf);
           }
-          TexOutput("<FONT COLOR=\"");
+          TexOutput(_T("<FONT COLOR=\""));
           TexOutput(buf2);
-          TexOutput("\">");
+          TexOutput(_T("\">"));
           break;
         }
         case 2:
         {
           return TRUE;
-          break;
         }
         default:
           break;
@@ -2793,10 +2779,9 @@ bool HTMLOnArgument(int macroId, int arg_no, bool start)
     }
     else
     {
-      if (arg_no == 2) TexOutput("</FONT>");
+      if (arg_no == 2) TexOutput(_T("</FONT>"));
     }
     return FALSE;
-    break;
   }
   case ltINSERTATLEVEL:
   {
@@ -2814,8 +2799,8 @@ bool HTMLOnArgument(int macroId, int arg_no, bool start)
         {
           oldLevelFile = CurrentOutput1;
 
-          char *str = GetArgData();
-          currentLevelNo = atoi(str);
+          wxChar *str = GetArgData();
+          currentLevelNo = wxAtoi(str);
           FILE* outputFile;
           // TODO: cope with article style (no chapters)
           switch (currentLevelNo)
@@ -2849,12 +2834,10 @@ bool HTMLOnArgument(int macroId, int arg_no, bool start)
           if (outputFile)
             CurrentOutput1 = outputFile;
           return FALSE;
-          break;
         }
         case 2:
         {
           return TRUE;
-          break;
         }
         default:
           break;
@@ -2872,7 +2855,6 @@ bool HTMLOnArgument(int macroId, int arg_no, bool start)
   }
   default:
     return DefaultOnArgument(macroId, arg_no, start);
-    break;
   }
   return TRUE;
 }
@@ -2894,88 +2876,88 @@ bool HTMLGo(void)
     // recursively
     Text2HTML(GetTopLevelChunk());
 
-    char buf[300];
+    wxChar buf[300];
     if (truncateFilenames)
-      sprintf(buf, "%s.htm", FileRoot);
+      wxSprintf(buf, _T("%s.htm"), FileRoot);
     else
-      sprintf(buf, "%s_contents.html", FileRoot);
+      wxSprintf(buf, _T("%s_contents.html"), FileRoot);
     if (TitlepageName) delete[] TitlepageName;
     TitlepageName = copystring(buf);
-    Titlepage = fopen(buf, "w");
+    Titlepage = wxFopen(buf, _T("w"));
 
     if (truncateFilenames)
-      sprintf(buf, "%s_fc.htm", FileRoot);
+      wxSprintf(buf, _T("%s_fc.htm"), FileRoot);
     else
-      sprintf(buf, "%s_fcontents.html", FileRoot);
+      wxSprintf(buf, _T("%s_fcontents.html"), FileRoot);
 
     contentsFrameName = copystring(buf);
 
-    Contents = fopen(TmpContentsName, "w");
+    Contents = wxFopen(TmpContentsName, _T("w"));
 
     if (htmlFrameContents)
     {
-//      FrameContents = fopen(TmpFrameContentsName, "w");
-      FrameContents = fopen(contentsFrameName, "w");
-      fprintf(FrameContents, "<HTML>\n<UL>\n");
+//      FrameContents = wxFopen(TmpFrameContentsName, _T("w"));
+      FrameContents = wxFopen(contentsFrameName, _T("w"));
+      wxFprintf(FrameContents, _T("<HTML>\n<UL>\n"));
     }
 
     if (!Titlepage || !Contents)
     {
-      OnError("Cannot open output file!");
+      OnError(_T("Cannot open output file!"));
       return FALSE;
     }
-    AddTexRef("contents", wxFileNameFromPath(TitlepageName), ContentsNameString);
+    AddTexRef(_T("contents"), wxFileNameFromPath(TitlepageName), ContentsNameString);
 
-    fprintf(Contents, "<P><P><H2>%s</H2><P><P>\n", ContentsNameString);
+    wxFprintf(Contents, _T("<P><P><H2>%s</H2><P><P>\n"), ContentsNameString);
 
-    fprintf(Contents, "<UL>\n");
+    wxFprintf(Contents, _T("<UL>\n"));
 
     SetCurrentOutput(Titlepage);
     if (htmlWorkshopFiles) HTMLWorkshopStartContents();
-    OnInform("Converting...");
+    OnInform(_T("Converting..."));
 
     TraverseDocument();
-    fprintf(Contents, "</UL>\n\n");
+    wxFprintf(Contents, _T("</UL>\n\n"));
 
 //    SetCurrentOutput(Titlepage);
     fclose(Titlepage);
 
     if (Contents)
     {
-//      fprintf(Titlepage, "\n</BODY></HTML>\n");
+//      wxFprintf(Titlepage, _T("\n</BODY></HTML>\n"));
       fclose(Contents);
       Contents = NULL;
     }
 
     if (FrameContents)
     {
-      fprintf(FrameContents, "\n</UL>\n");
-      fprintf(FrameContents, "</HTML>\n");
+      wxFprintf(FrameContents, _T("\n</UL>\n"));
+      wxFprintf(FrameContents, _T("</HTML>\n"));
       fclose(FrameContents);
       FrameContents = NULL;
     }
 
     if (Chapters)
     {
-      fprintf(Chapters, "\n</FONT></BODY></HTML>\n");
+      wxFprintf(Chapters, _T("\n</FONT></BODY></HTML>\n"));
       fclose(Chapters);
       Chapters = NULL;
     }
     if (Sections)
     {
-      fprintf(Sections, "\n</FONT></BODY></HTML>\n");
+      wxFprintf(Sections, _T("\n</FONT></BODY></HTML>\n"));
       fclose(Sections);
       Sections = NULL;
     }
     if (Subsections && !combineSubSections)
     {
-      fprintf(Subsections, "\n</FONT></BODY></HTML>\n");
+      wxFprintf(Subsections, _T("\n</FONT></BODY></HTML>\n"));
       fclose(Subsections);
       Subsections = NULL;
     }
     if (Subsubsections && !combineSubSections)
     {
-      fprintf(Subsubsections, "\n</FONT></BODY></HTML>\n");
+      wxFprintf(Subsubsections, _T("\n</FONT></BODY></HTML>\n"));
       fclose(Subsubsections);
       Subsubsections = NULL;
     }
@@ -2990,50 +2972,50 @@ bool HTMLGo(void)
     // This is necessary in order to put the title of the document
     // at the TOP of the file within <HEAD>, even though we only find out
     // what it is later on.
-    FILE *tmpTitle = fopen("title.tmp", "w");
+    FILE *tmpTitle = wxFopen(_T("title.tmp"), _T("w"));
     if (tmpTitle)
     {
       if (DocumentTitle)
       {
         SetCurrentOutput(tmpTitle);
        HTMLHead();
-        TexOutput("\n<HEAD><TITLE>");
+        TexOutput(_T("\n<HEAD><TITLE>"));
         TraverseChildrenFromChunk(DocumentTitle);
-        TexOutput("</TITLE></HEAD>\n");
+        TexOutput(_T("</TITLE></HEAD>\n"));
       }
       else
       {
         SetCurrentOutput(tmpTitle);
        HTMLHeadTo(tmpTitle);
         if (contentsString)
-          fprintf(tmpTitle, "<TITLE>%s</TITLE></HEAD>\n\n", contentsString);
+          wxFprintf(tmpTitle, _T("<TITLE>%s</TITLE></HEAD>\n\n"), contentsString);
         else
-          fprintf(tmpTitle, "<TITLE>%s</TITLE></HEAD>\n\n", wxFileNameFromPath(FileRoot));
+          wxFprintf(tmpTitle, _T("<TITLE>%s</TITLE></HEAD>\n\n"), wxFileNameFromPath(FileRoot));
       }
 
       // Output frame information
       if (htmlFrameContents)
       {
-        char firstFileName[300];
+        wxChar firstFileName[300];
         if (truncateFilenames)
-          sprintf(firstFileName, "%s1.htm", FileRoot);
+          wxSprintf(firstFileName, _T("%s1.htm"), FileRoot);
         else
-          sprintf(firstFileName, "%s1.html", FileRoot);
+          wxSprintf(firstFileName, _T("%s1.html"), FileRoot);
 
-        fprintf(tmpTitle, "<FRAMESET COLS=\"30%%,70%%\">\n");
+        wxFprintf(tmpTitle, _T("<FRAMESET COLS=\"30%%,70%%\">\n"));
 
-        fprintf(tmpTitle, "<FRAME SRC=\"%s\">\n", ConvertCase(wxFileNameFromPath(contentsFrameName)));
-        fprintf(tmpTitle, "<FRAME SRC=\"%s\" NAME=\"mainwindow\">\n", ConvertCase(wxFileNameFromPath(firstFileName)));
-        fprintf(tmpTitle, "</FRAMESET>\n");
+        wxFprintf(tmpTitle, _T("<FRAME SRC=\"%s\">\n"), ConvertCase(wxFileNameFromPath(contentsFrameName)));
+        wxFprintf(tmpTitle, _T("<FRAME SRC=\"%s\" NAME=\"mainwindow\">\n"), ConvertCase(wxFileNameFromPath(firstFileName)));
+        wxFprintf(tmpTitle, _T("</FRAMESET>\n"));
 
-        fprintf(tmpTitle, "<NOFRAMES>\n");
+        wxFprintf(tmpTitle, _T("<NOFRAMES>\n"));
       }
 
       // Output <BODY...> to temporary title page
       OutputBodyStart();
 
       // Concat titlepage
-      FILE *fd = fopen(TitlepageName, "r");
+      FILE *fd = wxFopen(TitlepageName, _T("r"));
       if (fd)
       {
         int ch = getc(fd);
@@ -3045,20 +3027,20 @@ bool HTMLGo(void)
         fclose(fd);
       }
 
-      fprintf(tmpTitle, "\n</FONT></BODY>\n");
+      wxFprintf(tmpTitle, _T("\n</FONT></BODY>\n"));
 
       if (htmlFrameContents)
       {
-        fprintf(tmpTitle, "\n</NOFRAMES>\n");
+        wxFprintf(tmpTitle, _T("\n</NOFRAMES>\n"));
       }
-      fprintf(tmpTitle, "\n</HTML>\n");
+      wxFprintf(tmpTitle, _T("\n</HTML>\n"));
 
       fclose(tmpTitle);
       if (wxFileExists(TitlepageName)) wxRemoveFile(TitlepageName);
-      if (!wxRenameFile("title.tmp", TitlepageName))
+      if (!wxRenameFile(_T("title.tmp"), TitlepageName))
       {
-        wxCopyFile("title.tmp", TitlepageName);
-        wxRemoveFile("title.tmp");
+        wxCopyFile(_T("title.tmp"), TitlepageName);
+        wxRemoveFile(_T("title.tmp"));
       }
     }
 
@@ -3078,8 +3060,8 @@ bool HTMLGo(void)
     // Generate .htx file if requested
     if (htmlIndex)
     {
-      char htmlIndexName[300];
-      sprintf(htmlIndexName, "%s.htx", FileRoot);
+      wxChar htmlIndexName[300];
+      wxSprintf(htmlIndexName, _T("%s.htx"), FileRoot);
       GenerateHTMLIndexFile(htmlIndexName);
     }
 
@@ -3098,28 +3080,29 @@ bool HTMLGo(void)
 }
 
 // Output .htx index file
-void GenerateHTMLIndexFile(char *fname)
+void GenerateHTMLIndexFile(wxChar *fname)
 {
-  FILE *fd = fopen(fname, "w");
+  FILE *fd = wxFopen(fname, _T("w"));
   if (!fd)
     return;
 
   TopicTable.BeginFind();
-  wxNode *node = NULL;
-  while ((node = TopicTable.Next()))
+  wxNode *node = TopicTable.Next();
+  while (node)
   {
     TexTopic *texTopic = (TexTopic *)node->GetData();
-    const char *topicName = node->GetKeyString();
+    const wxChar *topicName = node->GetKeyString();
     if (texTopic->filename && texTopic->keywords)
     {
       wxStringListNode *node1 = texTopic->keywords->GetFirst();
       while (node1)
       {
-        char *s = (char *)node1->GetData();
-        fprintf(fd, "%s|%s|%s\n", topicName, texTopic->filename, s);
+        wxChar *s = (wxChar *)node1->GetData();
+        wxFprintf(fd, _T("%s|%s|%s\n"), topicName, texTopic->filename, s);
         node1 = node1->GetNext();
       }
     }
+    node = TopicTable.Next();
   }
   fclose(fd);
 }
@@ -3133,25 +3116,25 @@ void GenerateHTMLIndexFile(char *fname)
 // output .hpp, .hhc and .hhk files:
 
 
-void GenerateHTMLWorkshopFiles(char *fname)
+void GenerateHTMLWorkshopFiles(wxChar *fname)
 {
   FILE *f;
-  char buf[300];
+  wxChar buf[300];
 
   /* Generate project file : */
 
-  sprintf(buf, "%s.hhp", fname);
-  f = fopen(buf, "wt");
-  fprintf(f,
-      "[OPTIONS]\n"
-      "Compatibility=1.1\n"
-      "Full-text search=Yes\n"
-      "Contents file=%s.hhc\n"
-      "Compiled file=%s.chm\n"
-      "Default Window=%sHelp\n"
-      "Default topic=%s\n"
-      "Index file=%s.hhk\n"
-      "Title=",
+  wxSprintf(buf, _T("%s.hhp"), fname);
+  f = wxFopen(buf, _T("wt"));
+  wxFprintf(f,
+      _T("[OPTIONS]\n")
+      _T("Compatibility=1.1\n")
+      _T("Full-text search=Yes\n")
+      _T("Contents file=%s.hhc\n")
+      _T("Compiled file=%s.chm\n")
+      _T("Default Window=%sHelp\n")
+      _T("Default topic=%s\n")
+      _T("Index file=%s.hhk\n")
+      _T("Title="),
       wxFileNameFromPath(fname),
       wxFileNameFromPath(fname),
       wxFileNameFromPath(fname),
@@ -3163,70 +3146,71 @@ void GenerateHTMLWorkshopFiles(char *fname)
     SetCurrentOutput(f);
     TraverseChildrenFromChunk(DocumentTitle);
   }
-  else fprintf(f, "(unknown)");
+  else wxFprintf(f, _T("(unknown)"));
 
-  fprintf(f, "\n\n[WINDOWS]\n"
-          "%sHelp=,\"%s.hhc\",\"%s.hhk\",\"%s\",,,,,,0x2420,,0x380e,,,,,0,,,",
+  wxFprintf(f, _T("\n\n[WINDOWS]\n")
+          _T("%sHelp=,\"%s.hhc\",\"%s.hhk\",\"%s\",,,,,,0x2420,,0x380e,,,,,0,,,"),
           wxFileNameFromPath(fname),
           wxFileNameFromPath(fname),
           wxFileNameFromPath(fname),
           wxFileNameFromPath(TitlepageName));
 
 
-  fprintf(f, "\n\n[FILES]\n");
-  fprintf(f, "%s\n", wxFileNameFromPath(TitlepageName));
+  wxFprintf(f, _T("\n\n[FILES]\n"));
+  wxFprintf(f, _T("%s\n"), wxFileNameFromPath(TitlepageName));
   for (int i = 1; i <= fileId; i++) {
     if (truncateFilenames)
-      sprintf(buf, "%s%d.htm", wxFileNameFromPath(FileRoot), i);
+      wxSprintf(buf, _T("%s%d.htm"), wxFileNameFromPath(FileRoot), i);
     else
-      sprintf(buf, "%s%d.html", wxFileNameFromPath(FileRoot), i);
-    fprintf(f, "%s\n", buf);
+      wxSprintf(buf, _T("%s%d.html"), wxFileNameFromPath(FileRoot), i);
+    wxFprintf(f, _T("%s\n"), buf);
   }
   fclose(f);
 
   /* Generate index file : */
 
-  sprintf(buf, "%s.hhk", fname);
-  f = fopen(buf, "wt");
+  wxSprintf(buf, _T("%s.hhk"), fname);
+  f = wxFopen(buf, _T("wt"));
 
-  fprintf(f,
-      "<!DOCTYPE HTML PUBLIC \"-//IETF//DTD HTML//EN\">\n"
-      "<HTML>\n");
+  wxFprintf(f,
+      _T("<!DOCTYPE HTML PUBLIC \"-//IETF//DTD HTML//EN\">\n")
+      _T("<HTML>\n"));
   HTMLHeadTo(f);
-  fprintf(f,
-      "\n"
-      "<meta name=\"GENERATOR\" content=\"tex2rtf\">\n"
-      "<!-- Sitemap 1.0 -->\n"
-      "</HEAD><BODY>\n"
-      "<OBJECT type=\"text/site properties\">\n"
-      " <param name=\"ImageType\" value=\"Folder\">\n"
-      "</OBJECT>\n"
-      "<UL>\n");
+  wxFprintf(f,
+      _T("\n")
+      _T("<meta name=\"GENERATOR\" content=\"tex2rtf\">\n")
+      _T("<!-- Sitemap 1.0 -->\n")
+      _T("</HEAD><BODY>\n")
+      _T("<OBJECT type=\"text/site properties\">\n")
+      _T(" <param name=\"ImageType\" value=\"Folder\">\n")
+      _T("</OBJECT>\n")
+      _T("<UL>\n"));
 
   TopicTable.BeginFind();
-  wxNode *node = NULL;
-  while ((node = TopicTable.Next()))
+  wxNode *node = TopicTable.Next();
+  while (node)
   {
     TexTopic *texTopic = (TexTopic *)node->GetData();
-    const char *topicName = node->GetKeyString();
+    const wxChar *topicName = node->GetKeyString();
     if (texTopic->filename && texTopic->keywords)
     {
       wxStringListNode *node1 = texTopic->keywords->GetFirst();
       while (node1)
       {
-        char *s = (char *)node1->GetData();
-        fprintf(f,
-            " <LI> <OBJECT type=\"text/sitemap\">\n"
-            "  <param name=\"Local\" value=\"%s#%s\">\n"
-            "  <param name=\"Name\" value=\"%s\">\n"
-            "  </OBJECT>\n",
+        wxChar *s = (wxChar *)node1->GetData();
+        wxFprintf(f,
+            _T(" <LI> <OBJECT type=\"text/sitemap\">\n")
+            _T("  <param name=\"Local\" value=\"%s#%s\">\n")
+            _T("  <param name=\"Name\" value=\"%s\">\n")
+            _T("  </OBJECT>\n"),
            texTopic->filename, topicName, s);
         node1 = node1->GetNext();
       }
     }
+    node = TopicTable.Next();
   }
 
-  fprintf(f, "</UL>\n");
+  wxFprintf(f, _T("</UL>\n"));
   fclose(f);
 }
 
@@ -3235,54 +3219,54 @@ void GenerateHTMLWorkshopFiles(char *fname)
 static FILE *HTMLWorkshopContents = NULL;
 static int HTMLWorkshopLastLevel = 0;
 
-void HTMLWorkshopAddToContents(int level, char *s, char *file)
+void HTMLWorkshopAddToContents(int level, wxChar *s, wxChar *file)
 {
   int i;
 
   if (level > HTMLWorkshopLastLevel)
     for (i = HTMLWorkshopLastLevel; i < level; i++)
-      fprintf(HTMLWorkshopContents, "<UL>");
+      wxFprintf(HTMLWorkshopContents, _T("<UL>"));
   if (level < HTMLWorkshopLastLevel)
     for (i = level; i < HTMLWorkshopLastLevel; i++)
-      fprintf(HTMLWorkshopContents, "</UL>");
+      wxFprintf(HTMLWorkshopContents, _T("</UL>"));
 
   SetCurrentOutput(HTMLWorkshopContents);
-  fprintf(HTMLWorkshopContents,
-            " <LI> <OBJECT type=\"text/sitemap\">\n"
-            "  <param name=\"Local\" value=\"%s#%s\">\n"
-            "  <param name=\"Name\" value=\"",
+  wxFprintf(HTMLWorkshopContents,
+            _T(" <LI> <OBJECT type=\"text/sitemap\">\n")
+            _T("  <param name=\"Local\" value=\"%s#%s\">\n")
+            _T("  <param name=\"Name\" value=\""),
            file, s);
   OutputCurrentSection();
-  fprintf(HTMLWorkshopContents,
-           "\">\n"
-            "  </OBJECT>\n");
+  wxFprintf(HTMLWorkshopContents,
+                 _T("\">\n")
+            _T("  </OBJECT>\n"));
   HTMLWorkshopLastLevel = level;
 }
 
 
 void HTMLWorkshopStartContents()
 {
-  char buf[300];
-  sprintf(buf, "%s.hhc", FileRoot);
-  HTMLWorkshopContents = fopen(buf, "wt");
+  wxChar buf[300];
+  wxSprintf(buf, _T("%s.hhc"), FileRoot);
+  HTMLWorkshopContents = wxFopen(buf, _T("wt"));
   HTMLWorkshopLastLevel = 0;
 
-  fprintf(HTMLWorkshopContents,
-      "<!DOCTYPE HTML PUBLIC \"-//IETF//DTD HTML//EN\">\n"
-      "<HTML>\n");
+  wxFprintf(HTMLWorkshopContents,
+      _T("<!DOCTYPE HTML PUBLIC \"-//IETF//DTD HTML//EN\">\n")
+      _T("<HTML>\n"));
   HTMLHeadTo(HTMLWorkshopContents);
-  fprintf(HTMLWorkshopContents,
-      "\n"
-      "<meta name=\"GENERATOR\" content=\"tex2rtf\">\n"
-      "<!-- Sitemap 1.0 -->\n"
-      "</HEAD><BODY>\n"
-      "<OBJECT type=\"text/site properties\">\n"
-      " <param name=\"ImageType\" value=\"Folder\">\n"
-      "</OBJECT>\n"
-      "<UL>\n"
-      "<LI> <OBJECT type=\"text/sitemap\">\n"
-      "<param name=\"Local\" value=\"%s\">\n"
-      "<param name=\"Name\" value=\"Contents\">\n</OBJECT>\n",
+  wxFprintf(HTMLWorkshopContents,
+      _T("\n")
+      _T("<meta name=\"GENERATOR\" content=\"tex2rtf\">\n")
+      _T("<!-- Sitemap 1.0 -->\n")
+      _T("</HEAD><BODY>\n")
+      _T("<OBJECT type=\"text/site properties\">\n")
+      _T(" <param name=\"ImageType\" value=\"Folder\">\n")
+      _T("</OBJECT>\n")
+      _T("<UL>\n")
+      _T("<LI> <OBJECT type=\"text/sitemap\">\n")
+      _T("<param name=\"Local\" value=\"%s\">\n")
+      _T("<param name=\"Name\" value=\"Contents\">\n</OBJECT>\n"),
       wxFileNameFromPath(TitlepageName)
       );
 
@@ -3292,6 +3276,6 @@ void HTMLWorkshopStartContents()
 void HTMLWorkshopEndContents()
 {
   for (int i = HTMLWorkshopLastLevel; i >= 0; i--)
-    fprintf(HTMLWorkshopContents, "</UL>\n");
+    wxFprintf(HTMLWorkshopContents, _T("</UL>\n"));
   fclose(HTMLWorkshopContents);
 }
index 76b557290803158b4960cbe2300271dc32182ce6..a7454b736c544639c5cd6dad2157f62a8d270e9b 100644 (file)
@@ -38,8 +38,8 @@
 // HotSpots *array;
 // int n = ParseSHG("thing.shg", &array);
 
-int   ParseSHG( const char* fileName, HotSpot **hotspots)
-{ FILE*   fSHG = fopen( fileName, "rb");
+int   ParseSHG( const wxChar* fileName, HotSpot **hotspots)
+{ FILE*   fSHG = wxFopen( fileName, _T("rb"));
   long    offset;
   int nHotspots = 0;
 
@@ -110,7 +110,7 @@ int   ParseSHG( const char* fileName, HotSpot **hotspots)
 
 // Convert Windows .SHG file to HTML map file
 
-bool SHGToMap(char *filename, char *defaultFile)
+bool SHGToMap(wxChar *filename, wxChar *defaultFile)
 {
   // Test the SHG parser
   HotSpot *hotspots = NULL;
@@ -118,41 +118,41 @@ bool SHGToMap(char *filename, char *defaultFile)
   if (n == 0)
     return FALSE;
 
-  char buf[100];
-  sprintf(buf, "Converting .SHG file to HTML map file: there are %d hotspots in %s.", n, filename);
+  wxChar buf[100];
+  wxSprintf(buf, _T("Converting .SHG file to HTML map file: there are %d hotspots in %s."), n, filename);
   OnInform(buf);
 
-  char outBuf[256];
-  strcpy(outBuf, filename);
+  wxChar outBuf[256];
+  wxStrcpy(outBuf, filename);
   StripExtension(outBuf);
-  strcat(outBuf, ".map");
+  wxStrcat(outBuf, _T(".map"));
 
-  FILE *fd = fopen(outBuf, "w");
+  FILE *fd = wxFopen(outBuf, _T("w"));
   if (!fd)
   {
-    OnError("Could not open .map file for writing.");
+    OnError(_T("Could not open .map file for writing."));
     delete[] hotspots;
     return FALSE;
   }
 
-  fprintf(fd, "default %s\n", defaultFile);
+  wxFprintf(fd, _T("default %s\n"), defaultFile);
   for (int i = 0; i < n; i++)
   {
-    char *refFilename = "??";
+    wxChar *refFilename = _T("??");
     
     TexRef *texRef = FindReference(hotspots[i].szHlpTopic_Macro);
     if (texRef)
       refFilename = texRef->refFile;
     else
     {
-      char buf[300];
-      sprintf(buf, "Warning: could not find hotspot reference %s", hotspots[i].szHlpTopic_Macro);
+      wxChar buf[300];
+      wxSprintf(buf, _T("Warning: could not find hotspot reference %s"), hotspots[i].szHlpTopic_Macro);
       OnInform(buf);
     }
-    fprintf(fd, "rect %s %d %d %d %d\n", refFilename, (int)hotspots[i].left, (int)hotspots[i].top,
+    wxFprintf(fd, _T("rect %s %d %d %d %d\n"), refFilename, (int)hotspots[i].left, (int)hotspots[i].top,
       (int)hotspots[i].right, (int)hotspots[i].bottom);
   }
-  fprintf(fd, "\n");
+  wxFprintf(fd, _T("\n"));
 
   fclose(fd);
 
index b26d4fea092daaa8b439cd3d629b30ed122ad02b..f710f3a34133002771748de7e719b5d1bf978e0a 100644 (file)
@@ -46,7 +46,7 @@ struct HotSpot
                       top,
                       right,
                       bottom;
-          char        szHlpTopic_Macro[65];
+          wxChar      szHlpTopic_Macro[65];
           bool        IsVisible;
 };
 
@@ -55,10 +55,10 @@ struct HotSpot
 // HotSpots *array;
 // int n = ParseSHG("thing.shg", &array);
 
-extern int ParseSHG( const char* fileName, HotSpot **hotspots);
+extern int ParseSHG( const wxChar* fileName, HotSpot **hotspots);
 
 // Converts Windows .SHG file to HTML map file
-extern bool SHGToMap(char *filename, char *defaultFile);
+extern bool SHGToMap(wxChar *filename, wxChar *defaultFile);
 
 #endif
 
index 676d2f561395bf5f6a58ed0ef6f424a3bc902b33..974e5d5d8677fb663f3ddfd175ce910373c46562 100644 (file)
@@ -46,22 +46,21 @@ static int indentLevel = 0;
 static int forbidParindent = 0; // if > 0, no parindent (e.g. in center environment)
 int forbidResetPar = 0; // If > 0, don't reset memory of having output a new par
 
-static char *contentsLineSection = NULL;
-static char *contentsLineValue = NULL;
+static wxChar *contentsLineSection = NULL;
+static wxChar *contentsLineValue = NULL;
 static TexChunk *descriptionItemArg = NULL;
 static wxStringList environmentStack; // Stack of paragraph styles we need to remember
 static int footnoteCount = 0;
 static int citeCount = 1;
-extern char *FileRoot;
 extern bool winHelp;
 extern bool startedSections;
 extern FILE *Contents;
 extern FILE *Chapters;
 extern FILE *Popups;
 extern FILE *WinHelpContentsFile;
-extern char *RTFCharset;
+extern wxChar *RTFCharset;
 // This is defined in the Tex2Any library and isn't in use after parsing
-extern char *BigBuffer;
+extern wxChar *BigBuffer;
 
 extern wxHashTable TexReferences;
 
@@ -79,7 +78,7 @@ static bool hotSpotUnderline = TRUE;
 static bool bitmapTransparency = TRUE;
 
 // Linear RTF requires us to set the style per section.
-static char *currentNumberStyle = NULL;
+static wxChar *currentNumberStyle = NULL;
 static int currentItemSep = 8;
 static int CurrentTextWidth = 8640; // Say, six inches
 static int CurrentLeftMarginOdd = 400;
@@ -117,39 +116,39 @@ static bool inTable = FALSE;
  * Current topics
  *
  */
-static char *CurrentChapterName = NULL;
-static char *CurrentSectionName = NULL;
-static char *CurrentSubsectionName = NULL;
-static char *CurrentTopic = NULL;
+static wxChar *CurrentChapterName = NULL;
+static wxChar *CurrentSectionName = NULL;
+static wxChar *CurrentSubsectionName = NULL;
+static wxChar *CurrentTopic = NULL;
 
 static bool InPopups()
 {
-  if (CurrentChapterName && (strcmp(CurrentChapterName, "popups") == 0))
+  if (CurrentChapterName && (wxStrcmp(CurrentChapterName, _T("popups")) == 0))
     return TRUE;
-  if (CurrentSectionName && (strcmp(CurrentSectionName, "popups") == 0))
+  if (CurrentSectionName && (wxStrcmp(CurrentSectionName, _T("popups")) == 0))
     return TRUE;
   return FALSE;
 }
 
-static void SetCurrentTopic(char *s)
+static void SetCurrentTopic(wxChar *s)
 {
   if (CurrentTopic) delete[] CurrentTopic;
   CurrentTopic = copystring(s);
 }
 
-void SetCurrentChapterName(char *s)
+void SetCurrentChapterName(wxChar *s)
 {
   if (CurrentChapterName) delete[] CurrentChapterName;
   CurrentChapterName = copystring(s);
   SetCurrentTopic(s);
 }
-void SetCurrentSectionName(char *s)
+void SetCurrentSectionName(wxChar *s)
 {
   if (CurrentSectionName) delete[] CurrentSectionName;
   CurrentSectionName = copystring(s);
   SetCurrentTopic(s);
 }
-void SetCurrentSubsectionName(char *s)
+void SetCurrentSubsectionName(wxChar *s)
 {
   if (CurrentSubsectionName) delete[] CurrentSubsectionName;
   CurrentSubsectionName = copystring(s);
@@ -160,7 +159,7 @@ void SetCurrentSubsectionName(char *s)
 // Level 1 is a chapter, 2 is a section, etc.
 void NotifyParentHasChildren(int parentLevel)
 {
-  char *parentTopic = NULL;
+  wxChar *parentTopic = NULL;
   switch (parentLevel)
   {
     case 1:
@@ -220,43 +219,40 @@ void OutputSectionKeyword(FILE *fd)
   OutputCurrentSectionToString(wxTex2RTFBuffer);
   
   unsigned int i;
-  for (i = 0; i < strlen(wxTex2RTFBuffer); i++)
+  for (i = 0; i < wxStrlen(wxTex2RTFBuffer); i++)
     if (wxTex2RTFBuffer[i] == ':')
       wxTex2RTFBuffer[i] = ' ';
     // Don't write to index if there's some RTF in the string
     else if ( wxTex2RTFBuffer[i] == '{' )
         return;
 
-  fprintf(fd, "K{\\footnote {K} ");
-  fprintf(fd, "%s", wxTex2RTFBuffer);
+  wxFprintf(fd, _T("K{\\footnote {K} "));
+  wxFprintf(fd, _T("%s"), wxTex2RTFBuffer);
   
-  fprintf(fd, "}\n");
+  wxFprintf(fd, _T("}\n"));
 }
 
 // Write a line for the .cnt file, if we're doing this.
-void WriteWinHelpContentsFileLine(char *topicName, char *xitle, int level)
+void WriteWinHelpContentsFileLine(wxChar *topicName, wxChar *xitle, int level)
 {
   // First, convert any RTF characters to ASCII
-  char title[255];
+  wxChar title[255];
   int s=0;
   int d=0;
   while ( (xitle[s]!=0)&&(d<255) )
   {
-         char ch=xitle[s]&0xff;
+         wxChar ch=xitle[s]&0xff;
          if (ch==0x5c) {
-                 char ch1=xitle[s+1]&0xff;
-                 char ch2=xitle[s+2]&0xff;
-                 char ch3=xitle[s+3]&0xff;
+                 wxChar ch1=xitle[s+1]&0xff;
+                 wxChar ch2=xitle[s+2]&0xff;
+                 wxChar ch3=xitle[s+3]&0xff;
                  s+=4; // next character                 
-                 char a=0;
-                 if ((ch1==0x27)&&(ch2==0x66)&&(ch3==0x36)) { title[d++]='ö';  a=1; }
-                 if ((ch1==0x27)&&(ch2==0x65)&&(ch3==0x34)) { title[d++]='ä';  a=1; }
-                 if ((ch1==0x27)&&(ch2==0x66)&&(ch3==0x63)) { title[d++]='ü';  a=1; }
-                 if ((ch1==0x27)&&(ch2==0x64)&&(ch3==0x36)) { title[d++]='Ö';  a=1; }
-                 if ((ch1==0x27)&&(ch2==0x63)&&(ch3==0x34)) { title[d++]='Ä';  a=1; }
-                 if ((ch1==0x27)&&(ch2==0x64)&&(ch3==0x63)) { title[d++]='Ü';  a=1; }
-//               if (a==0)
-//                       printf("!!!!! %04X %04X %04X %04X! \n",ch1,ch2,ch3,ch4);
+                 if ((ch1==0x27)&&(ch2==0x66)&&(ch3==0x36)) { title[d++]='ö';  }
+                 if ((ch1==0x27)&&(ch2==0x65)&&(ch3==0x34)) { title[d++]='ä';  }
+                 if ((ch1==0x27)&&(ch2==0x66)&&(ch3==0x63)) { title[d++]='ü';  }
+                 if ((ch1==0x27)&&(ch2==0x64)&&(ch3==0x36)) { title[d++]='Ö';  }
+                 if ((ch1==0x27)&&(ch2==0x63)&&(ch3==0x34)) { title[d++]='Ä';  }
+                 if ((ch1==0x27)&&(ch2==0x64)&&(ch3==0x63)) { title[d++]='Ü';  }
          } else {
                title[d++]=ch;
                s++;
@@ -287,10 +283,10 @@ void WriteWinHelpContentsFileLine(char *topicName, char *xitle, int level)
       {
         // At this level, we have a pointer to a further hierarchy.
         // So we need a 'book' consisting of (say) Chapter 1.
-        fprintf(WinHelpContentsFile, "%d %s\n", level, title);
+        wxFprintf(WinHelpContentsFile, _T("%d %s\n"), level, title);
 
         // Then we have a 'page' consisting of the text for this chapter
-        fprintf(WinHelpContentsFile, "%d %s=%s\n", level+1, title, topicName);
+        wxFprintf(WinHelpContentsFile, _T("%d %s=%s\n"), level+1, title, topicName);
 
         // Then we'll be writing out further pages or books at level + 1...
 
@@ -300,7 +296,7 @@ void WriteWinHelpContentsFileLine(char *topicName, char *xitle, int level)
       }
       else
       {
-        fprintf(WinHelpContentsFile, "%d %s=%s\n", level, title, topicName);
+        wxFprintf(WinHelpContentsFile, _T("%d %s=%s\n"), level, title, topicName);
       }
     }
     else
@@ -308,20 +304,20 @@ void WriteWinHelpContentsFileLine(char *topicName, char *xitle, int level)
       if (level == 1 || ContentsLevels[level-1])
       {
         // Always have a book at level 1
-        fprintf(WinHelpContentsFile, "%d %s\n", level, title);
-        fprintf(WinHelpContentsFile, "%d %s=%s\n", level+1, title, topicName);
+        wxFprintf(WinHelpContentsFile, _T("%d %s\n"), level, title);
+        wxFprintf(WinHelpContentsFile, _T("%d %s=%s\n"), level+1, title, topicName);
         ContentsLevels[level-1] = TRUE;
       }
       else
         // Probably doesn't have children if it hasn't been added to the topic table
-        fprintf(WinHelpContentsFile, "%d %s=%s\n", level, title, topicName);
+        wxFprintf(WinHelpContentsFile, _T("%d %s=%s\n"), level, title, topicName);
     }
   }
 }
 
-void SplitIndexEntry(char *entry, char *buf1, char *buf2)
+void SplitIndexEntry(wxChar *entry, wxChar *buf1, wxChar *buf2)
 {
-  int len = strlen(entry); int i = 0;
+  int len = wxStrlen(entry); int i = 0;
   while ((i < len) && entry[i] != '!')
   { buf1[i] = entry[i]; i ++; }
   buf1[i] = 0; buf2[0] = 0; int j = 0;
@@ -338,7 +334,7 @@ void SplitIndexEntry(char *entry, char *buf1, char *buf2)
  * Output topic index entries in WinHelp RTF
  *
  */
-void GenerateKeywordsForTopic(char *topic)
+void GenerateKeywordsForTopic(wxChar *topic)
 {
   TexTopic *texTopic = (TexTopic *)TopicTable.Get(topic);
   if (!texTopic)
@@ -350,32 +346,32 @@ void GenerateKeywordsForTopic(char *topic)
     wxStringListNode *node = list->GetFirst();
     while (node)
     {
-      char *s = (char *)node->GetData();
+      wxChar *s = (wxChar *)node->GetData();
 
       // Must separate out main entry form subentry (only 1 subentry allowed)
-      char buf1[100]; char buf2[100];
+      wxChar buf1[100]; wxChar buf2[100];
       SplitIndexEntry(s, buf1, buf2);
       
       // Check for ':' which messes up index
       unsigned int i;
-      for (i = 0; i < strlen(buf1) ; i++)
+      for (i = 0; i < wxStrlen(buf1) ; i++)
         if (buf1[i] == ':')
           buf1[i] = ' ';
-      for (i = 0; i < strlen(buf2) ; i++)
+      for (i = 0; i < wxStrlen(buf2) ; i++)
         if (buf2[i] == ':')
           buf2[i] = ' ';
 
       // {K} is a strange fix to prevent words beginning with K not
       // being indexed properly
-      TexOutput("K{\\footnote {K} ");
+      TexOutput(_T("K{\\footnote {K} "));
       TexOutput(buf1);
-      if (strlen(buf2) > 0)
+      if (wxStrlen(buf2) > 0)
       {
         // Output subentry
-        TexOutput(", ");
+        TexOutput(_T(", "));
         TexOutput(buf2);
       }
-      TexOutput("}\n");
+      TexOutput(_T("}\n"));
       node = node->GetNext();
     }
   }
@@ -386,21 +382,21 @@ void GenerateKeywordsForTopic(char *topic)
  *
  */
  
-void GenerateIndexEntry(char *entry)
+void GenerateIndexEntry(wxChar *entry)
 {
   if (useWord)
   {
-    char buf1[100]; char buf2[100];
+    wxChar buf1[100]; wxChar buf2[100];
     SplitIndexEntry(entry, buf1, buf2);
 
-    TexOutput("{\\xe\\v {");
+    TexOutput(_T("{\\xe\\v {"));
     TexOutput(buf1);
-    if (strlen(buf2) > 0)
+    if (wxStrlen(buf2) > 0)
     {
-      TexOutput("\\:");
+      TexOutput(_T("\\:"));
       TexOutput(buf2);
     }
-    TexOutput("}}");
+    TexOutput(_T("}}"));
   }
 }
 
@@ -411,15 +407,15 @@ void GenerateIndexEntry(char *entry)
   
 void WriteColourTable(FILE *fd)
 {
-  fprintf(fd, "{\\colortbl");
+  wxFprintf(fd, _T("{\\colortbl"));
   wxNode *node = ColourTable.GetFirst();
   while (node)
   {
     ColourTableEntry *entry = (ColourTableEntry *)node->GetData();
-    fprintf(fd, "\\red%d\\green%d\\blue%d;\n", entry->red, entry->green, entry->blue);
+    wxFprintf(fd, _T("\\red%d\\green%d\\blue%d;\n"), entry->red, entry->green, entry->blue);
     node = node->GetNext();
   }
-  fprintf(fd, "}");
+  wxFprintf(fd, _T("}"));
 }
 
 /*
@@ -433,22 +429,22 @@ void WriteHeadingStyle(FILE *fd, int heading)
   {
     case 1:
     {
-      fprintf(fd, "\\b\\fs%d", chapterFont*2);
+      wxFprintf(fd, _T("\\b\\fs%d"), chapterFont*2);
       break;
     }
     case 2:
     {
-      fprintf(fd, "\\b\\fs%d", sectionFont*2);
+      wxFprintf(fd, _T("\\b\\fs%d"), sectionFont*2);
       break;
     }
     case 3:
     {
-      fprintf(fd, "\\b\\fs%d", subsectionFont*2);
+      wxFprintf(fd, _T("\\b\\fs%d"), subsectionFont*2);
       break;
     }
     case 4:
     {
-      fprintf(fd, "\\b\\fs%d", subsectionFont*2);
+      wxFprintf(fd, _T("\\b\\fs%d"), subsectionFont*2);
       break;
     }
     default:
@@ -458,61 +454,61 @@ void WriteHeadingStyle(FILE *fd, int heading)
 
 void WriteRTFHeader(FILE *fd)
 {
-  fprintf(fd, "{\\rtf1\\%s \\deff0\n", RTFCharset);
-  fprintf(fd, "{\\fonttbl{\\f0\\froman Times New Roman;}{\\f1\\ftech Symbol;}{\\f2\\fswiss Arial;}\n");
-  fprintf(fd, "{\\f3\\fmodern Courier;}{\\f4\\ftech Wingdings;}{\\f5\\ftech Monotype Sorts;}\n}");
+  wxFprintf(fd, _T("{\\rtf1\\%s \\deff0\n"), RTFCharset);
+  wxFprintf(fd, _T("{\\fonttbl{\\f0\\froman Times New Roman;}{\\f1\\ftech Symbol;}{\\f2\\fswiss Arial;}\n"));
+  wxFprintf(fd, _T("{\\f3\\fmodern Courier;}{\\f4\\ftech Wingdings;}{\\f5\\ftech Monotype Sorts;}\n}"));
   /*
    * Style sheet
    */
-  fprintf(fd, "{\\stylesheet{\\f2\\fs20 \\snext0 Normal;}\n");
+  wxFprintf(fd, _T("{\\stylesheet{\\f2\\fs20 \\snext0 Normal;}\n"));
   // Headings
-  fprintf(fd, "{\\s1 "); WriteHeadingStyle(fd, 1); fprintf(fd, "\\sbasedon0\\snext0 heading 1;}\n");
-  fprintf(fd, "{\\s2 "); WriteHeadingStyle(fd, 2); fprintf(fd, "\\sbasedon0\\snext0 heading 2;}\n");
-  fprintf(fd, "{\\s3 "); WriteHeadingStyle(fd, 3); fprintf(fd, "\\sbasedon0\\snext0 heading 3;}\n");
-  fprintf(fd, "{\\s4 "); WriteHeadingStyle(fd, 4); fprintf(fd, "\\sbasedon0\\snext0 heading 4;}\n");
+  wxFprintf(fd, _T("{\\s1 ")); WriteHeadingStyle(fd, 1); wxFprintf(fd, _T("\\sbasedon0\\snext0 heading 1;}\n"));
+  wxFprintf(fd, _T("{\\s2 ")); WriteHeadingStyle(fd, 2); wxFprintf(fd, _T("\\sbasedon0\\snext0 heading 2;}\n"));
+  wxFprintf(fd, _T("{\\s3 ")); WriteHeadingStyle(fd, 3); wxFprintf(fd, _T("\\sbasedon0\\snext0 heading 3;}\n"));
+  wxFprintf(fd, _T("{\\s4 ")); WriteHeadingStyle(fd, 4); wxFprintf(fd, _T("\\sbasedon0\\snext0 heading 4;}\n"));
   // Table of contents styles
-  fprintf(fd, "{\\s20\\sb300\\tqr\\tldot\\tx8640 \\b\\f2 \\sbasedon0\\snext0 toc 1;}\n");
+  wxFprintf(fd, _T("{\\s20\\sb300\\tqr\\tldot\\tx8640 \\b\\f2 \\sbasedon0\\snext0 toc 1;}\n"));
   
-  fprintf(fd, "{\\s21\\sb90\\tqr\\tldot\\li400\\tqr\\tx8640 \\f2\\fs20\\sbasedon0\\snext0 toc 2;}\n");
-  fprintf(fd, "{\\s22\\sb90\\tqr\\tldot\\li800\\tx8640 \\f2\\fs20 \\sbasedon0\\snext0 toc 3;}\n");
-  fprintf(fd, "{\\s23\\sb90\\tqr\\tldot\\li1200\\tx8640 \\f2\\fs20 \\sbasedon0\\snext0 toc 4;}\n");
+  wxFprintf(fd, _T("{\\s21\\sb90\\tqr\\tldot\\li400\\tqr\\tx8640 \\f2\\fs20\\sbasedon0\\snext0 toc 2;}\n"));
+  wxFprintf(fd, _T("{\\s22\\sb90\\tqr\\tldot\\li800\\tx8640 \\f2\\fs20 \\sbasedon0\\snext0 toc 3;}\n"));
+  wxFprintf(fd, _T("{\\s23\\sb90\\tqr\\tldot\\li1200\\tx8640 \\f2\\fs20 \\sbasedon0\\snext0 toc 4;}\n"));
 
   // Index styles
-  fprintf(fd, "{\\s30\\fi-200\\li200\\tqr\\tx3960 \\f2\\fs18 \\sbasedon0\\snext0 index 1;}\n");
-  fprintf(fd, "{\\s31\\fi-200\\li400\\tqr\\tx3960 \\f2\\fs18 \\sbasedon0\\snext0 index 2;}\n");
-  fprintf(fd, "{\\s32\\fi-200\\li600\\tqr\\tx3960 \\f2\\fs18 \\sbasedon0\\snext0 index 3;}\n");
-  fprintf(fd, "{\\s33\\fi-200\\li800\\tqr\\tx3960 \\f2\\fs18 \\sbasedon0\\snext0 index 4;}\n");
-  fprintf(fd, "{\\s35\\qc\\sb240\\sa120 \\b\\f2\\fs26 \\sbasedon0\\snext30 index heading;}\n");
-  fprintf(fd, "}\n");
+  wxFprintf(fd, _T("{\\s30\\fi-200\\li200\\tqr\\tx3960 \\f2\\fs18 \\sbasedon0\\snext0 index 1;}\n"));
+  wxFprintf(fd, _T("{\\s31\\fi-200\\li400\\tqr\\tx3960 \\f2\\fs18 \\sbasedon0\\snext0 index 2;}\n"));
+  wxFprintf(fd, _T("{\\s32\\fi-200\\li600\\tqr\\tx3960 \\f2\\fs18 \\sbasedon0\\snext0 index 3;}\n"));
+  wxFprintf(fd, _T("{\\s33\\fi-200\\li800\\tqr\\tx3960 \\f2\\fs18 \\sbasedon0\\snext0 index 4;}\n"));
+  wxFprintf(fd, _T("{\\s35\\qc\\sb240\\sa120 \\b\\f2\\fs26 \\sbasedon0\\snext30 index heading;}\n"));
+  wxFprintf(fd, _T("}\n"));
 
   WriteColourTable(fd);
-  fprintf(fd, "\n\\ftnbj\\ftnrestart"); // Latex default is footnotes at bottom of page, not section.
-  fprintf(fd, "\n");
+  wxFprintf(fd, _T("\n\\ftnbj\\ftnrestart")); // Latex default is footnotes at bottom of page, not section.
+  wxFprintf(fd, _T("\n"));
 }
 
-void OutputNumberStyle(char *numberStyle)
+void OutputNumberStyle(wxChar *numberStyle)
 {
   if (numberStyle)
   {
-    if (strcmp(numberStyle, "arabic") == 0)
+    if (wxStrcmp(numberStyle, _T("arabic")) == 0)
     {
-      TexOutput("\\pgndec");
+      TexOutput(_T("\\pgndec"));
     }
-    else if (strcmp(numberStyle, "roman") == 0)
+    else if (wxStrcmp(numberStyle, _T("roman")) == 0)
     {
-      TexOutput("\\pgnlcrm");
+      TexOutput(_T("\\pgnlcrm"));
     }
-    else if (strcmp(numberStyle, "Roman") == 0)
+    else if (wxStrcmp(numberStyle, _T("Roman")) == 0)
     {
-      TexOutput("\\pgnucrm");
+      TexOutput(_T("\\pgnucrm"));
     }
-    else if (strcmp(numberStyle, "alph") == 0)
+    else if (wxStrcmp(numberStyle, _T("alph")) == 0)
     {
-      TexOutput("\\pgnlcltr");
+      TexOutput(_T("\\pgnlcltr"));
     }
-    else if (strcmp(numberStyle, "Alph") == 0)
+    else if (wxStrcmp(numberStyle, _T("Alph")) == 0)
     {
-      TexOutput("\\pgnucltr");
+      TexOutput(_T("\\pgnucltr"));
     }
   }
 }
@@ -521,63 +517,63 @@ void OutputNumberStyle(char *numberStyle)
  * Write a Windows help project file
  */
  
-bool WriteHPJ(char *filename)
+bool WriteHPJ(wxChar *filename)
 {
-  char hpjFilename[256];
-  char helpFile[50];
-  char rtfFile[50];
-  strcpy(hpjFilename, filename);
+  wxChar hpjFilename[256];
+  wxChar helpFile[50];
+  wxChar rtfFile[50];
+  wxStrcpy(hpjFilename, filename);
   StripExtension(hpjFilename);
-  strcat(hpjFilename, ".hpj");
+  wxStrcat(hpjFilename, _T(".hpj"));
 
-  strcpy(helpFile, wxFileNameFromPath(filename));
+  wxStrcpy(helpFile, wxFileNameFromPath(filename));
   StripExtension(helpFile);
-  strcpy(rtfFile, helpFile);
-  strcat(helpFile, ".hlp");
-  strcat(rtfFile, ".rtf");
+  wxStrcpy(rtfFile, helpFile);
+  wxStrcat(helpFile, _T(".hlp"));
+  wxStrcat(rtfFile, _T(".rtf"));
   
-  FILE *fd = fopen(hpjFilename, "w");
+  FILE *fd = wxFopen(hpjFilename, _T("w"));
   if (!fd)
     return FALSE;
 
-  char *helpTitle = winHelpTitle;
+  wxChar *helpTitle = winHelpTitle;
   if (!helpTitle)
-    helpTitle = "Untitled";
+    helpTitle = _T("Untitled");
     
   wxString thePath = wxPathOnly(InputFile);
   if (thePath.IsEmpty())
-    thePath = ".";
-  fprintf(fd, "[OPTIONS]\n");
-  fprintf(fd, "BMROOT=%s ; Assume that bitmaps are where the source is\n", thePath.c_str());
-  fprintf(fd, "TITLE=%s\n", helpTitle);
-  fprintf(fd, "CONTENTS=Contents\n");
+    thePath = _T(".");
+  wxFprintf(fd, _T("[OPTIONS]\n"));
+  wxFprintf(fd, _T("BMROOT=%s ; Assume that bitmaps are where the source is\n"), thePath.c_str());
+  wxFprintf(fd, _T("TITLE=%s\n"), helpTitle);
+  wxFprintf(fd, _T("CONTENTS=Contents\n"));
 
   if (winHelpVersion > 3)
   {
-    fprintf(fd, "; COMPRESS=12 Hall Zeck ; Max compression, but needs lots of memory\n");
-    fprintf(fd, "COMPRESS=8 Zeck\n");
-    fprintf(fd, "LCID=0x809 0x0 0x0 ;English (British)\n");
-    fprintf(fd, "HLP=.\\%s.hlp\n", wxFileNameFromPath(FileRoot));
+    wxFprintf(fd, _T("; COMPRESS=12 Hall Zeck ; Max compression, but needs lots of memory\n"));
+    wxFprintf(fd, _T("COMPRESS=8 Zeck\n"));
+    wxFprintf(fd, _T("LCID=0x809 0x0 0x0 ;English (British)\n"));
+    wxFprintf(fd, _T("HLP=.\\%s.hlp\n"), wxFileNameFromPath(FileRoot));
   }
   else
   {
-    fprintf(fd, "COMPRESS=HIGH\n");
+    wxFprintf(fd, _T("COMPRESS=HIGH\n"));
   }
-  fprintf(fd, "\n");
+  wxFprintf(fd, _T("\n"));
 
   if (winHelpVersion > 3)
   {
-    fprintf(fd, "[WINDOWS]\n");
-    fprintf(fd, "Main=\"\",(553,102,400,600),20736,(r14876671),(r12632256),f3\n");
-    fprintf(fd, "\n");
+    wxFprintf(fd, _T("[WINDOWS]\n"));
+    wxFprintf(fd, _T("Main=\"\",(553,102,400,600),20736,(r14876671),(r12632256),f3\n"));
+    wxFprintf(fd, _T("\n"));
   }
 
-  fprintf(fd, "[FILES]\n%s\n\n", rtfFile);
-  fprintf(fd, "[CONFIG]\n");
+  wxFprintf(fd, _T("[FILES]\n%s\n\n"), rtfFile);
+  wxFprintf(fd, _T("[CONFIG]\n"));
   if (useUpButton)
-    fprintf(fd, "CreateButton(\"Up\", \"&Up\", \"JumpId(`%s', `Contents')\")\n", helpFile);
-  fprintf(fd, "BrowseButtons()\n\n");
-  fprintf(fd, "[MAP]\n\n[BITMAPS]\n\n");
+    wxFprintf(fd, _T("CreateButton(\"Up\", \"&Up\", \"JumpId(`%s', `Contents')\")\n"), helpFile);
+  wxFprintf(fd, _T("BrowseButtons()\n\n"));
+  wxFprintf(fd, _T("[MAP]\n\n[BITMAPS]\n\n"));
   fclose(fd);
   return TRUE;
 }
@@ -596,8 +592,8 @@ void ProcessText2RTF(TexChunk *chunk)
   bool changed = FALSE;
   int ptr = 0;
   int i = 0;
-  char ch = 1;
-  int len = strlen(chunk->value);
+  wxChar ch = 1;
+  int len = wxStrlen(chunk->value);
   while (ch != 0)
   {
     ch = chunk->value[i];
@@ -606,7 +602,7 @@ void ProcessText2RTF(TexChunk *chunk)
     {
       if (inVerbatim)
       {
-        BigBuffer[ptr] = 0; strcat(BigBuffer, "\\par\n"); ptr += 5;
+        BigBuffer[ptr] = 0; wxStrcat(BigBuffer, _T("\\par\n")); ptr += 5;
         i ++;
         changed = TRUE;
       }
@@ -756,18 +752,18 @@ void Text2RTF(TexChunk *chunk)
  *
  */
  
-char browseBuf[10];
+wxChar browseBuf[10];
 static long browseId = 0;
-char *GetBrowseString(void)
+wxChar *GetBrowseString(void)
 {
-  char buf[10];
+  wxChar buf[10];
   browseId ++;
-  sprintf(buf, "%ld", browseId);
-  int noZeroes = 5-strlen(buf);
-  strcpy(browseBuf, "browse");
+  wxSprintf(buf, _T("%ld"), browseId);
+  int noZeroes = 5-wxStrlen(buf);
+  wxStrcpy(browseBuf, _T("browse"));
   for (int i = 0; i < noZeroes; i++)
-    strcat(browseBuf, "0");
-  strcat(browseBuf, buf);
+    wxStrcat(browseBuf, _T("0"));
+  wxStrcat(browseBuf, buf);
   return browseBuf;
 }
 
@@ -777,7 +773,7 @@ char *GetBrowseString(void)
  *
  */
 
-void PushEnvironmentStyle(char *style)
+void PushEnvironmentStyle(wxChar *style)
 {
   environmentStack.Add(style);
 }
@@ -787,7 +783,7 @@ void PopEnvironmentStyle(void)
   wxStringListNode *node = environmentStack.GetLast();
   if (node)
   {
-    char *val = (char *)node->GetData();
+    wxChar *val = (wxChar *)node->GetData();
     delete[] val;
     delete node;
   }
@@ -799,18 +795,18 @@ void WriteEnvironmentStyles(void)
   wxStringListNode *node = environmentStack.GetLast();
   while (node)
   {
-    char *val = (char *)node->GetData();
+    wxChar *val = (wxChar *)node->GetData();
     TexOutput(val);
     node = node->GetNext();
   }
   if (!inTabular && (ParIndent > 0) && (forbidParindent == 0))
   {
-    char buf[15];
-    sprintf(buf, "\\fi%d", ParIndent*20); // Convert points to TWIPS
+    wxChar buf[15];
+    wxSprintf(buf, _T("\\fi%d"), ParIndent*20); // Convert points to TWIPS
     TexOutput(buf);
   }
   if (environmentStack.GetCount() > 0 || (ParIndent > 0))
-    TexOutput("\n");
+    TexOutput(_T("\n"));
 }
 
 
@@ -821,56 +817,56 @@ void WriteEnvironmentStyles(void)
 
 void OutputRTFHeaderCommands(void)
 {
-  char buf[300];
-  if (PageStyle && strcmp(PageStyle, "plain") == 0)
+  wxChar buf[300];
+  if (PageStyle && wxStrcmp(PageStyle, _T("plain")) == 0)
   {
-    TexOutput("{\\headerl }{\\headerr }");
+    TexOutput(_T("{\\headerl }{\\headerr }"));
   }
-  else if (PageStyle && strcmp(PageStyle, "empty") == 0)
+  else if (PageStyle && wxStrcmp(PageStyle, _T("empty")) == 0)
   {
-    TexOutput("{\\headerl }{\\headerr }");
+    TexOutput(_T("{\\headerl }{\\headerr }"));
   }
-  else if (PageStyle && strcmp(PageStyle, "headings") == 0)
+  else if (PageStyle && wxStrcmp(PageStyle, _T("headings")) == 0)
   {
     // Left header
-    TexOutput("{\\headerl\\fi0 ");
+    TexOutput(_T("{\\headerl\\fi0 "));
 
     if (headerRule)
-      TexOutput("\\brdrb\\brdrs\\brdrw15\\brsp20 ");
+      TexOutput(_T("\\brdrb\\brdrs\\brdrw15\\brsp20 "));
 
-    TexOutput("{\\i \\qr ");
+    TexOutput(_T("{\\i \\qr "));
     if (DocumentStyle == LATEX_ARTICLE)
     {
-      sprintf(buf, "SECTION %d", sectionNo);
+      wxSprintf(buf, _T("SECTION %d"), sectionNo);
       TexOutput(buf);
     }
     else
     {
-      sprintf(buf, "CHAPTER %d: ", chapterNo);
+      wxSprintf(buf, _T("CHAPTER %d: "), chapterNo);
       TexOutput(buf);
     }
-    TexOutput("{\\field{\\*\\fldinst PAGE \\\\* MERGEFORMAT }{\\fldrslt 1}}");
-    TexOutput("}\\par\\pard}");
+    TexOutput(_T("{\\field{\\*\\fldinst PAGE \\\\* MERGEFORMAT }{\\fldrslt 1}}"));
+    TexOutput(_T("}\\par\\pard}"));
 
     // Right header
-    TexOutput("{\\headerr\\fi0 ");
+    TexOutput(_T("{\\headerr\\fi0 "));
 
     if (headerRule)
-      TexOutput("\\brdrb\\brdrs\\brdrw15\\brsp20 ");
+      TexOutput(_T("\\brdrb\\brdrs\\brdrw15\\brsp20 "));
 
-    TexOutput("{\\i \\qc ");
+    TexOutput(_T("{\\i \\qc "));
     if (DocumentStyle == LATEX_ARTICLE)
     {
-      sprintf(buf, "SECTION %d", sectionNo);
+      wxSprintf(buf, _T("SECTION %d"), sectionNo);
       TexOutput(buf);
     }
     else
     {
-      sprintf(buf, "CHAPTER %d", chapterNo);
+      wxSprintf(buf, _T("CHAPTER %d"), chapterNo);
       TexOutput(buf);
     }
-    TexOutput("{\\field{\\*\\fldinst PAGE \\\\* MERGEFORMAT }{\\fldrslt 1}}");
-    TexOutput("}\\par\\pard}");
+    TexOutput(_T("{\\field{\\*\\fldinst PAGE \\\\* MERGEFORMAT }{\\fldrslt 1}}"));
+    TexOutput(_T("}\\par\\pard}"));
   }
   else
   {
@@ -879,70 +875,70 @@ void OutputRTFHeaderCommands(void)
     
     if (LeftHeaderEven || CentreHeaderEven || RightHeaderEven)
     {
-      TexOutput("{\\headerl\\fi0 ");
+      TexOutput(_T("{\\headerl\\fi0 "));
 
       if (headerRule)
-        TexOutput("\\brdrb\\brdrs\\brdrw15\\brsp20 ");
+        TexOutput(_T("\\brdrb\\brdrs\\brdrw15\\brsp20 "));
 
       if (LeftHeaderEven)
       {
         if (!CentreHeaderEven && !RightHeaderEven)
-          TexOutput("\\ql ");
+          TexOutput(_T("\\ql "));
         TraverseChildrenFromChunk(LeftHeaderEven);
       }
       if (CentreHeaderEven)
       {
         if (!LeftHeaderEven && !RightHeaderEven)
-          TexOutput("\\qc ");
+          TexOutput(_T("\\qc "));
         else
-          TexOutput("\\tab\\tab\\tab ");
+          TexOutput(_T("\\tab\\tab\\tab "));
         TraverseChildrenFromChunk(CentreHeaderEven);
       }
       if (RightHeaderEven)
       {
         if (!LeftHeaderEven && !CentreHeaderEven)
-          TexOutput("\\qr ");
+          TexOutput(_T("\\qr "));
         else
-          TexOutput("\\tab\\tab\\tab\\tab\\tab\\tab ");
+          TexOutput(_T("\\tab\\tab\\tab\\tab\\tab\\tab "));
         TraverseChildrenFromChunk(RightHeaderEven);
       }
-      TexOutput("\\par\\pard}");
+      TexOutput(_T("\\par\\pard}"));
     }
 
     if (LeftHeaderOdd || CentreHeaderOdd || RightHeaderOdd)
     {
-      TexOutput("{\\headerr\\fi0 ");
+      TexOutput(_T("{\\headerr\\fi0 "));
 
       if (headerRule)
-        TexOutput("\\brdrb\\brdrs\\brdrw15\\brsp20 ");
+        TexOutput(_T("\\brdrb\\brdrs\\brdrw15\\brsp20 "));
 
       if (LeftHeaderOdd)
       {
         if (!CentreHeaderOdd && !RightHeaderOdd)
-          TexOutput("\\ql ");
+          TexOutput(_T("\\ql "));
         TraverseChildrenFromChunk(LeftHeaderOdd);
       }
       if (CentreHeaderOdd)
       {
         if (!LeftHeaderOdd && !RightHeaderOdd)
-          TexOutput("\\qc ");
+          TexOutput(_T("\\qc "));
         else
-          TexOutput("\\tab\\tab\\tab ");
+          TexOutput(_T("\\tab\\tab\\tab "));
         TraverseChildrenFromChunk(CentreHeaderOdd);
       }
       if (RightHeaderOdd)
       {
         if (!LeftHeaderOdd && !CentreHeaderOdd)
-          TexOutput("\\qr ");
+          TexOutput(_T("\\qr "));
         else
-          TexOutput("\\tab\\tab\\tab\\tab\\tab\\tab ");
+          TexOutput(_T("\\tab\\tab\\tab\\tab\\tab\\tab "));
         TraverseChildrenFromChunk(RightHeaderOdd);
       }
-      TexOutput("\\par\\pard}");
+      TexOutput(_T("\\par\\pard}"));
     }
     // As an approximation, don't put a header on the first page of a section.
     // This may not always be desired, but it's a reasonable guess.
-    TexOutput("{\\headerf }");
+    TexOutput(_T("{\\headerf }"));
 
     forbidResetPar = oldForbidResetPar;
   }
@@ -950,120 +946,120 @@ void OutputRTFHeaderCommands(void)
 
 void OutputRTFFooterCommands(void)
 {
-  if (PageStyle && strcmp(PageStyle, "plain") == 0)
+  if (PageStyle && wxStrcmp(PageStyle, _T("plain")) == 0)
   {
-    TexOutput("{\\footerl\\fi0 ");
+    TexOutput(_T("{\\footerl\\fi0 "));
     if (footerRule)
-      TexOutput("\\brdrt\\brdrs\\brdrw15\\brsp20 ");
-    TexOutput("{\\qc ");
-    TexOutput("{\\field{\\*\\fldinst PAGE \\\\* MERGEFORMAT }{\\fldrslt 1}}");
-    TexOutput("}\\par\\pard}");
+      TexOutput(_T("\\brdrt\\brdrs\\brdrw15\\brsp20 "));
+    TexOutput(_T("{\\qc "));
+    TexOutput(_T("{\\field{\\*\\fldinst PAGE \\\\* MERGEFORMAT }{\\fldrslt 1}}"));
+    TexOutput(_T("}\\par\\pard}"));
 
-    TexOutput("{\\footerr\\fi0 ");
+    TexOutput(_T("{\\footerr\\fi0 "));
     if (footerRule)
-      TexOutput("\\brdrt\\brdrs\\brdrw15\\brsp20 ");
-    TexOutput("{\\qc ");
-    TexOutput("{\\field{\\*\\fldinst PAGE \\\\* MERGEFORMAT }{\\fldrslt 1}}");
-    TexOutput("}\\par\\pard}");
+      TexOutput(_T("\\brdrt\\brdrs\\brdrw15\\brsp20 "));
+    TexOutput(_T("{\\qc "));
+    TexOutput(_T("{\\field{\\*\\fldinst PAGE \\\\* MERGEFORMAT }{\\fldrslt 1}}"));
+    TexOutput(_T("}\\par\\pard}"));
   }
-  else if (PageStyle && strcmp(PageStyle, "empty") == 0)
+  else if (PageStyle && wxStrcmp(PageStyle, _T("empty")) == 0)
   {
-    TexOutput("{\\footerl }{\\footerr }");
+    TexOutput(_T("{\\footerl }{\\footerr }"));
   }
-  else if (PageStyle && strcmp(PageStyle, "headings") == 0)
+  else if (PageStyle && wxStrcmp(PageStyle, _T("headings")) == 0)
   {
-    TexOutput("{\\footerl }{\\footerr }");
+    TexOutput(_T("{\\footerl }{\\footerr }"));
   }
   else
   {
     if (LeftFooterEven || CentreFooterEven || RightFooterEven)
     {
-      TexOutput("{\\footerl\\fi0 ");
+      TexOutput(_T("{\\footerl\\fi0 "));
       if (footerRule)
-        TexOutput("\\brdrt\\brdrs\\brdrw15\\brsp20 ");
+        TexOutput(_T("\\brdrt\\brdrs\\brdrw15\\brsp20 "));
       if (LeftFooterEven)
       {
         if (!CentreFooterEven && !RightFooterEven)
-          TexOutput("\\ql ");
+          TexOutput(_T("\\ql "));
         TraverseChildrenFromChunk(LeftFooterEven);
       }
       if (CentreFooterEven)
       {
         if (!LeftFooterEven && !RightFooterEven)
-          TexOutput("\\qc ");
+          TexOutput(_T("\\qc "));
         else
-          TexOutput("\\tab\\tab\\tab ");
+          TexOutput(_T("\\tab\\tab\\tab "));
         TraverseChildrenFromChunk(CentreFooterEven);
       }
       if (RightFooterEven)
       {
         if (!LeftFooterEven && !CentreFooterEven)
-          TexOutput("\\qr ");
+          TexOutput(_T("\\qr "));
         else
-          TexOutput("\\tab\\tab\\tab\\tab\\tab\\tab ");
+          TexOutput(_T("\\tab\\tab\\tab\\tab\\tab\\tab "));
         TraverseChildrenFromChunk(RightFooterEven);
       }
-      TexOutput("\\par\\pard}");
+      TexOutput(_T("\\par\\pard}"));
     }
 
     if (LeftFooterOdd || CentreFooterOdd || RightFooterOdd)
     {
-      TexOutput("{\\footerr\\fi0 ");
+      TexOutput(_T("{\\footerr\\fi0 "));
       if (footerRule)
-        TexOutput("\\brdrt\\brdrs\\brdrw15\\brsp20 ");
+        TexOutput(_T("\\brdrt\\brdrs\\brdrw15\\brsp20 "));
       if (LeftFooterOdd)
       {
         if (!CentreFooterOdd && !RightFooterOdd)
-          TexOutput("\\ql ");
+          TexOutput(_T("\\ql "));
         TraverseChildrenFromChunk(LeftFooterOdd);
       }
       if (CentreFooterOdd)
       {
         if (!LeftFooterOdd && !RightFooterOdd)
-          TexOutput("\\qc ");
+          TexOutput(_T("\\qc "));
         else
-          TexOutput("\\tab\\tab\\tab ");
+          TexOutput(_T("\\tab\\tab\\tab "));
         TraverseChildrenFromChunk(CentreFooterOdd);
       }
       if (RightFooterOdd)
       {
         if (!LeftFooterOdd && !CentreFooterOdd)
-          TexOutput("\\qr ");
+          TexOutput(_T("\\qr "));
         else
-          TexOutput("\\tab\\tab\\tab\\tab\\tab\\tab ");
+          TexOutput(_T("\\tab\\tab\\tab\\tab\\tab\\tab "));
         TraverseChildrenFromChunk(RightFooterOdd);
       }
-      TexOutput("\\par\\pard}");
+      TexOutput(_T("\\par\\pard}"));
     }
 
     // As an approximation, put a footer on the first page of a section.
     // This may not always be desired, but it's a reasonable guess.
     if (LeftFooterOdd || CentreFooterOdd || RightFooterOdd)
     {
-      TexOutput("{\\footerf\\fi0 ");
+      TexOutput(_T("{\\footerf\\fi0 "));
       if (LeftFooterOdd)
       {
         if (!CentreFooterOdd && !RightFooterOdd)
-          TexOutput("\\ql ");
+          TexOutput(_T("\\ql "));
         TraverseChildrenFromChunk(LeftFooterOdd);
       }
       if (CentreFooterOdd)
       {
         if (!LeftFooterOdd && !RightFooterOdd)
-          TexOutput("\\qc ");
+          TexOutput(_T("\\qc "));
         else
-          TexOutput("\\tab\\tab\\tab ");
+          TexOutput(_T("\\tab\\tab\\tab "));
         TraverseChildrenFromChunk(CentreFooterOdd);
       }
       if (RightFooterOdd)
       {
         if (!LeftFooterOdd && !CentreFooterOdd)
-          TexOutput("\\qr ");
+          TexOutput(_T("\\qr "));
         else
-          TexOutput("\\tab\\tab\\tab\\tab\\tab\\tab ");
+          TexOutput(_T("\\tab\\tab\\tab\\tab\\tab\\tab "));
         TraverseChildrenFromChunk(RightFooterOdd);
       }
-      TexOutput("\\par\\pard}");
+      TexOutput(_T("\\par\\pard}"));
     }
   }
 }
@@ -1072,8 +1068,8 @@ void OutputRTFFooterCommands(void)
 void RTFOnMacro(int macroId, int no_args, bool start)
 {
 /*
-  char tmpBuf[40];
-  sprintf(tmpBuf, "%d (%d)", macroId, (int)start);
+  wxChar tmpBuf[40];
+  wxSprintf(tmpBuf, _T("%d (%d)"), macroId, (int)start);
   OutputDebugString("RTFOnMacro Start "); OutputDebugString(tmpBuf);
   OutputDebugString("\n"); wxYield();
 */
@@ -1091,7 +1087,7 @@ void RTFOnMacro(int macroId, int no_args, bool start)
     issuedNewParagraph = 0;
   }
 
-  char buf[300];
+  wxChar buf[300];
   switch (macroId)
   {
   case ltCHAPTER:
@@ -1111,7 +1107,7 @@ void RTFOnMacro(int macroId, int no_args, bool start)
       if (macroId != ltCHAPTERSTAR && macroId != ltCHAPTERHEADINGSTAR)
         chapterNo ++;
 
-      char *topicName = FindTopicName(GetNextChunk());
+      wxChar *topicName = FindTopicName(GetNextChunk());
       SetCurrentChapterName(topicName);
 
       if (winHelpContents && winHelp && !InPopups())
@@ -1124,9 +1120,9 @@ void RTFOnMacro(int macroId, int no_args, bool start)
       if (winHelp)
       {
         if (!InPopups())
-          fprintf(Contents, "\n{\\uldb ");
-        fprintf(Chapters, "\\page");
-        fprintf(Chapters, "\n${\\footnote ");
+          wxFprintf(Contents, _T("\n{\\uldb "));
+        wxFprintf(Chapters, _T("\\page"));
+        wxFprintf(Chapters, _T("\n${\\footnote "));
         if (!InPopups())
           SetCurrentOutputs(Contents, Chapters);
         else
@@ -1134,12 +1130,12 @@ void RTFOnMacro(int macroId, int no_args, bool start)
       }
       else
       {
-        fprintf(Chapters, "\\sect\\pgncont\\titlepg\n");
+        wxFprintf(Chapters, _T("\\sect\\pgncont\\titlepg\n"));
 
         // If a non-custom page style, we generate the header now.
-        if (PageStyle && (strcmp(PageStyle, "plain") == 0 ||
-                          strcmp(PageStyle, "empty") == 0 ||
-                          strcmp(PageStyle, "headings") == 0))
+        if (PageStyle && (wxStrcmp(PageStyle, _T("plain")) == 0 ||
+                          wxStrcmp(PageStyle, _T("empty")) == 0 ||
+                          wxStrcmp(PageStyle, _T("headings")) == 0))
         {
           OutputRTFHeaderCommands();
           OutputRTFFooterCommands();
@@ -1156,11 +1152,11 @@ void RTFOnMacro(int macroId, int no_args, bool start)
           if (macroId == ltCHAPTER)
           {
             // Section
-            fprintf(Contents, "\\par\n\\pard{\\b %d\\tab ", chapterNo);
+            wxFprintf(Contents, _T("\\par\n\\pard{\\b %d\\tab "), chapterNo);
           }
           else if (macroId == ltCHAPTERHEADING)
           {
-            fprintf(Contents, "\\par\n\\pard{\\b ");
+            wxFprintf(Contents, _T("\\par\n\\pard{\\b "));
           }
           else SetCurrentOutput(NULL); // No entry in table of contents
         }
@@ -1174,9 +1170,9 @@ void RTFOnMacro(int macroId, int no_args, bool start)
         OutputCurrentSection();
       
         if (winHelp)
-          fprintf(Contents, "}{\\v %s}\\par\\pard\n", topicName);
+          wxFprintf(Contents, _T("}{\\v %s}\\par\\pard\n"), topicName);
         else if ((macroId == ltCHAPTER) || (macroId == ltCHAPTERHEADING))
-          fprintf(Contents, "}\\par\\par\\pard\n");
+          wxFprintf(Contents, _T("}\\par\\par\\pard\n"));
 
         // From here, just output to chapter
         SetCurrentOutput(Chapters);
@@ -1184,8 +1180,8 @@ void RTFOnMacro(int macroId, int no_args, bool start)
      
       if (winHelp)
       {
-        fprintf(Chapters, "}\n#{\\footnote %s}\n", topicName);
-        fprintf(Chapters, "+{\\footnote %s}\n", GetBrowseString());
+        wxFprintf(Chapters, _T("}\n#{\\footnote %s}\n"), topicName);
+        wxFprintf(Chapters, _T("+{\\footnote %s}\n"), GetBrowseString());
         
         OutputSectionKeyword(Chapters);
 
@@ -1195,37 +1191,37 @@ void RTFOnMacro(int macroId, int no_args, bool start)
           // If we're generating a .cnt file, we don't want to be able
           // jump up to the old-style contents page, so disable it.
           if (winHelpContents)
-            fprintf(Chapters, "!{\\footnote DisableButton(\"Up\")}\n");
+            wxFprintf(Chapters, _T("!{\\footnote DisableButton(\"Up\")}\n"));
           else
-            fprintf(Chapters, "!{\\footnote EnableButton(\"Up\");ChangeButtonBinding(\"Up\", \"JumpId(`%s.hlp', `%s')\")}\n",
-               wxFileNameFromPath(FileRoot), "Contents");
+            wxFprintf(Chapters, _T("!{\\footnote EnableButton(\"Up\");ChangeButtonBinding(\"Up\", \"JumpId(`%s.hlp', `%s')\")}\n"),
+               wxFileNameFromPath(FileRoot), _T("Contents"));
         }
       }
 
       if (!InPopups())
       {
-      char *styleCommand = "";
+      wxChar *styleCommand = _T("");
       if (!winHelp && useHeadingStyles && (macroId == ltCHAPTER || macroId == ltCHAPTERHEADING || macroId == ltCHAPTERHEADINGSTAR))
-        styleCommand = "\\s1";
-      fprintf(Chapters, "\\pard{%s", ((winHelp && !InPopups()) ? "\\keepn\\sa140\\sb140" : styleCommand));
-      WriteHeadingStyle(Chapters, 1);  fprintf(Chapters, " ");
+        styleCommand = _T("\\s1");
+      wxFprintf(Chapters, _T("\\pard{%s"), ((winHelp && !InPopups()) ? _T("\\keepn\\sa140\\sb140") : styleCommand));
+      WriteHeadingStyle(Chapters, 1);  wxFprintf(Chapters, _T(" "));
       if (!winHelp)
       {
         if (macroId == ltCHAPTER)
         {
           if (useWord)
-//            fprintf(Chapters, "{\\bkmkstart %s}%d{\\bkmkend %s}. ", topicName, chapterNo,
-            fprintf(Chapters, "{\\bkmkstart %s}{\\bkmkend %s}", topicName, topicName);
+//            wxFprintf(Chapters, "{\\bkmkstart %s}%d{\\bkmkend %s}. ", topicName, chapterNo,
+            wxFprintf(Chapters, _T("{\\bkmkstart %s}{\\bkmkend %s}"), topicName, topicName);
           else
-            fprintf(Chapters, "%d. ", chapterNo);
+            wxFprintf(Chapters, _T("%d. "), chapterNo);
         }
         else if ( useWord )
         {
-              fprintf(Chapters, "{\\bkmkstart %s}{\\bkmkend %s}", topicName, topicName);
+              wxFprintf(Chapters, _T("{\\bkmkstart %s}{\\bkmkend %s}"), topicName, topicName);
         }
       }
       OutputCurrentSection();
-      TexOutput("\\par\\pard}\\par\n");
+      TexOutput(_T("\\par\\pard}\\par\n"));
       }
       issuedNewParagraph = 2;
     }
@@ -1253,7 +1249,7 @@ void RTFOnMacro(int macroId, int no_args, bool start)
       if (macroId != ltSECTIONSTAR && macroId != ltSECTIONHEADINGSTAR)
         sectionNo ++;
 
-      char *topicName = FindTopicName(GetNextChunk());
+      wxChar *topicName = FindTopicName(GetNextChunk());
       SetCurrentSectionName(topicName);
       NotifyParentHasChildren(1);
       if (winHelpContents && winHelp && !InPopups())
@@ -1269,20 +1265,20 @@ void RTFOnMacro(int macroId, int no_args, bool start)
         // Newline for a new section if this is an article
         if ((DocumentStyle == LATEX_ARTICLE) &&
             ((macroId == ltSECTION) || (macroId == ltSECTIONSTAR) || (macroId == ltSECTIONHEADINGSTAR)))
-          fprintf(Sections, "\\page\n");
+          wxFprintf(Sections, _T("\\page\n"));
 
         if (!InPopups())
-          fprintf(jumpFrom, "\n{\\uldb ");
+          wxFprintf(jumpFrom, _T("\n{\\uldb "));
       }
       else
       {
         if (DocumentStyle == LATEX_ARTICLE)
         {
-          TexOutput("\\sect\\pgncont\n");
+          TexOutput(_T("\\sect\\pgncont\n"));
           // If a non-custom page style, we generate the header now.
-          if (PageStyle && (strcmp(PageStyle, "plain") == 0 ||
-                            strcmp(PageStyle, "empty") == 0 ||
-                            strcmp(PageStyle, "headings") == 0))
+          if (PageStyle && (wxStrcmp(PageStyle, _T("plain")) == 0 ||
+                            wxStrcmp(PageStyle, _T("empty")) == 0 ||
+                            wxStrcmp(PageStyle, _T("headings")) == 0))
           {
             OutputRTFHeaderCommands();
             OutputRTFFooterCommands();
@@ -1295,9 +1291,9 @@ void RTFOnMacro(int macroId, int no_args, bool start)
           if (!InPopups())
           {
             if (DocumentStyle == LATEX_REPORT)
-              fprintf(Contents, "\n\\pard{\\tab %d.%d\\tab ", chapterNo, sectionNo);
+              wxFprintf(Contents, _T("\n\\pard{\\tab %d.%d\\tab "), chapterNo, sectionNo);
             else
-              fprintf(Contents, "\\par\n\\pard{\\b %d\\tab ", sectionNo);
+              wxFprintf(Contents, _T("\\par\n\\pard{\\b %d\\tab "), sectionNo);
           }
         }
         else if (macroId == ltSECTIONHEADING)
@@ -1305,9 +1301,9 @@ void RTFOnMacro(int macroId, int no_args, bool start)
           if (!InPopups())
           {
             if (DocumentStyle == LATEX_REPORT)
-              fprintf(Contents, "\n\\pard{\\tab "); //, chapterNo, sectionNo);
+              wxFprintf(Contents, _T("\n\\pard{\\tab ")); //, chapterNo, sectionNo);
             else
-              fprintf(Contents, "\\par\n\\pard{\\b "); //, sectionNo);
+              wxFprintf(Contents, _T("\\par\n\\pard{\\b ")); //, sectionNo);
           }
         }
         else SetCurrentOutput(NULL);
@@ -1316,12 +1312,12 @@ void RTFOnMacro(int macroId, int no_args, bool start)
       if (startedSections)
       {
         if (winHelp)
-          fprintf(Sections, "\\page\n");
+          wxFprintf(Sections, _T("\\page\n"));
       }
       startedSections = TRUE;
 
       if (winHelp)
-        fprintf(Sections, "\n${\\footnote ");
+        wxFprintf(Sections, _T("\n${\\footnote "));
 
       // Output heading to contents page
       if (!InPopups())
@@ -1330,34 +1326,34 @@ void RTFOnMacro(int macroId, int no_args, bool start)
       if (winHelp)
       {
         if (!InPopups())
-          fprintf(jumpFrom, "}{\\v %s}\\par\\pard\n", topicName);
+          wxFprintf(jumpFrom, _T("}{\\v %s}\\par\\pard\n"), topicName);
       }
       else if ((macroId != ltSECTIONSTAR) && (macroId != ltGLOSS))
       {
         if (DocumentStyle == LATEX_REPORT)
-          fprintf(Contents, "}\\par\\pard\n");
+          wxFprintf(Contents, _T("}\\par\\pard\n"));
         else
-          fprintf(Contents, "}\\par\\par\\pard\n");
+          wxFprintf(Contents, _T("}\\par\\par\\pard\n"));
       }
         
       SetCurrentOutput(winHelp ? Sections : Chapters);
 
       if (winHelp)
       {
-        fprintf(Sections, "}\n#{\\footnote %s}\n", topicName);
-        fprintf(Sections, "+{\\footnote %s}\n", GetBrowseString());
+        wxFprintf(Sections, _T("}\n#{\\footnote %s}\n"), topicName);
+        wxFprintf(Sections, _T("+{\\footnote %s}\n"), GetBrowseString());
         OutputSectionKeyword(Sections);
         GenerateKeywordsForTopic(topicName);
         if (useUpButton)
         {
           if (DocumentStyle == LATEX_ARTICLE)
           {
-            fprintf(Sections, "!{\\footnote EnableButton(\"Up\");ChangeButtonBinding(\"Up\", \"JumpId(`%s.hlp', `%s')\")}\n",
-               wxFileNameFromPath(FileRoot), "Contents");
+            wxFprintf(Sections, _T("!{\\footnote EnableButton(\"Up\");ChangeButtonBinding(\"Up\", \"JumpId(`%s.hlp', `%s')\")}\n"),
+               wxFileNameFromPath(FileRoot), _T("Contents"));
           }
           else if (CurrentChapterName)
           {
-            fprintf(Sections, "!{\\footnote EnableButton(\"Up\");ChangeButtonBinding(\"Up\", \"JumpId(`%s.hlp', `%s')\")}\n",
+            wxFprintf(Sections, _T("!{\\footnote EnableButton(\"Up\");ChangeButtonBinding(\"Up\", \"JumpId(`%s.hlp', `%s')\")}\n"),
                wxFileNameFromPath(FileRoot), CurrentChapterName);
           }
         }
@@ -1365,24 +1361,24 @@ void RTFOnMacro(int macroId, int no_args, bool start)
 
       if (!InPopups())
       {
-      char *styleCommand = "";
+      wxChar *styleCommand = _T("");
       if (!winHelp && useHeadingStyles && (macroId != ltSECTIONSTAR))
       {
         if (DocumentStyle == LATEX_ARTICLE)
-          styleCommand = "\\s1";
+          styleCommand = _T("\\s1");
         else
-          styleCommand = "\\s2";
+          styleCommand = _T("\\s2");
       }
-      char *keep = "";
+      wxChar *keep = _T("");
       if (winHelp && (macroId != ltGLOSS) && !InPopups())
-        keep = "\\keepn\\sa140\\sb140";
+        keep = _T("\\keepn\\sa140\\sb140");
         
-      fprintf(winHelp ? Sections : Chapters, "\\pard{%s%s",
+      wxFprintf(winHelp ? Sections : Chapters, _T("\\pard{%s%s"),
          keep, styleCommand);
 
       WriteHeadingStyle((winHelp ? Sections : Chapters),
                         (DocumentStyle == LATEX_ARTICLE ? 1 : 2));
-      fprintf(winHelp ? Sections : Chapters, " ");
+      wxFprintf(winHelp ? Sections : Chapters, _T(" "));
 
       if (!winHelp)
       {
@@ -1391,29 +1387,29 @@ void RTFOnMacro(int macroId, int no_args, bool start)
           if (DocumentStyle == LATEX_REPORT)
           {
             if (useWord)
-//              fprintf(Chapters, "{\\bkmkstart %s}%d.%d{\\bkmkend %s}. ", topicName, chapterNo, sectionNo,
-              fprintf(Chapters, "{\\bkmkstart %s}{\\bkmkend %s}", topicName,
+//              wxFprintf(Chapters, _T("{\\bkmkstart %s}%d.%d{\\bkmkend %s}. "), topicName, chapterNo, sectionNo,
+              wxFprintf(Chapters, _T("{\\bkmkstart %s}{\\bkmkend %s}"), topicName,
                   topicName);
             else
-              fprintf(Chapters, "%d.%d. ", chapterNo, sectionNo);
+              wxFprintf(Chapters, _T("%d.%d. "), chapterNo, sectionNo);
           }
           else
           {
             if (useWord)
-//              fprintf(Chapters, "{\\bkmkstart %s}%d{\\bkmkend %s}. ", topicName, sectionNo,
-              fprintf(Chapters, "{\\bkmkstart %s}{\\bkmkend %s}", topicName,
+//              wxFprintf(Chapters, "{\\bkmkstart %s}%d{\\bkmkend %s}. ", topicName, sectionNo,
+              wxFprintf(Chapters, _T("{\\bkmkstart %s}{\\bkmkend %s}"), topicName,
                  topicName);
             else
-              fprintf(Chapters, "%d. ", sectionNo);
+              wxFprintf(Chapters, _T("%d. "), sectionNo);
           }
         }
         else if ( useWord )
         {
-              fprintf(Chapters, "{\\bkmkstart %s}{\\bkmkend %s}", topicName, topicName);
+              wxFprintf(Chapters, _T("{\\bkmkstart %s}{\\bkmkend %s}"), topicName, topicName);
         }
       }
       OutputCurrentSection();
-      TexOutput("\\par\\pard}\\par\n");
+      TexOutput(_T("\\par\\pard}\\par\n"));
       }
       issuedNewParagraph = 2;
     }
@@ -1428,7 +1424,7 @@ void RTFOnMacro(int macroId, int no_args, bool start)
     {
       if (winHelp && !Sections)
       {
-        OnError("You cannot have a subsection before a section!");
+        OnError(_T("You cannot have a subsection before a section!"));
       }
       else
       {
@@ -1437,7 +1433,7 @@ void RTFOnMacro(int macroId, int no_args, bool start)
       if (macroId != ltSUBSECTIONSTAR)
         subsectionNo ++;
 
-      char *topicName = FindTopicName(GetNextChunk());
+      wxChar *topicName = FindTopicName(GetNextChunk());
       SetCurrentSubsectionName(topicName);
       NotifyParentHasChildren(2);
       if (winHelpContents && winHelp && !InPopups())
@@ -1452,7 +1448,7 @@ void RTFOnMacro(int macroId, int no_args, bool start)
         SetCurrentOutputs(Sections, Subsections);
         SetCurrentOutputs(Sections, Subsections);
         if (!InPopups())
-          fprintf(Sections, "\n{\\uldb ");
+          wxFprintf(Sections, _T("\n{\\uldb "));
       }
       else
       {
@@ -1461,9 +1457,9 @@ void RTFOnMacro(int macroId, int no_args, bool start)
         {
           SetCurrentOutput(Contents);
           if (DocumentStyle == LATEX_REPORT)
-            fprintf(Contents, "\n\\pard\\tab\\tab %d.%d.%d\\tab ", chapterNo, sectionNo, subsectionNo);
+            wxFprintf(Contents, _T("\n\\pard\\tab\\tab %d.%d.%d\\tab "), chapterNo, sectionNo, subsectionNo);
           else
-            fprintf(Contents, "\n\\pard\\tab %d.%d\\tab ", sectionNo, subsectionNo);
+            wxFprintf(Contents, _T("\n\\pard\\tab %d.%d\\tab "), sectionNo, subsectionNo);
         } else SetCurrentOutput(NULL);
       }
       if (startedSections)
@@ -1471,15 +1467,15 @@ void RTFOnMacro(int macroId, int no_args, bool start)
         if (winHelp)
         {
           if (!InPopups())
-            fprintf(Subsections, "\\page\n");
+            wxFprintf(Subsections, _T("\\page\n"));
         }
         else
-          fprintf(Chapters, "\\par\n");
+          wxFprintf(Chapters, _T("\\par\n"));
       }
       startedSections = TRUE;
 
       if (winHelp)
-        fprintf(Subsections, "\n${\\footnote ");
+        wxFprintf(Subsections, _T("\n${\\footnote "));
 
       // Output to contents page
       if (!InPopups())
@@ -1488,53 +1484,53 @@ void RTFOnMacro(int macroId, int no_args, bool start)
       if (winHelp)
       {
         if (!InPopups())
-          fprintf(Sections, "}{\\v %s}\\par\\pard\n", topicName);
+          wxFprintf(Sections, _T("}{\\v %s}\\par\\pard\n"), topicName);
       }
       else if ((macroId != ltSUBSECTIONSTAR) && (macroId != ltMEMBERSECTION) &&
          (macroId != ltFUNCTIONSECTION))
-        fprintf(Contents, "\\par\\pard\n");
+        wxFprintf(Contents, _T("\\par\\pard\n"));
 
       SetCurrentOutput(winHelp ? Subsections : Chapters);
       if (winHelp)
       {
-        fprintf(Subsections, "}\n#{\\footnote %s}\n", topicName);
-        fprintf(Subsections, "+{\\footnote %s}\n", GetBrowseString());
+        wxFprintf(Subsections, _T("}\n#{\\footnote %s}\n"), topicName);
+        wxFprintf(Subsections, _T("+{\\footnote %s}\n"), GetBrowseString());
         OutputSectionKeyword(Subsections);
         GenerateKeywordsForTopic(topicName);
         if (useUpButton && CurrentSectionName)
         {
-          fprintf(Subsections, "!{\\footnote EnableButton(\"Up\");ChangeButtonBinding(\"Up\", \"JumpId(`%s.hlp', `%s')\")}\n",
+          wxFprintf(Subsections, _T("!{\\footnote EnableButton(\"Up\");ChangeButtonBinding(\"Up\", \"JumpId(`%s.hlp', `%s')\")}\n"),
              wxFileNameFromPath(FileRoot), CurrentSectionName);
         }
       }
       if (!winHelp && indexSubsections && useWord)
       {
         // Insert index entry for this subsection
-        TexOutput("{\\xe\\v {");
+        TexOutput(_T("{\\xe\\v {"));
         OutputCurrentSection();
-        TexOutput("}}");
+        TexOutput(_T("}}"));
       }
 
       if (!InPopups())
       {
-      char *styleCommand = "";
+      wxChar *styleCommand = _T("");
       if (!winHelp && useHeadingStyles && (macroId != ltSUBSECTIONSTAR))
       {
         if (DocumentStyle == LATEX_ARTICLE)
-          styleCommand = "\\s2";
+          styleCommand = _T("\\s2");
         else
-          styleCommand = "\\s3";
+          styleCommand = _T("\\s3");
       }
-      char *keep = "";
+      wxChar *keep = _T("");
       if (winHelp && !InPopups())
-        keep = "\\keepn\\sa140\\sb140";
+        keep = _T("\\keepn\\sa140\\sb140");
 
-      fprintf(winHelp ? Subsections : Chapters, "\\pard{%s%s",
+      wxFprintf(winHelp ? Subsections : Chapters, _T("\\pard{%s%s"),
          keep, styleCommand);
 
       WriteHeadingStyle((winHelp ? Subsections : Chapters),
                         (DocumentStyle == LATEX_ARTICLE ? 2 : 3));
-      fprintf(winHelp ? Subsections : Chapters, " ");
+      wxFprintf(winHelp ? Subsections : Chapters, _T(" "));
 
       if (!winHelp)
       {
@@ -1544,29 +1540,29 @@ void RTFOnMacro(int macroId, int no_args, bool start)
           if (DocumentStyle == LATEX_REPORT)
           {
             if (useWord)
-//              fprintf(Chapters, "{\\bkmkstart %s}%d.%d.%d{\\bkmkend %s}. ", topicName, chapterNo, sectionNo, subsectionNo,
-              fprintf(Chapters, "{\\bkmkstart %s}{\\bkmkend %s}", topicName,
+//              wxFprintf(Chapters, _T("{\\bkmkstart %s}%d.%d.%d{\\bkmkend %s}. "), topicName, chapterNo, sectionNo, subsectionNo,
+              wxFprintf(Chapters, _T("{\\bkmkstart %s}{\\bkmkend %s}"), topicName,
                        topicName);
             else
-              fprintf(Chapters, "%d.%d.%d. ", chapterNo, sectionNo, subsectionNo);
+              wxFprintf(Chapters, _T("%d.%d.%d. "), chapterNo, sectionNo, subsectionNo);
           }
           else
           {
             if (useWord)
-//              fprintf(Chapters, "{\\bkmkstart %s}%d.%d{\\bkmkend %s}. ", topicName, sectionNo, subsectionNo,
-              fprintf(Chapters, "{\\bkmkstart %s}{\\bkmkend %s}", topicName,
+//              wxFprintf(Chapters, _T("{\\bkmkstart %s}%d.%d{\\bkmkend %s}. "), topicName, sectionNo, subsectionNo,
+              wxFprintf(Chapters, _T("{\\bkmkstart %s}{\\bkmkend %s}"), topicName,
                        topicName);
             else
-              fprintf(Chapters, "%d.%d. ", sectionNo, subsectionNo);
+              wxFprintf(Chapters, _T("%d.%d. "), sectionNo, subsectionNo);
           }
         }
         else if ( useWord )
         {
-              fprintf(Chapters, "{\\bkmkstart %s}{\\bkmkend %s}", topicName, topicName);
+              wxFprintf(Chapters, _T("{\\bkmkstart %s}{\\bkmkend %s}"), topicName, topicName);
         }
       }
       OutputCurrentSection(); // Repeat section header
-      TexOutput("\\par\\pard}\\par\n");
+      TexOutput(_T("\\par\\pard}\\par\n"));
       }
       issuedNewParagraph = 2;
     }
@@ -1580,14 +1576,14 @@ void RTFOnMacro(int macroId, int no_args, bool start)
     {
       if (winHelp && !Subsections)
       {
-        OnError("You cannot have a subsubsection before a subsection!");
+        OnError(_T("You cannot have a subsubsection before a subsection!"));
       }
       else
       {
       if (macroId != ltSUBSUBSECTIONSTAR)
         subsubsectionNo ++;
 
-      char *topicName = FindTopicName(GetNextChunk());
+      wxChar *topicName = FindTopicName(GetNextChunk());
       SetCurrentTopic(topicName);
       NotifyParentHasChildren(3);
       if (winHelpContents && winHelp)
@@ -1600,7 +1596,7 @@ void RTFOnMacro(int macroId, int no_args, bool start)
       if (winHelp)
       {
         SetCurrentOutputs(Subsections, Subsubsections);
-        fprintf(Subsections, "\n{\\uldb ");
+        wxFprintf(Subsections, _T("\n{\\uldb "));
       }
       else
       {
@@ -1609,7 +1605,7 @@ void RTFOnMacro(int macroId, int no_args, bool start)
           if (DocumentStyle == LATEX_ARTICLE)
           {
             SetCurrentOutput(Contents);
-            fprintf(Contents, "\n\\tab\\tab %d.%d.%d\\tab ",
+            wxFprintf(Contents, _T("\n\\tab\\tab %d.%d.%d\\tab "),
                                sectionNo, subsectionNo, subsubsectionNo);
           }
           else
@@ -1622,63 +1618,63 @@ void RTFOnMacro(int macroId, int no_args, bool start)
       if (startedSections)
       {
         if (winHelp)
-          fprintf(Subsubsections, "\\page\n");
+          wxFprintf(Subsubsections, _T("\\page\n"));
         else
-          fprintf(Chapters, "\\par\n");
+          wxFprintf(Chapters, _T("\\par\n"));
       }
 
       startedSections = TRUE;
 
       if (winHelp)
-        fprintf(Subsubsections, "\n${\\footnote ");
+        wxFprintf(Subsubsections, _T("\n${\\footnote "));
 
       // Output header to contents page
       OutputCurrentSection();
 
       if (winHelp)
-        fprintf(Subsections, "}{\\v %s}\\par\\pard\n", topicName);
+        wxFprintf(Subsections, _T("}{\\v %s}\\par\\pard\n"), topicName);
       else if ((DocumentStyle == LATEX_ARTICLE) && (macroId != ltSUBSUBSECTIONSTAR))
-        fprintf(Contents, "\\par\\pard\n");
+        wxFprintf(Contents, _T("\\par\\pard\n"));
         
       SetCurrentOutput(winHelp ? Subsubsections : Chapters);
       if (winHelp)
       {
-        fprintf(Subsubsections, "}\n#{\\footnote %s}\n", topicName);
-        fprintf(Subsubsections, "+{\\footnote %s}\n", GetBrowseString());
+        wxFprintf(Subsubsections, _T("}\n#{\\footnote %s}\n"), topicName);
+        wxFprintf(Subsubsections, _T("+{\\footnote %s}\n"), GetBrowseString());
         OutputSectionKeyword(Subsubsections);
         GenerateKeywordsForTopic(topicName);
         if (useUpButton && CurrentSubsectionName)
         {
-          fprintf(Subsubsections, "!{\\footnote EnableButton(\"Up\");ChangeButtonBinding(\"Up\", \"JumpId(`%s.hlp', `%s')\")}\n",
+          wxFprintf(Subsubsections, _T("!{\\footnote EnableButton(\"Up\");ChangeButtonBinding(\"Up\", \"JumpId(`%s.hlp', `%s')\")}\n"),
              wxFileNameFromPath(FileRoot), CurrentSubsectionName);
         }
       }
       if (!winHelp && indexSubsections && useWord)
       {
         // Insert index entry for this subsubsection
-        TexOutput("{\\xe\\v {");
+        TexOutput(_T("{\\xe\\v {"));
         OutputCurrentSection();
-        TexOutput("}}");
+        TexOutput(_T("}}"));
       }
 
-      char *styleCommand = "";
+      wxChar *styleCommand = _T("");
       if (!winHelp && useHeadingStyles && (macroId != ltSUBSUBSECTIONSTAR))
       {
         if (DocumentStyle == LATEX_ARTICLE)
-          styleCommand = "\\s3";
+          styleCommand = _T("\\s3");
         else
-          styleCommand = "\\s4";
+          styleCommand = _T("\\s4");
       }
-      char *keep = "";
+      wxChar *keep = _T("");
       if (winHelp)
-        keep = "\\keepn\\sa140\\sb140";
+        keep = _T("\\keepn\\sa140\\sb140");
 
-      fprintf(winHelp ? Subsubsections : Chapters, "\\pard{%s%s",
+      wxFprintf(winHelp ? Subsubsections : Chapters, _T("\\pard{%s%s"),
          keep, styleCommand);
 
       WriteHeadingStyle((winHelp ? Subsubsections : Chapters),
                         (DocumentStyle == LATEX_ARTICLE ? 3 : 4));
-      fprintf(winHelp ? Subsubsections : Chapters, " ");
+      wxFprintf(winHelp ? Subsubsections : Chapters, _T(" "));
          
       if (!winHelp)
       {
@@ -1687,31 +1683,31 @@ void RTFOnMacro(int macroId, int no_args, bool start)
           if (DocumentStyle == LATEX_ARTICLE)
           {
             if (useWord)
-//              fprintf(Chapters, "{\\bkmkstart %s}%d.%d.%d{\\bkmkend %s}. ", topicName, sectionNo, subsectionNo, subsubsectionNo,
-              fprintf(Chapters, "{\\bkmkstart %s}{\\bkmkend %s}", topicName,
+//              wxFprintf(Chapters, _T("{\\bkmkstart %s}%d.%d.%d{\\bkmkend %s}. "), topicName, sectionNo, subsectionNo, subsubsectionNo,
+              wxFprintf(Chapters, _T("{\\bkmkstart %s}{\\bkmkend %s}"), topicName,
                      topicName);
             else
-              fprintf(Chapters, "%d.%d.%d. ", sectionNo, subsectionNo, subsubsectionNo);
+              wxFprintf(Chapters, _T("%d.%d.%d. "), sectionNo, subsectionNo, subsubsectionNo);
           }
           else
           {
             if (useWord)
-//              fprintf(Chapters, "{\\bkmkstart %s}%d.%d.%d.%d{\\bkmkend %s}. ", topicName, chapterNo, sectionNo, subsectionNo, subsubsectionNo,
-              fprintf(Chapters, "{\\bkmkstart %s}{\\bkmkend %s}", topicName,
+//              wxFprintf(Chapters, _T("{\\bkmkstart %s}%d.%d.%d.%d{\\bkmkend %s}. "), topicName, chapterNo, sectionNo, subsectionNo, subsubsectionNo,
+              wxFprintf(Chapters, _T("{\\bkmkstart %s}{\\bkmkend %s}"), topicName,
                       topicName);
             else
-              fprintf(Chapters, "%d.%d.%d.%d. ", chapterNo, sectionNo, subsectionNo, subsubsectionNo);
+              wxFprintf(Chapters, _T("%d.%d.%d.%d. "), chapterNo, sectionNo, subsectionNo, subsubsectionNo);
           }
         }
         else if ( useWord )
         {
-              fprintf(Chapters, "{\\bkmkstart %s}{\\bkmkend %s}", topicName, topicName);
+              wxFprintf(Chapters, _T("{\\bkmkstart %s}{\\bkmkend %s}"), topicName, topicName);
         }
       }
       OutputCurrentSection(); // Repeat section header
-      TexOutput("\\par\\pard}\\par\n");
+      TexOutput(_T("\\par\\pard}\\par\n"));
       issuedNewParagraph = 2;
-//      if (winHelp) TexOutput("\\pard");
+//      if (winHelp) TexOutput(_T("\\pard"));
     }
     }
     break;
@@ -1721,11 +1717,11 @@ void RTFOnMacro(int macroId, int no_args, bool start)
   {
     if (!start)
     {
-      char *topicName = FindTopicName(GetNextChunk());
+      wxChar *topicName = FindTopicName(GetNextChunk());
       SetCurrentTopic(topicName);
 
-      TexOutput("\\pard\\par");
-      char figBuf[200];
+      TexOutput(_T("\\pard\\par"));
+      wxChar figBuf[200];
 
       if (inFigure)
       {
@@ -1734,13 +1730,13 @@ void RTFOnMacro(int macroId, int no_args, bool start)
         if (winHelp || !useWord)
         {
           if (DocumentStyle != LATEX_ARTICLE)
-            sprintf(figBuf, "%s %d.%d: ", FigureNameString, chapterNo, figureNo);
+            wxSprintf(figBuf, _T("%s %d.%d: "), FigureNameString, chapterNo, figureNo);
           else
-            sprintf(figBuf, "%s %d: ", FigureNameString, figureNo);
+            wxSprintf(figBuf, _T("%s %d: "), FigureNameString, figureNo);
         }
         else
         {
-          sprintf(figBuf, "%s {\\field\\flddirty{\\*\\fldinst  SEQ Figure \\\\* ARABIC }{\\fldrslt {\\bkmkstart %s}??{\\bkmkend %s}}}: ",
+          wxSprintf(figBuf, _T("%s {\\field\\flddirty{\\*\\fldinst  SEQ Figure \\\\* ARABIC }{\\fldrslt {\\bkmkstart %s}??{\\bkmkend %s}}}: "),
                FigureNameString, topicName, topicName);
         }
       }
@@ -1751,13 +1747,13 @@ void RTFOnMacro(int macroId, int no_args, bool start)
         if (winHelp || !useWord)
         {
           if (DocumentStyle != LATEX_ARTICLE)
-            sprintf(figBuf, "%s %d.%d: ", TableNameString, chapterNo, tableNo);
+            wxSprintf(figBuf, _T("%s %d.%d: "), TableNameString, chapterNo, tableNo);
           else
-            sprintf(figBuf, "%s %d: ", TableNameString, tableNo);
+            wxSprintf(figBuf, _T("%s %d: "), TableNameString, tableNo);
         }
         else
         {
-          sprintf(figBuf, "%s {\\field\\flddirty{\\*\\fldinst  SEQ Table \\\\* ARABIC }{\\fldrslt {\\bkmkstart %s}??{\\bkmkend %s}}}: ",
+          wxSprintf(figBuf, _T("%s {\\field\\flddirty{\\*\\fldinst  SEQ Table \\\\* ARABIC }{\\fldrslt {\\bkmkstart %s}??{\\bkmkend %s}}}: "),
                TableNameString, topicName, topicName);
         }
       }
@@ -1768,14 +1764,14 @@ void RTFOnMacro(int macroId, int no_args, bool start)
             ((DocumentStyle != LATEX_ARTICLE) ? n : 0));
 
       if (winHelp)
-        TexOutput("\\qc{\\b ");
+        TexOutput(_T("\\qc{\\b "));
       else
-        TexOutput("\\ql{\\b ");
+        TexOutput(_T("\\ql{\\b "));
       TexOutput(figBuf);
 
       OutputCurrentSection();
 
-      TexOutput("}\\par\\pard\n");
+      TexOutput(_T("}\\par\\pard\n"));
       WriteEnvironmentStyles();
     }
     break;
@@ -1786,27 +1782,27 @@ void RTFOnMacro(int macroId, int no_args, bool start)
 //    SetCurrentOutput(winHelp ? Subsections : Chapters);
     if (start)
     {
-      TexOutput("{");
+      TexOutput(_T("{"));
     }
     else
     {
-      TexOutput("}\n");
+      TexOutput(_T("}\n"));
       if (winHelp)
       {
-        TexOutput("K{\\footnote {K} ");
+        TexOutput(_T("K{\\footnote {K} "));
         suppressNameDecoration = TRUE;
         TraverseChildrenFromChunk(currentMember);
         suppressNameDecoration = FALSE;
-        TexOutput("}\n");
+        TexOutput(_T("}\n"));
       }
       if (!winHelp && useWord)
       {
         // Insert index entry for this function
-        TexOutput("{\\xe\\v {");
+        TexOutput(_T("{\\xe\\v {"));
         suppressNameDecoration = TRUE;  // Necessary so don't print "(\\bf" etc.
         TraverseChildrenFromChunk(currentMember);
         suppressNameDecoration = FALSE;
-        TexOutput("}}");
+        TexOutput(_T("}}"));
       }
     }
     break;
@@ -1816,27 +1812,27 @@ void RTFOnMacro(int macroId, int no_args, bool start)
 //    SetCurrentOutput(winHelp ? Subsections : Chapters);
     if (start)
     {
-      TexOutput("{");
+      TexOutput(_T("{"));
     }
     else
     {
-      TexOutput("}\n");
+      TexOutput(_T("}\n"));
       if (winHelp)
       {
-        TexOutput("K{\\footnote {K} ");
+        TexOutput(_T("K{\\footnote {K} "));
         suppressNameDecoration = TRUE;  // Necessary so don't print "(\\bf" etc.
         TraverseChildrenFromChunk(currentMember);
         suppressNameDecoration = FALSE;
-        TexOutput("}\n");
+        TexOutput(_T("}\n"));
       }
       if (!winHelp && useWord)
       {
         // Insert index entry for this function
-        TexOutput("{\\xe\\v {");
+        TexOutput(_T("{\\xe\\v {"));
         suppressNameDecoration = TRUE;  // Necessary so don't print "(\\bf" etc.
         TraverseChildrenFromChunk(currentMember);
         suppressNameDecoration = FALSE;
-        TexOutput("}}");
+        TexOutput(_T("}}"));
       }
     }
     break;
@@ -1846,25 +1842,25 @@ void RTFOnMacro(int macroId, int no_args, bool start)
 //    SetCurrentOutput(winHelp ? Subsections : Chapters);
     if (start)
     {
-      TexOutput("{\\b ");
+      TexOutput(_T("{\\b "));
     }
     else
     {
-      TexOutput("}\n");
+      TexOutput(_T("}\n"));
       if (winHelp)
       {
-        TexOutput("K{\\footnote {K} ");
+        TexOutput(_T("K{\\footnote {K} "));
         TraverseChildrenFromChunk(currentMember);
-        TexOutput("}\n");
+        TexOutput(_T("}\n"));
       }
       if (!winHelp && useWord)
       {
         // Insert index entry for this function
-        TexOutput("{\\xe\\v {");
+        TexOutput(_T("{\\xe\\v {"));
         suppressNameDecoration = TRUE;  // Necessary so don't print "(\\bf" etc.
         TraverseChildrenFromChunk(currentMember);
         suppressNameDecoration = FALSE;
-        TexOutput("}}");
+        TexOutput(_T("}}"));
       }
     }
     break;
@@ -1882,19 +1878,19 @@ void RTFOnMacro(int macroId, int no_args, bool start)
       if (!winHelp && useWord)
       {
         // Insert Word for Windows table of contents
-        TexOutput("\\par\\pard\\pgnrestart\\sect\\titlepg");
+        TexOutput(_T("\\par\\pard\\pgnrestart\\sect\\titlepg"));
 
        // In linear RTF, same as chapter headings.
-        sprintf(buf, "{\\b\\fs%d %s}\\par\\par\\pard\n\n", chapterFont*2, ContentsNameString);
+        wxSprintf(buf, _T("{\\b\\fs%d %s}\\par\\par\\pard\n\n"), chapterFont*2, ContentsNameString);
 
         TexOutput(buf);
-        sprintf(buf, "{\\field{\\*\\fldinst TOC \\\\o \"1-%d\" }{\\fldrslt PRESS F9 TO REFORMAT CONTENTS}}\n", contentsDepth);
+        wxSprintf(buf, _T("{\\field{\\*\\fldinst TOC \\\\o \"1-%d\" }{\\fldrslt PRESS F9 TO REFORMAT CONTENTS}}\n"), contentsDepth);
         TexOutput(buf);
-//        TexOutput("\\sect\\sectd");
+//        TexOutput(_T("\\sect\\sectd"));
       }
       else
       {
-        FILE *fd = fopen(ContentsName, "r");
+        FILE *fd = wxFopen(ContentsName, _T("r"));
         if (fd)
         {
           int ch = getc(fd);
@@ -1907,8 +1903,8 @@ void RTFOnMacro(int macroId, int no_args, bool start)
         }
         else
         {
-          TexOutput("{\\i RUN TEX2RTF AGAIN FOR CONTENTS PAGE}\\par\n");
-          OnInform("Run Tex2RTF again to include contents page.");
+          TexOutput(_T("{\\i RUN TEX2RTF AGAIN FOR CONTENTS PAGE}\\par\n"));
+          OnInform(_T("Run Tex2RTF again to include contents page."));
         }
       }
     }
@@ -1917,19 +1913,19 @@ void RTFOnMacro(int macroId, int no_args, bool start)
   case ltVOID:
   {
 //    if (start)
-//      TexOutput("{\\b void}");
+//      TexOutput(_T("{\\b void}"));
     break;
   }
   case ltHARDY:
   {
     if (start)
-      TexOutput("{\\scaps HARDY}");
+      TexOutput(_T("{\\scaps HARDY}"));
     break;
   }
   case ltWXCLIPS:
   {
     if (start)
-      TexOutput("wxCLIPS");
+      TexOutput(_T("wxCLIPS"));
     break;
   }
   case ltSPECIALAMPERSAND:
@@ -1937,9 +1933,9 @@ void RTFOnMacro(int macroId, int no_args, bool start)
     if (start)
     {
       if (inTabular)
-        TexOutput("\\cell ");
+        TexOutput(_T("\\cell "));
       else
-        TexOutput("&");
+        TexOutput(_T("&"));
     }
     break;
   }
@@ -1948,9 +1944,9 @@ void RTFOnMacro(int macroId, int no_args, bool start)
     if (start)
     {
       if (inVerbatim)
-        TexOutput("~");
+        TexOutput(_T("~"));
       else
-        TexOutput(" ");
+        TexOutput(_T(" "));
     }
     break;
   }
@@ -1960,38 +1956,38 @@ void RTFOnMacro(int macroId, int no_args, bool start)
     {
       if (inTabular)
       {
-//        TexOutput("\\cell\\row\\trowd\\trgaph108\\trleft-108\n");
-        TexOutput("\\cell\\row\\trowd\\trgaph108\n");
+//        TexOutput(_T("\\cell\\row\\trowd\\trgaph108\\trleft-108\n"));
+        TexOutput(_T("\\cell\\row\\trowd\\trgaph108\n"));
         int currentWidth = 0;
         for (int i = 0; i < noColumns; i++)
         {
           currentWidth += TableData[i].width;
           if (TableData[i].rightBorder)
-            TexOutput("\\clbrdrr\\brdrs\\brdrw15");
+            TexOutput(_T("\\clbrdrr\\brdrs\\brdrw15"));
 
           if (TableData[i].leftBorder)
-            TexOutput("\\clbrdrl\\brdrs\\brdrw15");
+            TexOutput(_T("\\clbrdrl\\brdrs\\brdrw15"));
           
-          sprintf(buf, "\\cellx%d", currentWidth);
+          wxSprintf(buf, _T("\\cellx%d"), currentWidth);
           TexOutput(buf);
         }
-        TexOutput("\\pard\\intbl\n");
+        TexOutput(_T("\\pard\\intbl\n"));
       }
       else
-        TexOutput("\\line\n");
+        TexOutput(_T("\\line\n"));
     }
     break;
   }
   case ltRANGLEBRA:
   {
     if (start)
-      TexOutput("\tab ");
+      TexOutput(_T("\tab "));
     break;
   }
   case ltRTFSP:  // Explicit space, RTF only
   {
     if (start)
-      TexOutput(" ");
+      TexOutput(_T(" "));
    break;
   }
   case ltITEMIZE:
@@ -2002,7 +1998,7 @@ void RTFOnMacro(int macroId, int no_args, bool start)
     {
       if (indentLevel > 0)
       {
-        TexOutput("\\par\\par\n");
+        TexOutput(_T("\\par\\par\n"));
         issuedNewParagraph = 2;
       }
       else
@@ -2011,14 +2007,14 @@ void RTFOnMacro(int macroId, int no_args, bool start)
         // just done so
         if (!issuedNewParagraph)
         {
-          TexOutput("\\par\\pard");
+          TexOutput(_T("\\par\\pard"));
           WriteEnvironmentStyles();
           issuedNewParagraph = 1;
         }
         else issuedNewParagraph = 0;
       }
       indentLevel ++;
-      TexOutput("\\fi0\n");
+      TexOutput(_T("\\fi0\n"));
       int listType;
       if (macroId == ltENUMERATE)
         listType = LATEX_ENUMERATE;
@@ -2038,7 +2034,7 @@ void RTFOnMacro(int macroId, int no_args, bool start)
       ItemizeStruc *struc = new ItemizeStruc(listType, indentSize2, indentSize1);
       itemizeStack.Insert(struc);
       
-      sprintf(buf, "\\tx%d\\tx%d\\li%d", indentSize1, indentSize2, indentSize2);
+      wxSprintf(buf, _T("\\tx%d\\tx%d\\li%d"), indentSize1, indentSize2, indentSize2);
       PushEnvironmentStyle(buf);
     }
     else
@@ -2079,8 +2075,8 @@ void RTFOnMacro(int macroId, int no_args, bool start)
       ItemizeStruc *struc = new ItemizeStruc(LATEX_TWOCOL, indentSize);
       itemizeStack.Insert(struc);
       
-//      sprintf(buf, "\\tx%d\\li%d\\ri%d", indentSize, indentSize, TwoColWidthA+TwoColWidthB+oldIndent);
-      sprintf(buf, "\\tx%d\\li%d", indentSize, indentSize);
+//      wxSprintf(buf, _T("\\tx%d\\li%d\\ri%d"), indentSize, indentSize, TwoColWidthA+TwoColWidthB+oldIndent);
+      wxSprintf(buf, _T("\\tx%d\\li%d"), indentSize, indentSize);
       PushEnvironmentStyle(buf);
     }
     else
@@ -2095,7 +2091,7 @@ void RTFOnMacro(int macroId, int no_args, bool start)
       }
 /*
       // JACS June 1997
-      TexOutput("\\pard\n");
+      TexOutput(_T("\\pard\n"));
       WriteEnvironmentStyles();
 */
 /* why do we need this? */
@@ -2117,22 +2113,22 @@ void RTFOnMacro(int macroId, int no_args, bool start)
       if (!start)
       {
         struc->currentItem += 1;
-        char indentBuf[60];
+        wxChar indentBuf[60];
 
         int indentSize1 = struc->labelIndentation;
         int indentSize2 = struc->indentation;
 
-        TexOutput("\n");
+        TexOutput(_T("\n"));
         if (struc->currentItem > 1)
         {
           if (currentItemSep > 0)
-            TexOutput("\\par");
+            TexOutput(_T("\\par"));
 
-          TexOutput("\\par");
+          TexOutput(_T("\\par"));
 //          WriteEnvironmentStyles();
         }
 
-        sprintf(buf, "\\tx%d\\tx%d\\li%d\\fi-%d\n", indentSize1, indentSize2,
+        wxSprintf(buf, _T("\\tx%d\\tx%d\\li%d\\fi-%d\n"), indentSize1, indentSize2,
                   indentSize2, 20*itemIndentTab);
         TexOutput(buf);
 
@@ -2142,14 +2138,14 @@ void RTFOnMacro(int macroId, int no_args, bool start)
           {
             if (descriptionItemArg)
             {
-              TexOutput("\\tab{ ");
+              TexOutput(_T("\\tab{ "));
               TraverseChildrenFromChunk(descriptionItemArg);
-              TexOutput("}\\tab");
+              TexOutput(_T("}\\tab"));
               descriptionItemArg = NULL;
            }
            else
            {
-              sprintf(indentBuf, "\\tab{\\b %d.}\\tab", struc->currentItem);
+              wxSprintf(indentBuf, _T("\\tab{\\b %d.}\\tab"), struc->currentItem);
               TexOutput(indentBuf);
             }
             break;
@@ -2158,9 +2154,9 @@ void RTFOnMacro(int macroId, int no_args, bool start)
           {
             if (descriptionItemArg)
             {
-              TexOutput("\\tab{ ");
+              TexOutput(_T("\\tab{ "));
               TraverseChildrenFromChunk(descriptionItemArg);
-              TexOutput("}\\tab");
+              TexOutput(_T("}\\tab"));
               descriptionItemArg = NULL;
            }
            else
@@ -2168,14 +2164,14 @@ void RTFOnMacro(int macroId, int no_args, bool start)
               if (bulletFile && winHelp)
               {
                 if (winHelpVersion > 3) // Transparent bitmap
-                  sprintf(indentBuf, "\\tab\\{bmct %s\\}\\tab", bulletFile);
+                  wxSprintf(indentBuf, _T("\\tab\\{bmct %s\\}\\tab"), bulletFile);
                 else
-                  sprintf(indentBuf, "\\tab\\{bmc %s\\}\\tab", bulletFile);
+                  wxSprintf(indentBuf, _T("\\tab\\{bmc %s\\}\\tab"), bulletFile);
               }
               else if (winHelp)
-                sprintf(indentBuf, "\\tab{\\b o}\\tab");
+                wxSprintf(indentBuf, _T("\\tab{\\b o}\\tab"));
               else
-                sprintf(indentBuf, "\\tab{\\f1\\'b7}\\tab");
+                wxSprintf(indentBuf, _T("\\tab{\\f1\\'b7}\\tab"));
               TexOutput(indentBuf);
             }
             break;
@@ -2185,9 +2181,9 @@ void RTFOnMacro(int macroId, int no_args, bool start)
           {
             if (descriptionItemArg)
             {
-              TexOutput("\\tab{\\b ");
+              TexOutput(_T("\\tab{\\b "));
               TraverseChildrenFromChunk(descriptionItemArg);
-              TexOutput("}  ");
+              TexOutput(_T("}  "));
               descriptionItemArg = NULL;
             }
             break;
@@ -2215,22 +2211,22 @@ void RTFOnMacro(int macroId, int no_args, bool start)
         if (node2)
           oldIndent = ((ItemizeStruc *)node2->GetData())->indentation;
 
-        TexOutput("\n");
+        TexOutput(_T("\n"));
         if (struc->currentItem > 1)
         {
           if (currentItemSep > 0)
-            TexOutput("\\par");
+            TexOutput(_T("\\par"));
 
 //          WriteEnvironmentStyles();
         }
 
-//        sprintf(buf, "\\tx%d\\li%d\\fi-%d\\ri%d\n", TwoColWidthA,
+//        wxSprintf(buf, _T("\\tx%d\\li%d\\fi-%d\\ri%d\n"), TwoColWidthA,
 //             TwoColWidthA, TwoColWidthA, TwoColWidthA+TwoColWidthB+oldIndent);
 /*
-        sprintf(buf, "\\tx%d\\li%d\\fi-%d\n", TwoColWidthA,
+        wxSprintf(buf, _T("\\tx%d\\li%d\\fi-%d\n"), TwoColWidthA,
              TwoColWidthA, TwoColWidthA);
 */
-        sprintf(buf, "\\tx%d\\li%d\\fi-%d\n", TwoColWidthA + oldIndent,
+        wxSprintf(buf, _T("\\tx%d\\li%d\\fi-%d\n"), TwoColWidthA + oldIndent,
              TwoColWidthA + oldIndent, TwoColWidthA);
         TexOutput(buf);
       }
@@ -2246,21 +2242,21 @@ void RTFOnMacro(int macroId, int no_args, bool start)
       {
         if (!issuedNewParagraph)
         {
-          TexOutput("\\par\\pard");
+          TexOutput(_T("\\par\\pard"));
           WriteEnvironmentStyles();
           issuedNewParagraph = 1;
         }
         else issuedNewParagraph = 0;
       }
-      sprintf(buf, "{\\f3\\fs20 ");
+      wxSprintf(buf, _T("{\\f3\\fs20 "));
       TexOutput(buf);
     }
     else
     {
-      TexOutput("}");
+      TexOutput(_T("}"));
       if (macroId == ltVERBATIM)
       {
-        TexOutput("\\pard\n");
+        TexOutput(_T("\\pard\n"));
 //        issuedNewParagraph = 1;
         WriteEnvironmentStyles();
       }
@@ -2272,13 +2268,13 @@ void RTFOnMacro(int macroId, int no_args, bool start)
   {
     if (start)
     {
-      TexOutput("\\fi0\\qc ");
+      TexOutput(_T("\\fi0\\qc "));
       forbidParindent ++;
-      PushEnvironmentStyle("\\qc");
+      PushEnvironmentStyle(_T("\\qc"));
     }
     else
     {
-      TexOutput("\\par\\pard\n");
+      TexOutput(_T("\\par\\pard\n"));
       issuedNewParagraph = 1;
       forbidParindent --;
       PopEnvironmentStyle();
@@ -2290,13 +2286,13 @@ void RTFOnMacro(int macroId, int no_args, bool start)
   {
     if (start)
     {
-      TexOutput("\\fi0\\ql ");
+      TexOutput(_T("\\fi0\\ql "));
       forbidParindent ++;
-      PushEnvironmentStyle("\\ql");
+      PushEnvironmentStyle(_T("\\ql"));
     }
     else
     {
-      TexOutput("\\par\\pard\n");
+      TexOutput(_T("\\par\\pard\n"));
       issuedNewParagraph = 1;
       forbidParindent --;
       PopEnvironmentStyle();
@@ -2308,13 +2304,13 @@ void RTFOnMacro(int macroId, int no_args, bool start)
   {
     if (start)
     {
-      TexOutput("\\fi0\\qr ");
+      TexOutput(_T("\\fi0\\qr "));
       forbidParindent ++;
-      PushEnvironmentStyle("\\qr");
+      PushEnvironmentStyle(_T("\\qr"));
     }
     else
     {
-      TexOutput("\\par\\pard\n");
+      TexOutput(_T("\\par\\pard\n"));
       issuedNewParagraph = 1;
       forbidParindent --;
       PopEnvironmentStyle();
@@ -2327,10 +2323,10 @@ void RTFOnMacro(int macroId, int no_args, bool start)
   {
     if (start)
     {
-      sprintf(buf, "{\\fs%d\n", smallFont*2);
+      wxSprintf(buf, _T("{\\fs%d\n"), smallFont*2);
       TexOutput(buf);
     }
-    else TexOutput("}\n");
+    else TexOutput(_T("}\n"));
     break;
   }
   case ltTINY:
@@ -2338,80 +2334,80 @@ void RTFOnMacro(int macroId, int no_args, bool start)
   {
     if (start)
     {
-      sprintf(buf, "{\\fs%d\n", tinyFont*2);
+      wxSprintf(buf, _T("{\\fs%d\n"), tinyFont*2);
       TexOutput(buf);
     }
-    else TexOutput("}\n");
+    else TexOutput(_T("}\n"));
     break;
   }
   case ltNORMALSIZE:
   {
     if (start)
     {
-      sprintf(buf, "{\\fs%d\n", normalFont*2);
+      wxSprintf(buf, _T("{\\fs%d\n"), normalFont*2);
       TexOutput(buf);
     }
-    else TexOutput("}\n");
+    else TexOutput(_T("}\n"));
     break;
   }
   case ltlarge:
   {
     if (start)
     {
-      sprintf(buf, "{\\fs%d\n", largeFont1*2);
+      wxSprintf(buf, _T("{\\fs%d\n"), largeFont1*2);
       TexOutput(buf);
     }
-    else TexOutput("}\n");
+    else TexOutput(_T("}\n"));
     break;
   }
   case ltLarge:
   {
     if (start)
     {
-      sprintf(buf, "{\\fs%d\n", LargeFont2*2);
+      wxSprintf(buf, _T("{\\fs%d\n"), LargeFont2*2);
       TexOutput(buf);
     }
-    else TexOutput("}\n");
+    else TexOutput(_T("}\n"));
     break;
   }
   case ltLARGE:
   {
     if (start)
     {
-      sprintf(buf, "{\\fs%d\n", LARGEFont3*2);
+      wxSprintf(buf, _T("{\\fs%d\n"), LARGEFont3*2);
       TexOutput(buf);
     }
-    else TexOutput("}\n");
+    else TexOutput(_T("}\n"));
     break;
   }
   case lthuge:
   {
     if (start)
     {
-      sprintf(buf, "{\\fs%d\n", hugeFont1*2);
+      wxSprintf(buf, _T("{\\fs%d\n"), hugeFont1*2);
       TexOutput(buf);
     }
-    else TexOutput("}\n");
+    else TexOutput(_T("}\n"));
     break;
   }
   case ltHuge:
   {
     if (start)
     {
-      sprintf(buf, "{\\fs%d\n", HugeFont2*2);
+      wxSprintf(buf, _T("{\\fs%d\n"), HugeFont2*2);
       TexOutput(buf);
     }
-    else TexOutput("}\n");
+    else TexOutput(_T("}\n"));
     break;
   }
   case ltHUGE:
   {
     if (start)
     {
-      sprintf(buf, "{\\fs%d\n", HUGEFont3*2);
+      wxSprintf(buf, _T("{\\fs%d\n"), HUGEFont3*2);
       TexOutput(buf);
     }
-    else TexOutput("}\n");
+    else TexOutput(_T("}\n"));
     break;
   }
   case ltTEXTBF:
@@ -2420,18 +2416,18 @@ void RTFOnMacro(int macroId, int no_args, bool start)
   {
     if (start)
     {
-      TexOutput("{\\b ");
+      TexOutput(_T("{\\b "));
     }
-    else TexOutput("}");
+    else TexOutput(_T("}"));
     break;
   }
   case ltUNDERLINE:
   {
     if (start)
     {
-      TexOutput("{\\ul ");
+      TexOutput(_T("{\\ul "));
     }
-    else TexOutput("}");
+    else TexOutput(_T("}"));
     break;
   }
   case ltTEXTIT:
@@ -2442,9 +2438,9 @@ void RTFOnMacro(int macroId, int no_args, bool start)
   {
     if (start)
     {
-      TexOutput("{\\i ");
+      TexOutput(_T("{\\i "));
     }
-    else TexOutput("}");
+    else TexOutput(_T("}"));
     break;
   }
   // Roman font: do nothing. Should really switch between
@@ -2456,9 +2452,9 @@ void RTFOnMacro(int macroId, int no_args, bool start)
 /*    
     if (start)
     {
-      TexOutput("{\\plain ");
+      TexOutput(_T("{\\plain "));
     }
-    else TexOutput("}");
+    else TexOutput(_T("}"));
  */
     break;
   }
@@ -2467,9 +2463,9 @@ void RTFOnMacro(int macroId, int no_args, bool start)
   {
     if (start)
     {
-      TexOutput("{\\b0 ");
+      TexOutput(_T("{\\b0 "));
     }
-    else TexOutput("}");
+    else TexOutput(_T("}"));
     break;
   }
   // Upright (un-italic or slant)
@@ -2477,9 +2473,9 @@ void RTFOnMacro(int macroId, int no_args, bool start)
   {
     if (start)
     {
-      TexOutput("{\\i0 ");
+      TexOutput(_T("{\\i0 "));
     }
-    else TexOutput("}");
+    else TexOutput(_T("}"));
     break;
   }
   case ltTEXTSC:
@@ -2488,9 +2484,9 @@ void RTFOnMacro(int macroId, int no_args, bool start)
   {
     if (start)
     {
-      TexOutput("{\\scaps ");
+      TexOutput(_T("{\\scaps "));
     }
-    else TexOutput("}");
+    else TexOutput(_T("}"));
     break;
   }
   case ltTEXTTT:
@@ -2499,27 +2495,27 @@ void RTFOnMacro(int macroId, int no_args, bool start)
   {
     if (start)
     {
-      TexOutput("{\\f3 ");
+      TexOutput(_T("{\\f3 "));
     }
-    else TexOutput("}");
+    else TexOutput(_T("}"));
     break;
   }
   case ltLBRACE:
   {
     if (start)
-      TexOutput("\\{");
+      TexOutput(_T("\\{"));
     break;
   }
   case ltRBRACE:
   {
     if (start)
-      TexOutput("\\}");
+      TexOutput(_T("\\}"));
     break;
   }
   case ltBACKSLASH:
   {
     if (start)
-      TexOutput("\\\\");
+      TexOutput(_T("\\\\"));
     break;
   }
   case ltPAR:
@@ -2528,13 +2524,13 @@ void RTFOnMacro(int macroId, int no_args, bool start)
     {
                if ( issuedNewParagraph == 0 )
                {
-          TexOutput("\\par\\pard");
+          TexOutput(_T("\\par\\pard"));
           issuedNewParagraph ++;
 
           // Extra par if parskip is more than zero (usually looks best.)
           if (!inTabular && (ParSkip > 0))
                  {
-            TexOutput("\\par");
+            TexOutput(_T("\\par"));
             issuedNewParagraph ++;
                  }
           WriteEnvironmentStyles();
@@ -2549,7 +2545,7 @@ void RTFOnMacro(int macroId, int no_args, bool start)
           // Extra par if parskip is more than zero (usually looks best.)
           if (!inTabular && (ParSkip > 0))
                  {
-            TexOutput("\\par");
+            TexOutput(_T("\\par"));
             issuedNewParagraph ++;
                  }
           WriteEnvironmentStyles();
@@ -2557,16 +2553,16 @@ void RTFOnMacro(int macroId, int no_args, bool start)
 /*
       if (!issuedNewParagraph || (issuedNewParagraph > 1))
       {
-        TexOutput("\\par\\pard");
+        TexOutput(_T("\\par\\pard"));
 
         // Extra par if parskip is more than zero (usually looks best.)
         if (!inTabular && (ParSkip > 0))
-          TexOutput("\\par");
+          TexOutput(_T("\\par"));
         WriteEnvironmentStyles();
       }
 */
 
-      TexOutput("\n");
+      TexOutput(_T("\n"));
     }
     break;
   }
@@ -2575,46 +2571,46 @@ void RTFOnMacro(int macroId, int no_args, bool start)
     // In Windows Help, no newpages until we've started some chapters or sections
     if (!(winHelp && !startedSections))
       if (start)
-        TexOutput("\\page\n");
+        TexOutput(_T("\\page\n"));
     break;
   }
   case ltMAKETITLE:
   {
     if (start && DocumentTitle)
     {
-      TexOutput("\\par\\pard");
+      TexOutput(_T("\\par\\pard"));
       if (!winHelp)
-        TexOutput("\\par");
-      sprintf(buf, "\\qc{\\fs%d\\b ", titleFont*2);
+        TexOutput(_T("\\par"));
+      wxSprintf(buf, _T("\\qc{\\fs%d\\b "), titleFont*2);
       TexOutput(buf);
       TraverseChildrenFromChunk(DocumentTitle);
-      TexOutput("}\\par\\pard\n");
+      TexOutput(_T("}\\par\\pard\n"));
 
       if (DocumentAuthor)
       {
         if (!winHelp)
-          TexOutput("\\par");
-        sprintf(buf, "\\par\\qc{\\fs%d ", authorFont*2);
+          TexOutput(_T("\\par"));
+        wxSprintf(buf, _T("\\par\\qc{\\fs%d "), authorFont*2);
         TexOutput(buf);
         TraverseChildrenFromChunk(DocumentAuthor);
-        TexOutput("}");
-        TexOutput("\\par\\pard\n");
+        TexOutput(_T("}"));
+        TexOutput(_T("\\par\\pard\n"));
       }
       if (DocumentDate)
       {
-        TexOutput("\\par");
-        sprintf(buf, "\\qc{\\fs%d ", authorFont*2);
+        TexOutput(_T("\\par"));
+        wxSprintf(buf, _T("\\qc{\\fs%d "), authorFont*2);
         TexOutput(buf);
         TraverseChildrenFromChunk(DocumentDate);
-        TexOutput("}\\par\\pard\n");
+        TexOutput(_T("}\\par\\pard\n"));
       }
       // If linear RTF, we want this titlepage to be in a separate
       // section with its own (blank) header and footer
       if (!winHelp && (DocumentStyle != LATEX_ARTICLE))
       {
-        TexOutput("{\\header }{\\footer }\n");
+        TexOutput(_T("{\\header }{\\footer }\n"));
         // Not sure about this: we get too many sections.
-//        TexOutput("\\sect");
+//        TexOutput(_T("\\sect"));
       }
     }
     break;
@@ -2625,16 +2621,16 @@ void RTFOnMacro(int macroId, int no_args, bool start)
     {
     if (contentsLineSection && contentsLineValue)
     {
-      if (strcmp(contentsLineSection, "chapter") == 0)
+      if (wxStrcmp(contentsLineSection, _T("chapter")) == 0)
       {
-        fprintf(Contents, "\\par\n{\\b %s}\\par\n", contentsLineValue);
+        wxFprintf(Contents, _T("\\par\n{\\b %s}\\par\n"), contentsLineValue);
       }
-      else if (strcmp(contentsLineSection, "section") == 0)
+      else if (wxStrcmp(contentsLineSection, _T("section")) == 0)
       {
         if (DocumentStyle != LATEX_ARTICLE)
-          fprintf(Contents, "\n\\tab%s\\par\n", contentsLineValue);
+          wxFprintf(Contents, _T("\n\\tab%s\\par\n"), contentsLineValue);
         else
-          fprintf(Contents, "\\par\n{\\b %s}\\par\n", contentsLineValue);
+          wxFprintf(Contents, _T("\\par\n{\\b %s}\\par\n"), contentsLineValue);
       }
     }
     }
@@ -2644,7 +2640,7 @@ void RTFOnMacro(int macroId, int no_args, bool start)
   {
     if (start)
     {
-      TexOutput("\\brdrb\\brdrs\\par\\pard\n");
+      TexOutput(_T("\\brdrb\\brdrs\\par\\pard\n"));
       issuedNewParagraph = 1;
       WriteEnvironmentStyles();
     }
@@ -2654,7 +2650,7 @@ void RTFOnMacro(int macroId, int no_args, bool start)
   {
     if (start)
     {
-      TexOutput("\\brdrb\\brdrs\\par\\pard\n");
+      TexOutput(_T("\\brdrb\\brdrs\\par\\pard\n"));
       issuedNewParagraph = 1;
       WriteEnvironmentStyles();
     }
@@ -2669,16 +2665,16 @@ void RTFOnMacro(int macroId, int no_args, bool start)
   case ltNUMBEREDBIBITEM:
   {
     if (start)
-      TexOutput("\\li260\\fi-260 "); // Indent from 2nd line
+      TexOutput(_T("\\li260\\fi-260 ")); // Indent from 2nd line
     else
-      TexOutput("\\par\\pard\\par\n\n");
+      TexOutput(_T("\\par\\pard\\par\n\n"));
     break;
   }
   case ltTHEPAGE:
   {
     if (start)
     {
-      TexOutput("{\\field{\\*\\fldinst PAGE \\\\* MERGEFORMAT }{\\fldrslt 1}}");
+      TexOutput(_T("{\\field{\\*\\fldinst PAGE \\\\* MERGEFORMAT }{\\fldrslt 1}}"));
     }
     break;
   }
@@ -2686,8 +2682,8 @@ void RTFOnMacro(int macroId, int no_args, bool start)
   {
     if (start)
     {
-//      TexOutput("{\\field{\\*\\fldinst SECTION \\\\* MERGEFORMAT }{\\fldrslt 1}}");
-      sprintf(buf, "%d", chapterNo);
+//      TexOutput(_T("{\\field{\\*\\fldinst SECTION \\\\* MERGEFORMAT }{\\fldrslt 1}}"));
+      wxSprintf(buf, _T("%d"), chapterNo);
       TexOutput(buf);
     }
     break;
@@ -2696,8 +2692,8 @@ void RTFOnMacro(int macroId, int no_args, bool start)
   {
     if (start)
     {
-//      TexOutput("{\\field{\\*\\fldinst SECTION \\\\* MERGEFORMAT }{\\fldrslt 1}}");
-      sprintf(buf, "%d", sectionNo);
+//      TexOutput(_T("{\\field{\\*\\fldinst SECTION \\\\* MERGEFORMAT }{\\fldrslt 1}}"));
+      wxSprintf(buf, _T("%d"), sectionNo);
       TexOutput(buf);
     }
     break;
@@ -2706,7 +2702,7 @@ void RTFOnMacro(int macroId, int no_args, bool start)
   {
     if (!start && !winHelp)
     {
-      TexOutput("\\cols2\n");
+      TexOutput(_T("\\cols2\n"));
     }
     break;
   }
@@ -2714,7 +2710,7 @@ void RTFOnMacro(int macroId, int no_args, bool start)
   {
     if (!start && !winHelp)
     {
-      TexOutput("\\cols1\n");
+      TexOutput(_T("\\cols1\n"));
     }
     break;
   }
@@ -2722,10 +2718,10 @@ void RTFOnMacro(int macroId, int no_args, bool start)
   {
     if (start && useWord && !winHelp)
     {
-      FakeCurrentSection("Index");
+      FakeCurrentSection(_T("Index"));
       OnMacro(ltPAR, 0, TRUE);
       OnMacro(ltPAR, 0, FALSE);
-      TexOutput("\\par{\\field{\\*\\fldinst INDEX \\\\h \"\\emdash A\\emdash \"\\\\c \"2\"}{\\fldrslt PRESS F9 TO REFORMAT INDEX}}\n");
+      TexOutput(_T("\\par{\\field{\\*\\fldinst INDEX \\\\h \"\\emdash A\\emdash \"\\\\c \"2\"}{\\fldrslt PRESS F9 TO REFORMAT INDEX}}\n"));
     }
     break;
   }
@@ -2738,8 +2734,8 @@ void RTFOnMacro(int macroId, int no_args, bool start)
       OnMacro(ltPAR, 0, FALSE);
       OnMacro(ltPAR, 0, TRUE);
       OnMacro(ltPAR, 0, FALSE);
-      char buf[200];
-      sprintf(buf, "{\\field\\fldedit{\\*\\fldinst  TOC \\\\c \"%s\" }{\\fldrslt PRESS F9 TO REFORMAT LIST OF FIGURES}}\n",
+      wxChar buf[200];
+      wxSprintf(buf, _T("{\\field\\fldedit{\\*\\fldinst  TOC \\\\c \"%s\" }{\\fldrslt PRESS F9 TO REFORMAT LIST OF FIGURES}}\n"),
                FigureNameString);
       TexOutput(buf);
     }
@@ -2754,8 +2750,8 @@ void RTFOnMacro(int macroId, int no_args, bool start)
       OnMacro(ltPAR, 0, FALSE);
       OnMacro(ltPAR, 0, TRUE);
       OnMacro(ltPAR, 0, FALSE);
-      char buf[200];
-      sprintf(buf, "{\\field\\fldedit{\\*\\fldinst  TOC \\\\c \"%s\" }{\\fldrslt PRESS F9 TO REFORMAT LIST OF TABLES}}\n",
+      wxChar buf[200];
+      wxSprintf(buf, _T("{\\field\\fldedit{\\*\\fldinst  TOC \\\\c \"%s\" }{\\fldrslt PRESS F9 TO REFORMAT LIST OF TABLES}}\n"),
                 TablesNameString);
       TexOutput(buf);
     }
@@ -2763,350 +2759,350 @@ void RTFOnMacro(int macroId, int no_args, bool start)
   }
   // Symbols
   case ltALPHA:
-    if (start) TexOutput("{\\f1\\'61}");
+    if (start) TexOutput(_T("{\\f1\\'61}"));
     break;
   case ltBETA:
-    if (start) TexOutput("{\\f1\\'62}");
+    if (start) TexOutput(_T("{\\f1\\'62}"));
     break;
   case ltGAMMA:
-    if (start) TexOutput("{\\f1\\'63}");
+    if (start) TexOutput(_T("{\\f1\\'63}"));
     break;
   case ltDELTA:
-    if (start) TexOutput("{\\f1\\'64}");
+    if (start) TexOutput(_T("{\\f1\\'64}"));
     break;
   case ltEPSILON:
   case ltVAREPSILON:
-    if (start) TexOutput("{\\f1\\'65}");
+    if (start) TexOutput(_T("{\\f1\\'65}"));
     break;
   case ltZETA:
-    if (start) TexOutput("{\\f1\\'7A}");
+    if (start) TexOutput(_T("{\\f1\\'7A}"));
     break;
   case ltETA:
-    if (start) TexOutput("{\\f1\\'68}");
+    if (start) TexOutput(_T("{\\f1\\'68}"));
     break;
   case ltTHETA:
   case ltVARTHETA:
-    if (start) TexOutput("{\\f1\\'71}");
+    if (start) TexOutput(_T("{\\f1\\'71}"));
     break;
   case ltIOTA:
-    if (start) TexOutput("{\\f1\\'69}");
+    if (start) TexOutput(_T("{\\f1\\'69}"));
     break;
   case ltKAPPA:
-    if (start) TexOutput("{\\f1\\'6B}");
+    if (start) TexOutput(_T("{\\f1\\'6B}"));
     break;
   case ltLAMBDA:
-    if (start) TexOutput("{\\f1\\'6C}");
+    if (start) TexOutput(_T("{\\f1\\'6C}"));
     break;
   case ltMU:
-    if (start) TexOutput("{\\f1\\'6D}");
+    if (start) TexOutput(_T("{\\f1\\'6D}"));
     break;
   case ltNU:
-    if (start) TexOutput("{\\f1\\'6E}");
+    if (start) TexOutput(_T("{\\f1\\'6E}"));
     break;
   case ltXI:
-    if (start) TexOutput("{\\f1\\'78}");
+    if (start) TexOutput(_T("{\\f1\\'78}"));
     break;
   case ltPI:
-    if (start) TexOutput("{\\f1\\'70}");
+    if (start) TexOutput(_T("{\\f1\\'70}"));
     break;
   case ltVARPI:
-    if (start) TexOutput("{\\f1\\'76}");
+    if (start) TexOutput(_T("{\\f1\\'76}"));
     break;
   case ltRHO:
   case ltVARRHO:
-    if (start) TexOutput("{\\f1\\'72}");
+    if (start) TexOutput(_T("{\\f1\\'72}"));
     break;
   case ltSIGMA:
-    if (start) TexOutput("{\\f1\\'73}");
+    if (start) TexOutput(_T("{\\f1\\'73}"));
     break;
   case ltVARSIGMA:
-    if (start) TexOutput("{\\f1\\'56}");
+    if (start) TexOutput(_T("{\\f1\\'56}"));
     break;
   case ltTAU:
-    if (start) TexOutput("{\\f1\\'74}");
+    if (start) TexOutput(_T("{\\f1\\'74}"));
     break;
   case ltUPSILON:
-    if (start) TexOutput("{\\f1\\'75}");
+    if (start) TexOutput(_T("{\\f1\\'75}"));
     break;
   case ltPHI:
   case ltVARPHI:
-    if (start) TexOutput("{\\f1\\'66}");
+    if (start) TexOutput(_T("{\\f1\\'66}"));
     break;
   case ltCHI:
-    if (start) TexOutput("{\\f1\\'63}");
+    if (start) TexOutput(_T("{\\f1\\'63}"));
     break;
   case ltPSI:
-    if (start) TexOutput("{\\f1\\'79}");
+    if (start) TexOutput(_T("{\\f1\\'79}"));
     break;
   case ltOMEGA:
-    if (start) TexOutput("{\\f1\\'77}");
+    if (start) TexOutput(_T("{\\f1\\'77}"));
     break;
   case ltCAP_GAMMA:
-    if (start) TexOutput("{\\f1\\'47}");
+    if (start) TexOutput(_T("{\\f1\\'47}"));
     break;
   case ltCAP_DELTA:
-    if (start) TexOutput("{\\f1\\'44}");
+    if (start) TexOutput(_T("{\\f1\\'44}"));
     break;
   case ltCAP_THETA:
-    if (start) TexOutput("{\\f1\\'51}");
+    if (start) TexOutput(_T("{\\f1\\'51}"));
     break;
   case ltCAP_LAMBDA:
-    if (start) TexOutput("{\\f1\\'4C}");
+    if (start) TexOutput(_T("{\\f1\\'4C}"));
     break;
   case ltCAP_XI:
-    if (start) TexOutput("{\\f1\\'58}");
+    if (start) TexOutput(_T("{\\f1\\'58}"));
     break;
   case ltCAP_PI:
-    if (start) TexOutput("{\\f1\\'50}");
+    if (start) TexOutput(_T("{\\f1\\'50}"));
     break;
   case ltCAP_SIGMA:
-    if (start) TexOutput("{\\f1\\'53}");
+    if (start) TexOutput(_T("{\\f1\\'53}"));
     break;
   case ltCAP_UPSILON:
-    if (start) TexOutput("{\\f1\\'54}");
+    if (start) TexOutput(_T("{\\f1\\'54}"));
     break;
   case ltCAP_PHI:
-    if (start) TexOutput("{\\f1\\'46}");
+    if (start) TexOutput(_T("{\\f1\\'46}"));
     break;
   case ltCAP_PSI:
-    if (start) TexOutput("{\\f1\\'59}");
+    if (start) TexOutput(_T("{\\f1\\'59}"));
     break;
   case ltCAP_OMEGA:
-    if (start) TexOutput("{\\f1\\'57}");
+    if (start) TexOutput(_T("{\\f1\\'57}"));
     break;
   // Binary operation symbols
   case ltLE:
   case ltLEQ:
-    if (start) TexOutput("{\\f1\\'A3}");
+    if (start) TexOutput(_T("{\\f1\\'A3}"));
     break;
   case ltLL:
-    if (start) TexOutput("<<");
+    if (start) TexOutput(_T("<<"));
     break;
   case ltSUBSET:
-    if (start) TexOutput("{\\f1\\'CC}");
+    if (start) TexOutput(_T("{\\f1\\'CC}"));
     break;
   case ltSUBSETEQ:
-    if (start) TexOutput("{\\f1\\'CD}");
+    if (start) TexOutput(_T("{\\f1\\'CD}"));
     break;
   case ltIN:
-    if (start) TexOutput("{\\f1\\'CE}");
+    if (start) TexOutput(_T("{\\f1\\'CE}"));
     break;
   case ltGE:
   case ltGEQ:
-    if (start) TexOutput("{\\f1\\'B3}");
+    if (start) TexOutput(_T("{\\f1\\'B3}"));
     break;
   case ltGG:
-    if (start) TexOutput(">>");
+    if (start) TexOutput(_T(">>"));
     break;
   case ltSUPSET:
-    if (start) TexOutput("{\\f1\\'C9}");
+    if (start) TexOutput(_T("{\\f1\\'C9}"));
     break;
   case ltSUPSETEQ:
-    if (start) TexOutput("{\\f1\\'CD}");
+    if (start) TexOutput(_T("{\\f1\\'CD}"));
     break;
   case ltNI:
-    if (start) TexOutput("{\\f1\\'27}");
+    if (start) TexOutput(_T("{\\f1\\'27}"));
     break;
   case ltPERP:
-    if (start) TexOutput("{\\f1\\'5E}");
+    if (start) TexOutput(_T("{\\f1\\'5E}"));
     break;
   case ltNEQ:
-    if (start) TexOutput("{\\f1\\'B9}");
+    if (start) TexOutput(_T("{\\f1\\'B9}"));
     break;
   case ltAPPROX:
-    if (start) TexOutput("{\\f1\\'BB}");
+    if (start) TexOutput(_T("{\\f1\\'BB}"));
     break;
   case ltCONG:
-    if (start) TexOutput("{\\f1\\'40}");
+    if (start) TexOutput(_T("{\\f1\\'40}"));
     break;
   case ltEQUIV:
-    if (start) TexOutput("{\\f1\\'BA}");
+    if (start) TexOutput(_T("{\\f1\\'BA}"));
     break;
   case ltPROPTO:
-    if (start) TexOutput("{\\f1\\'B5}");
+    if (start) TexOutput(_T("{\\f1\\'B5}"));
     break;
   case ltSIM:
-    if (start) TexOutput("{\\f1\\'7E}");
+    if (start) TexOutput(_T("{\\f1\\'7E}"));
     break;
   case ltSMILE:
-    if (start) TexOutput("{\\f4\\'4A}");
+    if (start) TexOutput(_T("{\\f4\\'4A}"));
     break;
   case ltFROWN:
-    if (start) TexOutput("{\\f4\\'4C}");
+    if (start) TexOutput(_T("{\\f4\\'4C}"));
     break;
   case ltMID:
-    if (start) TexOutput("|");
+    if (start) TexOutput(_T("|"));
     break;
 
   // Negated relation symbols
   case ltNOTEQ:
-    if (start) TexOutput("{\\f1\\'B9}");
+    if (start) TexOutput(_T("{\\f1\\'B9}"));
     break;
   case ltNOTIN:
-    if (start) TexOutput("{\\f1\\'CF}");
+    if (start) TexOutput(_T("{\\f1\\'CF}"));
     break;
   case ltNOTSUBSET:
-    if (start) TexOutput("{\\f1\\'CB}");
+    if (start) TexOutput(_T("{\\f1\\'CB}"));
     break;
 
   // Arrows
   case ltLEFTARROW:
-     if (start) TexOutput("{\\f1\\'AC}");
+     if (start) TexOutput(_T("{\\f1\\'AC}"));
     break;
   case ltLEFTARROW2:
-    if (start) TexOutput("{\\f1\\'DC}");
+    if (start) TexOutput(_T("{\\f1\\'DC}"));
     break;
   case ltRIGHTARROW:
-    if (start) TexOutput("{\\f1\\'AE}");
+    if (start) TexOutput(_T("{\\f1\\'AE}"));
     break;
   case ltRIGHTARROW2:
-    if (start) TexOutput("{\\f1\\'DE}");
+    if (start) TexOutput(_T("{\\f1\\'DE}"));
     break;
   case ltLEFTRIGHTARROW:
-    if (start) TexOutput("{\\f1\\'AB}");
+    if (start) TexOutput(_T("{\\f1\\'AB}"));
     break;
   case ltLEFTRIGHTARROW2:
-    if (start) TexOutput("{\\f1\\'DB}");
+    if (start) TexOutput(_T("{\\f1\\'DB}"));
     break;
   case ltUPARROW:
-    if (start) TexOutput("{\\f1\\'AD}");
+    if (start) TexOutput(_T("{\\f1\\'AD}"));
     break;
   case ltUPARROW2:
-    if (start) TexOutput("{\\f1\\'DD}");
+    if (start) TexOutput(_T("{\\f1\\'DD}"));
     break;
   case ltDOWNARROW:
-    if (start) TexOutput("{\\f1\\'AF}");
+    if (start) TexOutput(_T("{\\f1\\'AF}"));
     break;
   case ltDOWNARROW2:
-    if (start) TexOutput("{\\f1\\'DF}");
+    if (start) TexOutput(_T("{\\f1\\'DF}"));
     break;
 
   // Miscellaneous symbols
   case ltALEPH:
-    if (start) TexOutput("{\\f1\\'CO}");
+    if (start) TexOutput(_T("{\\f1\\'CO}"));
     break;
   case ltWP:
-    if (start) TexOutput("{\\f1\\'C3}");
+    if (start) TexOutput(_T("{\\f1\\'C3}"));
     break;
   case ltRE:
-    if (start) TexOutput("{\\f1\\'C2}");
+    if (start) TexOutput(_T("{\\f1\\'C2}"));
     break;
   case ltIM:
-    if (start) TexOutput("{\\f1\\'C1}");
+    if (start) TexOutput(_T("{\\f1\\'C1}"));
     break;
   case ltEMPTYSET:
-    if (start) TexOutput("{\\f1\\'C6}");
+    if (start) TexOutput(_T("{\\f1\\'C6}"));
     break;
   case ltNABLA:
-    if (start) TexOutput("{\\f1\\'D1}");
+    if (start) TexOutput(_T("{\\f1\\'D1}"));
     break;
   case ltSURD:
-    if (start) TexOutput("{\\f1\\'D6}");
+    if (start) TexOutput(_T("{\\f1\\'D6}"));
     break;
   case ltPARTIAL:
-    if (start) TexOutput("{\\f1\\'B6}");
+    if (start) TexOutput(_T("{\\f1\\'B6}"));
     break;
   case ltBOT:
-    if (start) TexOutput("{\\f1\\'5E}");
+    if (start) TexOutput(_T("{\\f1\\'5E}"));
     break;
   case ltFORALL:
-    if (start) TexOutput("{\\f1\\'22}");
+    if (start) TexOutput(_T("{\\f1\\'22}"));
     break;
   case ltEXISTS:
-    if (start) TexOutput("{\\f1\\'24}");
+    if (start) TexOutput(_T("{\\f1\\'24}"));
     break;
   case ltNEG:
-    if (start) TexOutput("{\\f1\\'D8}");
+    if (start) TexOutput(_T("{\\f1\\'D8}"));
     break;
   case ltSHARP:
-    if (start) TexOutput("{\\f1\\'23}");
+    if (start) TexOutput(_T("{\\f1\\'23}"));
     break;
   case ltANGLE:
-    if (start) TexOutput("{\\f1\\'D0}");
+    if (start) TexOutput(_T("{\\f1\\'D0}"));
     break;
   case ltTRIANGLE:
-    if (start) TexOutput("{\\f5\\'73}");
+    if (start) TexOutput(_T("{\\f5\\'73}"));
     break;
   case ltCLUBSUIT:
-    if (start) TexOutput("{\\f5\\'A8}");
+    if (start) TexOutput(_T("{\\f5\\'A8}"));
     break;
   case ltDIAMONDSUIT:
-    if (start) TexOutput("{\\f5\\'A9}");
+    if (start) TexOutput(_T("{\\f5\\'A9}"));
     break;
   case ltHEARTSUIT:
-    if (start) TexOutput("{\\f5\\'AA}");
+    if (start) TexOutput(_T("{\\f5\\'AA}"));
     break;
   case ltSPADESUIT:
-    if (start) TexOutput("{\\f5\\'AB}");
+    if (start) TexOutput(_T("{\\f5\\'AB}"));
     break;
   case ltINFTY:
-    if (start) TexOutput("{\\f1\\'A5}");
+    if (start) TexOutput(_T("{\\f1\\'A5}"));
     break;
   case ltCOPYRIGHT:
-    if (start) TexOutput("{\\f0\\'A9}");
+    if (start) TexOutput(_T("{\\f0\\'A9}"));
     break;
   case ltREGISTERED:
-    if (start) TexOutput("{\\f0\\'AE}");
+    if (start) TexOutput(_T("{\\f0\\'AE}"));
     break;
   case ltPM:
-    if (start) TexOutput("{\\f1\\'B1}");
+    if (start) TexOutput(_T("{\\f1\\'B1}"));
     break;
   case ltMP:
-    if (start) TexOutput("{\\f1\\'B1}");
+    if (start) TexOutput(_T("{\\f1\\'B1}"));
     break;
   case ltTIMES:
-    if (start) TexOutput("{\\f1\\'B4}");
+    if (start) TexOutput(_T("{\\f1\\'B4}"));
     break;
   case ltDIV:
-    if (start) TexOutput("{\\f1\\'B8}");
+    if (start) TexOutput(_T("{\\f1\\'B8}"));
     break;
   case ltCDOT:
-    if (start) TexOutput("{\\f1\\'D7}");
+    if (start) TexOutput(_T("{\\f1\\'D7}"));
     break;
   case ltAST:
-    if (start) TexOutput("{\\f1\\'2A}");
+    if (start) TexOutput(_T("{\\f1\\'2A}"));
     break;
   case ltSTAR:
-    if (start) TexOutput("{\\f5\\'AB}");
+    if (start) TexOutput(_T("{\\f5\\'AB}"));
     break;
   case ltCAP:
-    if (start) TexOutput("{\\f1\\'C7}");
+    if (start) TexOutput(_T("{\\f1\\'C7}"));
     break;
   case ltCUP:
-    if (start) TexOutput("{\\f1\\'C8}");
+    if (start) TexOutput(_T("{\\f1\\'C8}"));
     break;
   case ltVEE:
-    if (start) TexOutput("{\\f1\\'DA}");
+    if (start) TexOutput(_T("{\\f1\\'DA}"));
     break;
   case ltWEDGE:
-    if (start) TexOutput("{\\f1\\'D9}");
+    if (start) TexOutput(_T("{\\f1\\'D9}"));
     break;
   case ltCIRC:
-    if (start) TexOutput("{\\f1\\'B0}");
+    if (start) TexOutput(_T("{\\f1\\'B0}"));
     break;
   case ltBULLET:
-    if (start) TexOutput("{\\f1\\'B7}");
+    if (start) TexOutput(_T("{\\f1\\'B7}"));
     break;
   case ltDIAMOND:
-    if (start) TexOutput("{\\f1\\'E0}");
+    if (start) TexOutput(_T("{\\f1\\'E0}"));
     break;
   case ltBOX:
-    if (start) TexOutput("{\\f1\\'C6}");
+    if (start) TexOutput(_T("{\\f1\\'C6}"));
     break;
   case ltDIAMOND2:
-    if (start) TexOutput("{\\f1\\'E0}");
+    if (start) TexOutput(_T("{\\f1\\'E0}"));
     break;
   case ltBIGTRIANGLEDOWN:
-    if (start) TexOutput("{\\f1\\'D1}");
+    if (start) TexOutput(_T("{\\f1\\'D1}"));
     break;
   case ltOPLUS:
-    if (start) TexOutput("{\\f1\\'C5}");
+    if (start) TexOutput(_T("{\\f1\\'C5}"));
     break;
   case ltOTIMES:
-    if (start) TexOutput("{\\f1\\'C4}");
+    if (start) TexOutput(_T("{\\f1\\'C4}"));
     break;
   case ltSS:
-    if (start) TexOutput("{\\'DF}");
+    if (start) TexOutput(_T("{\\'DF}"));
     break;
   case ltFIGURE:
   {
@@ -3131,7 +3127,7 @@ void RTFOnMacro(int macroId, int no_args, bool start)
 // Called on start/end of argument examination
 bool RTFOnArgument(int macroId, int arg_no, bool start)
 {
-  char buf[300];
+  wxChar buf[300];
   switch (macroId)
   {
   case ltCHAPTER:
@@ -3153,34 +3149,33 @@ bool RTFOnArgument(int macroId, int arg_no, bool start)
     if (!start && (arg_no == 1))
       currentSection = GetArgChunk();
     return FALSE;
-    break;
   }
   case ltFUNC:
   {
     if (start && (arg_no == 1))
-      TexOutput("\\pard\\li600\\fi-600{\\b ");
+      TexOutput(_T("\\pard\\li600\\fi-600{\\b "));
 
     if (!start && (arg_no == 1))
-      TexOutput("} ");
+      TexOutput(_T("} "));
 
     if (start && (arg_no == 2))
     {
-      if (!suppressNameDecoration) TexOutput("{\\b ");
+      if (!suppressNameDecoration) TexOutput(_T("{\\b "));
       currentMember = GetArgChunk();
     }
     if (!start && (arg_no == 2))
     {
-      if (!suppressNameDecoration) TexOutput("}");
+      if (!suppressNameDecoration) TexOutput(_T("}"));
     }
     
     if (start && (arg_no == 3))
-      TexOutput("(");
+      TexOutput(_T("("));
     if (!start && (arg_no == 3))
     {
-//      TexOutput(")\\li0\\fi0");
-//      TexOutput(")\\par\\pard\\li0\\fi0");
+//      TexOutput(_T(")\\li0\\fi0"));
+//      TexOutput(_T(")\\par\\pard\\li0\\fi0"));
 //      issuedNewParagraph = 1;
-      TexOutput(")");
+      TexOutput(_T(")"));
       WriteEnvironmentStyles();
     }
     break;
@@ -3188,23 +3183,23 @@ bool RTFOnArgument(int macroId, int arg_no, bool start)
   case ltCLIPSFUNC:
   {
     if (start && (arg_no == 1))
-      TexOutput("\\pard\\li260\\fi-260{\\b ");
+      TexOutput(_T("\\pard\\li260\\fi-260{\\b "));
     if (!start && (arg_no == 1))
-      TexOutput("} ");
+      TexOutput(_T("} "));
 
     if (start && (arg_no == 2))
     {
-      if (!suppressNameDecoration) TexOutput("({\\b ");
+      if (!suppressNameDecoration) TexOutput(_T("({\\b "));
       currentMember = GetArgChunk();
     }
     if (!start && (arg_no == 2))
     {
-      if (!suppressNameDecoration) TexOutput("}");
+      if (!suppressNameDecoration) TexOutput(_T("}"));
     }
 
     if (!start && (arg_no == 3))
     {
-      TexOutput(")\\li0\\fi0");
+      TexOutput(_T(")\\li0\\fi0"));
       WriteEnvironmentStyles();
     }
     break;
@@ -3212,24 +3207,24 @@ bool RTFOnArgument(int macroId, int arg_no, bool start)
   case ltPFUNC:
   {
     if (start && (arg_no == 1))
-      TexOutput("\\pard\\li260\\fi-260");
+      TexOutput(_T("\\pard\\li260\\fi-260"));
 
     if (!start && (arg_no == 1))
-      TexOutput(" ");
+      TexOutput(_T(" "));
 
     if (start && (arg_no == 2))
-      TexOutput("(*");
+      TexOutput(_T("(*"));
     if (!start && (arg_no == 2))
-      TexOutput(")");
+      TexOutput(_T(")"));
 
     if (start && (arg_no == 2))
       currentMember = GetArgChunk();
 
     if (start && (arg_no == 3))
-      TexOutput("(");
+      TexOutput(_T("("));
     if (!start && (arg_no == 3))
     {
-      TexOutput(")\\li0\\fi0");
+      TexOutput(_T(")\\li0\\fi0"));
       WriteEnvironmentStyles();
     }
     break;
@@ -3237,39 +3232,39 @@ bool RTFOnArgument(int macroId, int arg_no, bool start)
   case ltPARAM:
   {
     if (start && (arg_no == 1))
-      TexOutput("{\\b ");
+      TexOutput(_T("{\\b "));
     if (!start && (arg_no == 1))
-      TexOutput("}");
+      TexOutput(_T("}"));
     if (start && (arg_no == 2))
     {
-      TexOutput("{\\i ");
+      TexOutput(_T("{\\i "));
     }
     if (!start && (arg_no == 2))
     {
-      TexOutput("}");
+      TexOutput(_T("}"));
     }
     break;
   }
   case ltCPARAM:
   {
     if (start && (arg_no == 1))
-      TexOutput("{\\b ");
+      TexOutput(_T("{\\b "));
     if (!start && (arg_no == 1))
-      TexOutput("} ");  // This is the difference from param - one space!
+      TexOutput(_T("} "));  // This is the difference from param - one space!
     if (start && (arg_no == 2))
     {
-      TexOutput("{\\i ");
+      TexOutput(_T("{\\i "));
     }
     if (!start && (arg_no == 2))
     {
-      TexOutput("}");
+      TexOutput(_T("}"));
     }
     break;
   }
   case ltMEMBER:
   {
     if (!start && (arg_no == 1))
-      TexOutput(" ");
+      TexOutput(_T(" "));
 
     if (start && (arg_no == 2))
       currentMember = GetArgChunk();
@@ -3279,10 +3274,9 @@ bool RTFOnArgument(int macroId, int arg_no, bool start)
   {
     if (start)
     {
-      char *sec = NULL;
-      char *secName = NULL;
+      wxChar *sec = NULL;
       
-      char *refName = GetArgData();
+      wxChar *refName = GetArgData();
       if (winHelp || !useWord)
       {
         if (refName)
@@ -3291,7 +3285,6 @@ bool RTFOnArgument(int macroId, int arg_no, bool start)
           if (texRef)
           {
             sec = texRef->sectionNumber;
-            secName = texRef->sectionName;
           }
         }
         if (sec)
@@ -3301,7 +3294,7 @@ bool RTFOnArgument(int macroId, int arg_no, bool start)
       }
       else
       {
-        fprintf(Chapters, "{\\field{\\*\\fldinst  REF %s \\\\* MERGEFORMAT }{\\fldrslt ??}}",
+        wxFprintf(Chapters, _T("{\\field{\\*\\fldinst  REF %s \\\\* MERGEFORMAT }{\\fldrslt ??}}"),
                 refName);
       }
       return FALSE;
@@ -3316,23 +3309,23 @@ bool RTFOnArgument(int macroId, int arg_no, bool start)
         if ((GetNoArgs() - arg_no) == 1)
         {
           if (start)
-            TexOutput("{\\uldb ");
+            TexOutput(_T("{\\uldb "));
           else
-            TexOutput("}");
+            TexOutput(_T("}"));
         }
         if ((GetNoArgs() - arg_no) == 0) // Arg = 2, or 3 if first is optional
         {
           if (start)
           {
-            TexOutput("{\\v ");
+            TexOutput(_T("{\\v "));
 
             // Remove green colour/underlining if specified
             if (!hotSpotUnderline && !hotSpotColour)
-              TexOutput("%");
+              TexOutput(_T("%"));
             else if (!hotSpotColour)
-              TexOutput("*");
+              TexOutput(_T("*"));
           }
-          else TexOutput("}");
+          else TexOutput(_T("}"));
         }
     }
     else // If a linear document, must resolve the references ourselves
@@ -3342,9 +3335,9 @@ bool RTFOnArgument(int macroId, int arg_no, bool start)
         // In a linear document we display the anchor text in italic plus
         // the page number.
         if (start)
-          TexOutput("{\\i ");
+          TexOutput(_T("{\\i "));
         else
-          TexOutput("}");
+          TexOutput(_T("}"));
 
         if (start)
           helpRefText = GetArgChunk();
@@ -3355,24 +3348,24 @@ bool RTFOnArgument(int macroId, int arg_no, bool start)
       {
         if (macroId != ltHELPREFN)
         {
-          char *refName = GetArgData();
+          wxChar *refName = GetArgData();
           TexRef *texRef = NULL;
           if (refName)
             texRef = FindReference(refName);
           if (start)
           {
             if (texRef || !ignoreBadRefs)
-              TexOutput(" (");
+              TexOutput(_T(" ("));
             if (refName)
             {
                 if (texRef || !ignoreBadRefs)
                 {
                   if (useWord)
                   {
-                      TexOutput("p. ");
-                      TexOutput("{\\field{\\*\\fldinst  PAGEREF ");
+                      TexOutput(_T("p. "));
+                      TexOutput(_T("{\\field{\\*\\fldinst  PAGEREF "));
                       TexOutput(refName);
-                      TexOutput(" \\\\* MERGEFORMAT }{\\fldrslt ??}}");
+                      TexOutput(_T(" \\\\* MERGEFORMAT }{\\fldrslt ??}}"));
                   }
                   else
                   {
@@ -3380,24 +3373,26 @@ bool RTFOnArgument(int macroId, int arg_no, bool start)
                     // so can't do page references
                     if (texRef)
                     {
-                      TexOutput(texRef->sectionName) ; TexOutput(" "); TexOutput(texRef->sectionNumber);
+                      TexOutput(texRef->sectionName);
+                      TexOutput(_T(" "));
+                      TexOutput(texRef->sectionNumber);
                     }
                     else
                     {
                       if (!ignoreBadRefs)
-                        TexOutput("??");
-                      sprintf(buf, "Warning: unresolved reference '%s'", refName);
+                        TexOutput(_T("??"));
+                      wxSprintf(buf, _T("Warning: unresolved reference '%s'"), refName);
                       OnInform(buf);
                     }
                   }
                 }
             }
-            else TexOutput("??");
+            else TexOutput(_T("??"));
           }
           else
           {
             if (texRef || !ignoreBadRefs)
-              TexOutput(")");
+              TexOutput(_T(")"));
           }
         }
         return FALSE;
@@ -3416,11 +3411,11 @@ bool RTFOnArgument(int macroId, int arg_no, bool start)
       if (start)
       {
         inVerbatim = TRUE;
-        TexOutput(" ({\\f3 ");
+        TexOutput(_T(" ({\\f3 "));
       }
       else
       {
-        TexOutput("})");
+        TexOutput(_T("})"));
         inVerbatim = FALSE;
       }
       return TRUE;
@@ -3434,23 +3429,23 @@ bool RTFOnArgument(int macroId, int arg_no, bool start)
       if ((GetNoArgs() - arg_no) == 1)
       {
         if (start)
-          TexOutput("{\\ul ");
+          TexOutput(_T("{\\ul "));
         else
-          TexOutput("}");
+          TexOutput(_T("}"));
       }
       if ((GetNoArgs() - arg_no) == 0) // Arg = 2, or 3 if first is optional
       {
         if (start)
         {
-          TexOutput("{\\v ");
+          TexOutput(_T("{\\v "));
 
           // Remove green colour/underlining if specified
           if (!hotSpotUnderline && !hotSpotColour)
-            TexOutput("%");
+            TexOutput(_T("%"));
           else if (!hotSpotColour)
-            TexOutput("*");
+            TexOutput(_T("*"));
         }
-        else TexOutput("}");
+        else TexOutput(_T("}"));
       }
     }
     else // A linear document...
@@ -3459,9 +3454,9 @@ bool RTFOnArgument(int macroId, int arg_no, bool start)
       {
         // In a linear document we just display the anchor text in italic
         if (start)
-          TexOutput("{\\i ");
+          TexOutput(_T("{\\i "));
         else
-          TexOutput("}");
+          TexOutput(_T("}"));
         return TRUE;
       }
       else return FALSE;
@@ -3479,7 +3474,6 @@ bool RTFOnArgument(int macroId, int arg_no, bool start)
       return FALSE;
     }
     else return FALSE;
-    break;
   }
   case ltIMAGE:
   case ltIMAGEL:
@@ -3495,71 +3489,88 @@ bool RTFOnArgument(int macroId, int arg_no, bool start)
     
     if (start && (arg_no == 1))
     {
-      char *imageDimensions = copystring(GetArgData());
-      char buf1[50];
-      strcpy(buf1, imageDimensions);
-      char *tok1 = strtok(buf1, ";:");
-      char *tok2 = strtok(NULL, ";:");
-      // Convert points to TWIPS (1 twip = 1/20th of point)
-      imageWidth = (int)(20*(tok1 ? ParseUnitArgument(tok1) : 0));
-      imageHeight = (int)(20*(tok2 ? ParseUnitArgument(tok2) : 0));
+      wxChar *imageDimensions = copystring(GetArgData());
+
+      // imageWidth - Convert points to TWIPS (1 twip = 1/20th of point)
+      wxStringTokenizer tok(imageDimensions, _T(";:"), wxTOKEN_STRTOK);
+      if(tok.HasMoreTokens())
+      {
+        wxString token = tok.GetNextToken();
+        imageWidth = (int)(20*ParseUnitArgument((wxChar*)token.c_str()));
+      }
+      else
+      {
+        imageWidth = 0;
+      }
+
+      // imageHeight - Convert points to TWIPS (1 twip = 1/20th of point)
+      if(tok.HasMoreTokens())
+      {
+        wxString token = tok.GetNextToken();
+        imageHeight = (int)(20*ParseUnitArgument((wxChar*)token.c_str()));
+      }
+      else
+      {
+        imageHeight = 0;
+      }
+
       if (imageDimensions)  // glt
           delete [] imageDimensions;
       return FALSE;
     }  
     else if (start && (arg_no == 2 ))
     {
-      char *filename = copystring(GetArgData());
-      wxString f = "";
-      if ((winHelp || (strcmp(bitmapMethod, "includepicture") == 0)  || (strcmp(bitmapMethod, "import") == 0)) && useWord)
+      wxChar *filename = copystring(GetArgData());
+      wxString f = _T("");
+      if ((winHelp || (wxStrcmp(bitmapMethod, _T("includepicture")) == 0)  || (wxStrcmp(bitmapMethod, _T("import")) == 0)) && useWord)
       {
-        if (f == "") // Try for a .shg (segmented hypergraphics file)
+        if (f == _T("")) // Try for a .shg (segmented hypergraphics file)
         {
-          strcpy(buf, filename);
+          wxStrcpy(buf, filename);
           StripExtension(buf);
-          strcat(buf, ".shg");
+          wxStrcat(buf, _T(".shg"));
           f = TexPathList.FindValidPath(buf);
         }
-        if (f == "") // Try for a .bmp
+        if (f == _T("")) // Try for a .bmp
         {
-          strcpy(buf, filename);
+          wxStrcpy(buf, filename);
           StripExtension(buf);
-          strcat(buf, ".bmp");
+          wxStrcat(buf, _T(".bmp"));
           f = TexPathList.FindValidPath(buf);
         }
-        if (f == "") // Try for a metafile instead
+        if (f == _T("")) // Try for a metafile instead
         {
-          strcpy(buf, filename);
+          wxStrcpy(buf, filename);
           StripExtension(buf);
-          strcat(buf, ".wmf");
+          wxStrcat(buf, _T(".wmf"));
           f = TexPathList.FindValidPath(buf);
         }
-        if (f != "")
+        if (f != _T(""))
         {
           if (winHelp)
           {
             if (bitmapTransparency && (winHelpVersion > 3))
-              TexOutput("\\{bmct ");
+              TexOutput(_T("\\{bmct "));
             else
-              TexOutput("\\{bmc ");
+              TexOutput(_T("\\{bmc "));
             wxString str = wxFileNameFromPath(f);
-            TexOutput((char*) (const char*) str);
-            TexOutput("\\}");
+            TexOutput((wxChar*) (const wxChar*) str);
+            TexOutput(_T("\\}"));
           }
           else
           {
             // Microsoft Word method
-            if (strcmp(bitmapMethod, "import") == 0)
-              TexOutput("{\\field{\\*\\fldinst IMPORT ");
+            if (wxStrcmp(bitmapMethod, _T("import")) == 0)
+              TexOutput(_T("{\\field{\\*\\fldinst IMPORT "));
             else
-              TexOutput("{\\field{\\*\\fldinst INCLUDEPICTURE ");
+              TexOutput(_T("{\\field{\\*\\fldinst INCLUDEPICTURE "));
 
             // Full path appears not to be valid!
             wxString str = wxFileNameFromPath(f);
-            TexOutput((char*)(const char*) str);
+            TexOutput((wxChar*)(const wxChar*) str);
 /*
-            int len = strlen(f);
-            char smallBuf[2]; smallBuf[1] = 0;
+            int len = wxStrlen(f);
+            wxChar smallBuf[2]; smallBuf[1] = 0;
             for (int i = 0; i < len; i++)
             {
               smallBuf[0] = f[i];
@@ -3568,15 +3579,15 @@ bool RTFOnArgument(int macroId, int arg_no, bool start)
                 TexOutput(smallBuf);
             }
 */
-            TexOutput("}{\\fldrslt PRESS F9 TO FORMAT PICTURE}}");
+            TexOutput(_T("}{\\fldrslt PRESS F9 TO FORMAT PICTURE}}"));
           }
         }
         else
         {
-          TexOutput("[No BMP or WMF for image file ");
+          TexOutput(_T("[No BMP or WMF for image file "));
           TexOutput(filename);
-          TexOutput("]");
-          sprintf(buf, "Warning: could not find a BMP or WMF equivalent for %s.", filename);
+          TexOutput(_T("]"));
+          wxSprintf(buf, _T("Warning: could not find a BMP or WMF equivalent for %s."), filename);
           OnInform(buf);
         }
         if (filename)  // glt
@@ -3584,21 +3595,21 @@ bool RTFOnArgument(int macroId, int arg_no, bool start)
       }
       else // linear RTF
       {
-          if (f == "") // Try for a .bmp
+          if (f == _T("")) // Try for a .bmp
           {
-            strcpy(buf, filename);
+            wxStrcpy(buf, filename);
             StripExtension(buf);
-            strcat(buf, ".bmp");
+            wxStrcat(buf, _T(".bmp"));
             f = TexPathList.FindValidPath(buf);
           }
-          if (f != "")
+          if (f != _T(""))
           {
-            FILE *fd = fopen(f, "rb");
+            FILE *fd = wxFopen(f, _T("rb"));
             if (OutputBitmapHeader(fd, winHelp))
               OutputBitmapData(fd);
             else
             {
-              sprintf(buf, "Could not read bitmap %s.\nMay be in wrong format (needs RGB-encoded Windows BMP).", (const char*) f);
+              wxSprintf(buf, _T("Could not read bitmap %s.\nMay be in wrong format (needs RGB-encoded Windows BMP)."), f.c_str());
               OnError(buf);
             }
             fclose(fd);
@@ -3606,21 +3617,21 @@ bool RTFOnArgument(int macroId, int arg_no, bool start)
           else // Try for a metafile instead
           {
 #ifdef __WXMSW__
-            strcpy(buf, filename);
+            wxStrcpy(buf, filename);
             StripExtension(buf);
-            strcat(buf, ".wmf");
+            wxStrcat(buf, _T(".wmf"));
             f = TexPathList.FindValidPath(buf);
-            if (f != "")
+            if (f != _T(""))
             {
   //            HFILE handle = _lopen(f, READ);
-              FILE *fd = fopen(f, "rb");
+              FILE *fd = wxFopen(f, _T("rb"));
               if (OutputMetafileHeader(fd, winHelp, imageWidth, imageHeight))
               {
                 OutputMetafileData(fd);
               }
               else
               {
-                sprintf(buf, "Could not read metafile %s. Perhaps it's not a placeable metafile?", (const char*)f);
+                wxSprintf(buf, _T("Could not read metafile %s. Perhaps it's not a placeable metafile?"), f.c_str());
                 OnError(buf);
               }
               fclose(fd);
@@ -3628,10 +3639,10 @@ bool RTFOnArgument(int macroId, int arg_no, bool start)
             else
             {
 #endif            
-              TexOutput("[No BMP or WMF for image file ");
+              TexOutput(_T("[No BMP or WMF for image file "));
               TexOutput(filename);
-              TexOutput("]");
-              sprintf(buf, "Warning: could not find a BMP or WMF equivalent for %s.", filename);
+              TexOutput(_T("]"));
+              wxSprintf(buf, _T("Warning: could not find a BMP or WMF equivalent for %s."), filename);
               OnInform(buf);
 #ifdef __WXMSW__
             }
@@ -3642,7 +3653,6 @@ bool RTFOnArgument(int macroId, int arg_no, bool start)
     }
     else
       return FALSE;
-    break;
   }
   case ltTABULAR:
   case ltSUPERTABULAR:
@@ -3658,11 +3668,11 @@ bool RTFOnArgument(int macroId, int arg_no, bool start)
         tableVerticalLineRight = FALSE;
         int currentWidth = 0;
 
-        char *alignString = copystring(GetArgData());
+        wxChar *alignString = copystring(GetArgData());
         ParseTableArgument(alignString);
 
-//        TexOutput("\\trowd\\trgaph108\\trleft-108");
-        TexOutput("\\trowd\\trgaph108");
+//        TexOutput(_T("\\trowd\\trgaph108\\trleft-108"));
+        TexOutput(_T("\\trowd\\trgaph108"));
 
         // Write the first row formatting for compatibility
         // with standard Latex
@@ -3671,10 +3681,10 @@ bool RTFOnArgument(int macroId, int arg_no, bool start)
           for (int i = 0; i < noColumns; i++)
           {
             currentWidth += TableData[i].width;
-            sprintf(buf, "\\cellx%d", currentWidth);
+            wxSprintf(buf, _T("\\cellx%d"), currentWidth);
             TexOutput(buf);
           }
-          TexOutput("\\pard\\intbl\n");
+          TexOutput(_T("\\pard\\intbl\n"));
         }
         delete[] alignString;
 
@@ -3683,7 +3693,7 @@ bool RTFOnArgument(int macroId, int arg_no, bool start)
     }
     else if (arg_no == 2 && !start)
     {
-      TexOutput("\\pard\n");
+      TexOutput(_T("\\pard\n"));
       WriteEnvironmentStyles();
       inTabular = FALSE;
     }
@@ -3695,9 +3705,9 @@ bool RTFOnArgument(int macroId, int arg_no, bool start)
   {
     if (start)
     {
-      TexOutput("\\li360\n");
+      TexOutput(_T("\\li360\n"));
       forbidParindent ++;
-      PushEnvironmentStyle("\\li360");
+      PushEnvironmentStyle(_T("\\li360"));
     }
     else
     {
@@ -3712,8 +3722,8 @@ bool RTFOnArgument(int macroId, int arg_no, bool start)
   {
     if (start)
     {
-      TexOutput("\\li360\n");
-      PushEnvironmentStyle("\\li360");
+      TexOutput(_T("\\li360\n"));
+      PushEnvironmentStyle(_T("\\li360"));
     }
     else
     {
@@ -3731,7 +3741,7 @@ bool RTFOnArgument(int macroId, int arg_no, bool start)
   {
     if (start)
     {
-      sprintf(buf, "\\box\\trgaph108%s\n", ((macroId == ltNORMALBOXD) ? "\\brdrdb" : "\\brdrs"));
+      wxSprintf(buf, _T("\\box\\trgaph108%s\n"), ((macroId == ltNORMALBOXD) ? _T("\\brdrdb") : _T("\\brdrs")));
       TexOutput(buf);
       PushEnvironmentStyle(buf);
     }
@@ -3747,14 +3757,14 @@ bool RTFOnArgument(int macroId, int arg_no, bool start)
   {
     if (start)
     {
-      char *data = GetArgData();
-      if (strcmp(data, "10") == 0)
+      wxChar *data = GetArgData();
+      if (wxStrcmp(data, _T("10")) == 0)
         SetFontSizes(10);
-      else if (strcmp(data, "11") == 0)
+      else if (wxStrcmp(data, _T("11")) == 0)
         SetFontSizes(11);
-      else if (strcmp(data, "12") == 0)
+      else if (wxStrcmp(data, _T("12")) == 0)
         SetFontSizes(12);
-      sprintf(buf, "\\fs%d\n", normalFont*2);
+      wxSprintf(buf, _T("\\fs%d\n"), normalFont*2);
       TexOutput(buf);
       TexOutput(buf);
       return FALSE;
@@ -3765,13 +3775,13 @@ bool RTFOnArgument(int macroId, int arg_no, bool start)
   {
     if (start)
     {
-      char *data = GetArgData();
-      if (strcmp(data, "Swiss") == 0)
-        TexOutput("\\f2\n");
-      else if (strcmp(data, "Symbol") == 0)
-        TexOutput("\\f1\n");
-      else if (strcmp(data, "Times") == 0)
-        TexOutput("\\f0\n");
+      wxChar *data = GetArgData();
+      if (wxStrcmp(data, _T("Swiss")) == 0)
+        TexOutput(_T("\\f2\n"));
+      else if (wxStrcmp(data, _T("Symbol")) == 0)
+        TexOutput(_T("\\f1\n"));
+      else if (wxStrcmp(data, _T("Times")) == 0)
+        TexOutput(_T("\\f0\n"));
 
       return FALSE;
     }
@@ -3781,11 +3791,11 @@ bool RTFOnArgument(int macroId, int arg_no, bool start)
   {
     if (start && arg_no == 1)
     {
-      char *data = GetArgData();
+      wxChar *data = GetArgData();
       ParIndent = ParseUnitArgument(data);
       if (ParIndent == 0 || forbidParindent == 0)
       {
-        sprintf(buf, "\\fi%d\n", ParIndent*20);
+        wxSprintf(buf, _T("\\fi%d\n"), ParIndent*20);
         TexOutput(buf);
       }
       return FALSE;
@@ -3809,7 +3819,7 @@ bool RTFOnArgument(int macroId, int arg_no, bool start)
       case 1:
       {
         if (!start)
-          TexOutput("\\tab ");
+          TexOutput(_T("\\tab "));
         break;
       }
       case 2:
@@ -3817,8 +3827,8 @@ bool RTFOnArgument(int macroId, int arg_no, bool start)
         if (!start)
         {
           if (macroId == ltTWOCOLITEMRULED)
-            TexOutput("\\brdrb\\brdrs\\brdrw15\\brsp20 ");
-          TexOutput("\\par\\pard\n");
+            TexOutput(_T("\\brdrb\\brdrs\\brdrw15\\brsp20 "));
+          TexOutput(_T("\\par\\pard\n"));
           issuedNewParagraph = 1;
           WriteEnvironmentStyles();
         }
@@ -3826,7 +3836,6 @@ bool RTFOnArgument(int macroId, int arg_no, bool start)
       }
     }
     return TRUE;
-    break;
   }
   /*
    * Accents
@@ -3836,40 +3845,40 @@ bool RTFOnArgument(int macroId, int arg_no, bool start)
   {
     if (start)
     {
-      char *val = GetArgData();
+      wxChar *val = GetArgData();
       if (val)
       {
         switch (val[0])
         {
           case 'a':
-           TexOutput("\\'e0");
+           TexOutput(_T("\\'e0"));
            break;
           case 'e':
-           TexOutput("\\'e8");
+           TexOutput(_T("\\'e8"));
            break;
           case 'i':
-           TexOutput("\\'ec");
+           TexOutput(_T("\\'ec"));
            break;
           case 'o':
-           TexOutput("\\'f2");
+           TexOutput(_T("\\'f2"));
            break;
           case 'u':
-           TexOutput("\\'f9");
+           TexOutput(_T("\\'f9"));
            break;
           case 'A':
-           TexOutput("\\'c0");
+           TexOutput(_T("\\'c0"));
            break;
           case 'E':
-           TexOutput("\\'c8");
+           TexOutput(_T("\\'c8"));
            break;
           case 'I':
-           TexOutput("\\'cc");
+           TexOutput(_T("\\'cc"));
            break;
           case 'O':
-           TexOutput("\\'d2");
+           TexOutput(_T("\\'d2"));
            break;
           case 'U':
-           TexOutput("\\'d9");
+           TexOutput(_T("\\'d9"));
            break;
           default:
            break;
@@ -3877,52 +3886,51 @@ bool RTFOnArgument(int macroId, int arg_no, bool start)
       }
     }
     return FALSE;
-    break;
   }
   case ltACCENT_ACUTE:
   {
     if (start)
     {
-      char *val = GetArgData();
+      wxChar *val = GetArgData();
       if (val)
       {
         switch (val[0])
         {
           case 'a':
-           TexOutput("\\'e1");
+           TexOutput(_T("\\'e1"));
            break;
           case 'e':
-           TexOutput("\\'e9");
+           TexOutput(_T("\\'e9"));
            break;
           case 'i':
-           TexOutput("\\'ed");
+           TexOutput(_T("\\'ed"));
            break;
           case 'o':
-           TexOutput("\\'f3");
+           TexOutput(_T("\\'f3"));
            break;
           case 'u':
-           TexOutput("\\'fa");
+           TexOutput(_T("\\'fa"));
            break;
           case 'y':
-           TexOutput("\\'fd");
+           TexOutput(_T("\\'fd"));
            break;
           case 'A':
-           TexOutput("\\'c1");
+           TexOutput(_T("\\'c1"));
            break;
           case 'E':
-           TexOutput("\\'c9");
+           TexOutput(_T("\\'c9"));
            break;
           case 'I':
-           TexOutput("\\'cd");
+           TexOutput(_T("\\'cd"));
            break;
           case 'O':
-           TexOutput("\\'d3");
+           TexOutput(_T("\\'d3"));
            break;
           case 'U':
-           TexOutput("\\'da");
+           TexOutput(_T("\\'da"));
            break;
           case 'Y':
-           TexOutput("\\'dd");
+           TexOutput(_T("\\'dd"));
            break;
           default:
            break;
@@ -3930,46 +3938,45 @@ bool RTFOnArgument(int macroId, int arg_no, bool start)
       }
     }
     return FALSE;
-    break;
   }
   case ltACCENT_CARET:
   {
     if (start)
     {
-      char *val = GetArgData();
+      wxChar *val = GetArgData();
       if (val)
       {
         switch (val[0])
         {
           case 'a':
-           TexOutput("\\'e2");
+           TexOutput(_T("\\'e2"));
            break;
           case 'e':
-           TexOutput("\\'ea");
+           TexOutput(_T("\\'ea"));
            break;
           case 'i':
-           TexOutput("\\'ee");
+           TexOutput(_T("\\'ee"));
            break;
           case 'o':
-           TexOutput("\\'f4");
+           TexOutput(_T("\\'f4"));
            break;
           case 'u':
-           TexOutput("\\'fb");
+           TexOutput(_T("\\'fb"));
            break;
           case 'A':
-           TexOutput("\\'c2");
+           TexOutput(_T("\\'c2"));
            break;
           case 'E':
-           TexOutput("\\'ca");
+           TexOutput(_T("\\'ca"));
            break;
           case 'I':
-           TexOutput("\\'ce");
+           TexOutput(_T("\\'ce"));
            break;
           case 'O':
-           TexOutput("\\'d4");
+           TexOutput(_T("\\'d4"));
            break;
           case 'U':
-           TexOutput("\\'db");
+           TexOutput(_T("\\'db"));
            break;
           default:
            break;
@@ -3977,37 +3984,36 @@ bool RTFOnArgument(int macroId, int arg_no, bool start)
       }
     }
     return FALSE;
-    break;
   }
   case ltACCENT_TILDE:
   {
     if (start)
     {
-      char *val = GetArgData();
+      wxChar *val = GetArgData();
       if (val)
       {
         switch (val[0])
         {
           case 'a':
-           TexOutput("\\'e3");
+           TexOutput(_T("\\'e3"));
            break;
           case ' ':
-           TexOutput("~");
+           TexOutput(_T("~"));
            break;
           case 'n':
-           TexOutput("\\'f1");
+           TexOutput(_T("\\'f1"));
            break;
           case 'o':
-           TexOutput("\\'f5");
+           TexOutput(_T("\\'f5"));
            break;
           case 'A':
-           TexOutput("\\'c3");
+           TexOutput(_T("\\'c3"));
            break;
           case 'N':
-           TexOutput("\\'d1");
+           TexOutput(_T("\\'d1"));
            break;
           case 'O':
-           TexOutput("\\'d5");
+           TexOutput(_T("\\'d5"));
            break;
           default:
            break;
@@ -4015,55 +4021,54 @@ bool RTFOnArgument(int macroId, int arg_no, bool start)
       }
     }
     return FALSE;
-    break;
   }
   case ltACCENT_UMLAUT:
   {
     if (start)
     {
-      char *val = GetArgData();
+      wxChar *val = GetArgData();
       if (val)
       {
         switch (val[0])
         {
           case 'a':
-           TexOutput("\\'e4");
+           TexOutput(_T("\\'e4"));
            break;
           case 'e':
-           TexOutput("\\'eb");
+           TexOutput(_T("\\'eb"));
            break;
           case 'i':
-           TexOutput("\\'ef");
+           TexOutput(_T("\\'ef"));
            break;
           case 'o':
-           TexOutput("\\'f6");
+           TexOutput(_T("\\'f6"));
            break;
           case 'u':
-           TexOutput("\\'fc");
+           TexOutput(_T("\\'fc"));
            break;
           case 's':
-           TexOutput("\\'df");
+           TexOutput(_T("\\'df"));
            break;
           case 'y':
-           TexOutput("\\'ff");
+           TexOutput(_T("\\'ff"));
            break;
           case 'A':
-           TexOutput("\\'c4");
+           TexOutput(_T("\\'c4"));
            break;
           case 'E':
-           TexOutput("\\'cb");
+           TexOutput(_T("\\'cb"));
            break;
           case 'I':
-           TexOutput("\\'cf");
+           TexOutput(_T("\\'cf"));
            break;
           case 'O':
-           TexOutput("\\'d6");
+           TexOutput(_T("\\'d6"));
            break;
           case 'U':
-           TexOutput("\\'dc");
+           TexOutput(_T("\\'dc"));
            break;
           case 'Y':
-           TexOutput("\\'df");
+           TexOutput(_T("\\'df"));
            break;
           default:
            break;
@@ -4071,22 +4076,21 @@ bool RTFOnArgument(int macroId, int arg_no, bool start)
       }
     }
     return FALSE;
-    break;
   }
   case ltACCENT_DOT:
   {
     if (start)
     {
-      char *val = GetArgData();
+      wxChar *val = GetArgData();
       if (val)
       {
         switch (val[0])
         {
           case 'a':
-           TexOutput("\\'e5");
+           TexOutput(_T("\\'e5"));
            break;
           case 'A':
-           TexOutput("\\'c5");
+           TexOutput(_T("\\'c5"));
            break;
           default:
            break;
@@ -4094,22 +4098,21 @@ bool RTFOnArgument(int macroId, int arg_no, bool start)
       }
     }
     return FALSE;
-    break;
   }
   case ltACCENT_CADILLA:
   {
     if (start)
     {
-      char *val = GetArgData();
+      wxChar *val = GetArgData();
       if (val)
       {
         switch (val[0])
         {
           case 'c':
-           TexOutput("\\'e7");
+           TexOutput(_T("\\'e7"));
            break;
           case 'C':
-           TexOutput("\\'c7");
+           TexOutput(_T("\\'c7"));
            break;
           default:
            break;
@@ -4117,11 +4120,10 @@ bool RTFOnArgument(int macroId, int arg_no, bool start)
       }
     }
     return FALSE;
-    break;
   }
   case ltFOOTNOTE:
   {
-    static char *helpTopic = NULL;
+    static wxChar *helpTopic = NULL;
     static FILE *savedOutput = NULL;
     if (winHelp)
     {
@@ -4129,30 +4131,30 @@ bool RTFOnArgument(int macroId, int arg_no, bool start)
       {
         if (start)
         {
-          OnInform("Consider using \\footnotepopup instead of \\footnote.");
+          OnInform(_T("Consider using \\footnotepopup instead of \\footnote."));
           footnoteCount ++;
-          char footBuf[20];
-          sprintf(footBuf, "(%d)", footnoteCount);
+          wxChar footBuf[20];
+          wxSprintf(footBuf, _T("(%d)"), footnoteCount);
 
-          TexOutput(" {\\ul ");
+          TexOutput(_T(" {\\ul "));
           TexOutput(footBuf);
-          TexOutput("}");
+          TexOutput(_T("}"));
           helpTopic = FindTopicName(NULL);
-          TexOutput("{\\v ");
+          TexOutput(_T("{\\v "));
 
           // Remove green colour/underlining if specified
           if (!hotSpotUnderline && !hotSpotColour)
-            TexOutput("%");
+            TexOutput(_T("%"));
           else if (!hotSpotColour)
-            TexOutput("*");
+            TexOutput(_T("*"));
 
           TexOutput(helpTopic);
-          TexOutput("}");
+          TexOutput(_T("}"));
 
-          fprintf(Popups, "\\page\n");
-//          fprintf(Popups, "\n${\\footnote }"); // No title
-          fprintf(Popups, "\n#{\\footnote %s}\n", helpTopic);
-          fprintf(Popups, "+{\\footnote %s}\n", GetBrowseString());
+          wxFprintf(Popups, _T("\\page\n"));
+//          wxFprintf(Popups, _T("\n${\\footnote }")); // No title
+          wxFprintf(Popups, _T("\n#{\\footnote %s}\n"), helpTopic);
+          wxFprintf(Popups, _T("+{\\footnote %s}\n"), GetBrowseString());
           savedOutput = CurrentOutput1;
           SetCurrentOutput(Popups);
        }
@@ -4168,19 +4170,18 @@ bool RTFOnArgument(int macroId, int arg_no, bool start)
     {
       if (start)
       {
-        TexOutput(" {\\super \\chftn{\\footnote \\fs20 {\\super \\chftn}", TRUE);
+        TexOutput(_T(" {\\super \\chftn{\\footnote \\fs20 {\\super \\chftn}"), TRUE);
       }
       else
       {
-        TexOutput("}}", TRUE);
+        TexOutput(_T("}}"), TRUE);
       }
       return TRUE;
     }
-    break;
   }
   case ltFOOTNOTEPOPUP:
   {
-    static char *helpTopic = NULL;
+    static wxChar *helpTopic = NULL;
     static FILE *savedOutput = NULL;
     if (winHelp)
     {
@@ -4188,9 +4189,9 @@ bool RTFOnArgument(int macroId, int arg_no, bool start)
       {
         if (start)
         {
-          TexOutput("{\\ul ");
+          TexOutput(_T("{\\ul "));
        }
-       else TexOutput("}");
+       else TexOutput(_T("}"));
        return TRUE;
       }
       else if (arg_no == 2)
@@ -4198,21 +4199,21 @@ bool RTFOnArgument(int macroId, int arg_no, bool start)
         if (start)
         {
           helpTopic = FindTopicName(NULL);
-          TexOutput("{\\v ");
+          TexOutput(_T("{\\v "));
 
           // Remove green colour/underlining if specified
           if (!hotSpotUnderline && !hotSpotColour)
-            TexOutput("%");
+            TexOutput(_T("%"));
           else if (!hotSpotColour)
-            TexOutput("*");
+            TexOutput(_T("*"));
 
           TexOutput(helpTopic);
-          TexOutput("}");
+          TexOutput(_T("}"));
 
-          fprintf(Popups, "\\page\n");
-//          fprintf(Popups, "\n${\\footnote }"); // No title
-          fprintf(Popups, "\n#{\\footnote %s}\n", helpTopic);
-          fprintf(Popups, "+{\\footnote %s}\n", GetBrowseString());
+          wxFprintf(Popups, _T("\\page\n"));
+//          wxFprintf(Popups, _T("\n${\\footnote }")); // No title
+          wxFprintf(Popups, _T("\n#{\\footnote %s}\n"), helpTopic);
+          wxFprintf(Popups, _T("+{\\footnote %s}\n"), GetBrowseString());
           savedOutput = CurrentOutput1;
           SetCurrentOutput(Popups);
         }
@@ -4229,11 +4230,11 @@ bool RTFOnArgument(int macroId, int arg_no, bool start)
         return TRUE;
       if (start)
       {
-        TexOutput(" {\\super \\chftn{\\footnote \\fs20 {\\super \\chftn}", TRUE);
+        TexOutput(_T(" {\\super \\chftn{\\footnote \\fs20 {\\super \\chftn}"), TRUE);
       }
       else
       {
-        TexOutput("}}", TRUE);
+        TexOutput(_T("}}"), TRUE);
       }
       return TRUE;
     }
@@ -4245,7 +4246,6 @@ bool RTFOnArgument(int macroId, int arg_no, bool start)
       return FALSE;
     else
       return TRUE;
-    break;
   }
   case ltSETHEADER:
   {
@@ -4261,32 +4261,32 @@ bool RTFOnArgument(int macroId, int arg_no, bool start)
       {
         case 1:
           LeftHeaderEven = GetArgChunk();
-          if (strlen(GetArgData(LeftHeaderEven)) == 0)
+          if (wxStrlen(GetArgData(LeftHeaderEven)) == 0)
             LeftHeaderEven = NULL;
           break;
         case 2:
           CentreHeaderEven = GetArgChunk();
-          if (strlen(GetArgData(CentreHeaderEven)) == 0)
+          if (wxStrlen(GetArgData(CentreHeaderEven)) == 0)
             CentreHeaderEven = NULL;
           break;
         case 3:
           RightHeaderEven = GetArgChunk();
-          if (strlen(GetArgData(RightHeaderEven)) == 0)
+          if (wxStrlen(GetArgData(RightHeaderEven)) == 0)
             RightHeaderEven = NULL;
           break;
         case 4:
           LeftHeaderOdd = GetArgChunk();
-          if (strlen(GetArgData(LeftHeaderOdd)) == 0)
+          if (wxStrlen(GetArgData(LeftHeaderOdd)) == 0)
             LeftHeaderOdd = NULL;
           break;
         case 5:
           CentreHeaderOdd = GetArgChunk();
-          if (strlen(GetArgData(CentreHeaderOdd)) == 0)
+          if (wxStrlen(GetArgData(CentreHeaderOdd)) == 0)
             CentreHeaderOdd = NULL;
           break;
         case 6:
           RightHeaderOdd = GetArgChunk();
-          if (strlen(GetArgData(RightHeaderOdd)) == 0)
+          if (wxStrlen(GetArgData(RightHeaderOdd)) == 0)
             RightHeaderOdd = NULL;
           OutputRTFHeaderCommands();
           break;
@@ -4295,7 +4295,6 @@ bool RTFOnArgument(int macroId, int arg_no, bool start)
       }
     }
     return FALSE;
-    break;
   }
   case ltSETFOOTER:
   {
@@ -4311,32 +4310,32 @@ bool RTFOnArgument(int macroId, int arg_no, bool start)
       {
         case 1:
           LeftFooterEven = GetArgChunk();
-          if (strlen(GetArgData(LeftFooterEven)) == 0)
+          if (wxStrlen(GetArgData(LeftFooterEven)) == 0)
             LeftFooterEven = NULL;
           break;
         case 2:
           CentreFooterEven = GetArgChunk();
-          if (strlen(GetArgData(CentreFooterEven)) == 0)
+          if (wxStrlen(GetArgData(CentreFooterEven)) == 0)
             CentreFooterEven = NULL;
           break;
         case 3:
           RightFooterEven = GetArgChunk();
-          if (strlen(GetArgData(RightFooterEven)) == 0)
+          if (wxStrlen(GetArgData(RightFooterEven)) == 0)
             RightFooterEven = NULL;
           break;
         case 4:
           LeftFooterOdd = GetArgChunk();
-          if (strlen(GetArgData(LeftFooterOdd)) == 0)
+          if (wxStrlen(GetArgData(LeftFooterOdd)) == 0)
             LeftFooterOdd = NULL;
           break;
         case 5:
           CentreFooterOdd = GetArgChunk();
-          if (strlen(GetArgData(CentreFooterOdd)) == 0)
+          if (wxStrlen(GetArgData(CentreFooterOdd)) == 0)
             CentreFooterOdd = NULL;
           break;
         case 6:
           RightFooterOdd = GetArgChunk();
-          if (strlen(GetArgData(RightFooterOdd)) == 0)
+          if (wxStrlen(GetArgData(RightFooterOdd)) == 0)
             RightFooterOdd = NULL;
           OutputRTFFooterCommands();
           break;
@@ -4345,7 +4344,6 @@ bool RTFOnArgument(int macroId, int arg_no, bool start)
       }
     }
     return FALSE;
-    break;
   }
   case ltMARKRIGHT:
   {
@@ -4359,13 +4357,12 @@ bool RTFOnArgument(int macroId, int arg_no, bool start)
       LeftHeaderEven = NULL;
       CentreHeaderEven = NULL;
       RightHeaderEven = NULL;
-      OnInform("Consider using setheader/setfooter rather than markright.");
+      OnInform(_T("Consider using setheader/setfooter rather than markright."));
     }
     RTFOnArgument(ltSETHEADER, 4, start);
     if (!start)
       OutputRTFHeaderCommands();
     return FALSE;
-    break;
   }
   case ltMARKBOTH:
   {
@@ -4383,10 +4380,9 @@ bool RTFOnArgument(int macroId, int arg_no, bool start)
           LeftHeaderEven = NULL;
           CentreHeaderEven = NULL;
           RightHeaderEven = NULL;
-          OnInform("Consider using setheader/setfooter rather than markboth.");
+          OnInform(_T("Consider using setheader/setfooter rather than markboth."));
         }
         return RTFOnArgument(ltSETHEADER, 1, start);
-        break;
       }
       case 2:
       {
@@ -4394,7 +4390,6 @@ bool RTFOnArgument(int macroId, int arg_no, bool start)
         if (!start)
           OutputRTFHeaderCommands();
         return FALSE;
-        break;
       }
     }
     break;
@@ -4409,16 +4404,15 @@ bool RTFOnArgument(int macroId, int arg_no, bool start)
     if (winHelp) return FALSE;
     if (start)
     {
-      TexOutput("\\pgnrestart");
-      char *data = GetArgData();
+      TexOutput(_T("\\pgnrestart"));
+      wxChar *data = GetArgData();
       if (currentNumberStyle) delete[] currentNumberStyle;
       currentNumberStyle = copystring(data);
       OutputNumberStyle(currentNumberStyle);
       
-      TexOutput("\n");
+      TexOutput(_T("\n"));
     }
     return FALSE;
-    break;
   }
   case ltTWOCOLUMN:
   {
@@ -4431,7 +4425,7 @@ bool RTFOnArgument(int macroId, int arg_no, bool start)
   {
     if (start)
     {
-      char *val = GetArgData();
+      wxChar *val = GetArgData();
       currentItemSep = ParseUnitArgument(val);
       return FALSE;
     }
@@ -4440,18 +4434,17 @@ bool RTFOnArgument(int macroId, int arg_no, bool start)
   case ltEVENSIDEMARGIN:
   {
     return FALSE;
-    break;
   }
   case ltODDSIDEMARGIN:
   {
     if (start)
     {
-      char *val = GetArgData();
+      wxChar *val = GetArgData();
       int twips = (int)(20*ParseUnitArgument(val));
       // Add an inch since in LaTeX it's specified minus an inch
       twips += 1440;
       CurrentLeftMarginOdd = twips;
-      sprintf(buf, "\\margl%d\n", twips);
+      wxSprintf(buf, _T("\\margl%d\n"), twips);
       TexOutput(buf);
 
       CurrentMarginParX = CurrentLeftMarginOdd + CurrentTextWidth + CurrentMarginParSep;
@@ -4462,7 +4455,7 @@ bool RTFOnArgument(int macroId, int arg_no, bool start)
   {
     if (start)
     {
-      char *val = GetArgData();
+      wxChar *val = GetArgData();
       int twips = (int)(20*ParseUnitArgument(val));
       CurrentMarginParWidth = twips;
     }
@@ -4472,7 +4465,7 @@ bool RTFOnArgument(int macroId, int arg_no, bool start)
   {
     if (start)
     {
-      char *val = GetArgData();
+      wxChar *val = GetArgData();
       int twips = (int)(20*ParseUnitArgument(val));
       CurrentMarginParSep = twips;
       CurrentMarginParX = CurrentLeftMarginOdd + CurrentTextWidth + CurrentMarginParSep;
@@ -4483,7 +4476,7 @@ bool RTFOnArgument(int macroId, int arg_no, bool start)
   {
     if (start)
     {
-      char *val = GetArgData();
+      wxChar *val = GetArgData();
       int twips = (int)(20*ParseUnitArgument(val));
       CurrentTextWidth = twips;
 
@@ -4491,7 +4484,7 @@ bool RTFOnArgument(int macroId, int arg_no, bool start)
       CurrentRightMarginOdd = PageWidth - CurrentTextWidth - CurrentLeftMarginOdd;
       CurrentRightMarginEven = PageWidth - CurrentTextWidth - CurrentLeftMarginEven;
       CurrentMarginParX = CurrentLeftMarginOdd + CurrentTextWidth + CurrentMarginParSep;
-      sprintf(buf, "\\margr%d\n", CurrentRightMarginOdd);
+      wxSprintf(buf, _T("\\margr%d\n"), CurrentRightMarginOdd);
       TexOutput(buf);
     }
     return FALSE;
@@ -4503,12 +4496,12 @@ bool RTFOnArgument(int macroId, int arg_no, bool start)
     {
       if (winHelp)
       {
-        TexOutput("\\box\n");
-        PushEnvironmentStyle("\\box");
+        TexOutput(_T("\\box\n"));
+        PushEnvironmentStyle(_T("\\box"));
       }
       else
       {
-        sprintf(buf, "\\phpg\\posx%d\\absw%d\n", CurrentMarginParX, CurrentMarginParWidth);
+        wxSprintf(buf, _T("\\phpg\\posx%d\\absw%d\n"), CurrentMarginParX, CurrentMarginParWidth);
         TexOutput(buf);
       }
       return TRUE;
@@ -4517,12 +4510,12 @@ bool RTFOnArgument(int macroId, int arg_no, bool start)
     {
       if (winHelp)
       {
-        TexOutput("\\par\\pard\n");
+        TexOutput(_T("\\par\\pard\n"));
         PopEnvironmentStyle();
         WriteEnvironmentStyles();
       }
       else
-        TexOutput("\\par\\pard\n");
+        TexOutput(_T("\\par\\pard\n"));
       issuedNewParagraph = 1;
     }
     return FALSE;
@@ -4533,8 +4526,8 @@ bool RTFOnArgument(int macroId, int arg_no, bool start)
     {
       if (winHelp)
       {
-        TexOutput("\\box\n");
-        PushEnvironmentStyle("\\box");
+        TexOutput(_T("\\box\n"));
+        PushEnvironmentStyle(_T("\\box"));
       }
       else
       {
@@ -4544,12 +4537,12 @@ bool RTFOnArgument(int macroId, int arg_no, bool start)
           // mirror mode, on an even (left-hand) page.
           int x = PageWidth - CurrentRightMarginOdd - CurrentMarginParWidth - CurrentMarginParSep
                     - CurrentTextWidth + GutterWidth;
-          sprintf(buf, "\\phpg\\posx%d\\absw%d\n", x, CurrentMarginParWidth);
+          wxSprintf(buf, _T("\\phpg\\posx%d\\absw%d\n"), x, CurrentMarginParWidth);
           TexOutput(buf);
         }
         else
         {
-          sprintf(buf, "\\phpg\\posx%d\\absw%d\n", CurrentMarginParX, CurrentMarginParWidth);
+          wxSprintf(buf, _T("\\phpg\\posx%d\\absw%d\n"), CurrentMarginParX, CurrentMarginParWidth);
           TexOutput(buf);
         }
       }
@@ -4559,13 +4552,13 @@ bool RTFOnArgument(int macroId, int arg_no, bool start)
     {
       if (winHelp)
       {
-        TexOutput("\\par\\pard\n");
+        TexOutput(_T("\\par\\pard\n"));
         PopEnvironmentStyle();
         WriteEnvironmentStyles();
       }
       else
         issuedNewParagraph = 1;
-      TexOutput("\\par\\pard\n");
+      TexOutput(_T("\\par\\pard\n"));
     }
     return FALSE;
   }
@@ -4573,23 +4566,21 @@ bool RTFOnArgument(int macroId, int arg_no, bool start)
   {
     if (start)
     {
-      char *val = GetArgData();
+      wxChar *val = GetArgData();
       int twips = (int)(20*ParseUnitArgument(val));
       TwoColWidthA = twips;
     }
     return FALSE;
-    break;
   }
   case ltTWOCOLWIDTHB:
   {
     if (start)
     {
-      char *val = GetArgData();
+      wxChar *val = GetArgData();
       int twips = (int)(20*ParseUnitArgument(val));
       TwoColWidthB = twips;
     }
     return FALSE;
-    break;
   }
   case ltROW:
   case ltRULEDROW:
@@ -4600,7 +4591,7 @@ bool RTFOnArgument(int macroId, int arg_no, bool start)
 
       if (!compatibilityMode || (currentRowNumber > 0))
       {
-      TexOutput("\\pard\\intbl");
+      TexOutput(_T("\\pard\\intbl"));
 
       if (macroId == ltRULEDROW)
         ruleBottom = 1;
@@ -4609,31 +4600,31 @@ bool RTFOnArgument(int macroId, int arg_no, bool start)
         currentWidth += TableData[i].width;
         if (ruleTop == 1)
         {
-          TexOutput("\\clbrdrt\\brdrs\\brdrw15");
+          TexOutput(_T("\\clbrdrt\\brdrs\\brdrw15"));
         }
         else if (ruleTop > 1)
         {
-          TexOutput("\\clbrdrt\\brdrdb\\brdrw15");
+          TexOutput(_T("\\clbrdrt\\brdrdb\\brdrw15"));
         }
         if (ruleBottom == 1)
         {
-          TexOutput("\\clbrdrb\\brdrs\\brdrw15");
+          TexOutput(_T("\\clbrdrb\\brdrs\\brdrw15"));
         }
         else if (ruleBottom > 1)
         {
-          TexOutput("\\clbrdrb\\brdrdb\\brdrw15");
+          TexOutput(_T("\\clbrdrb\\brdrdb\\brdrw15"));
         }
 
         if (TableData[i].rightBorder)
-          TexOutput("\\clbrdrr\\brdrs\\brdrw15");
+          TexOutput(_T("\\clbrdrr\\brdrs\\brdrw15"));
 
         if (TableData[i].leftBorder)
-          TexOutput("\\clbrdrl\\brdrs\\brdrw15");
+          TexOutput(_T("\\clbrdrl\\brdrs\\brdrw15"));
           
-        sprintf(buf, "\\cellx%d", currentWidth);
+        wxSprintf(buf, _T("\\cellx%d"), currentWidth);
         TexOutput(buf);
       }
-      TexOutput("\\pard\\intbl\n");
+      TexOutput(_T("\\pard\\intbl\n"));
       }
       ruleTop = 0;
       ruleBottom = 0;
@@ -4642,8 +4633,8 @@ bool RTFOnArgument(int macroId, int arg_no, bool start)
     }
     else
     {
-//      TexOutput("\\cell\\row\\trowd\\trgaph108\\trleft-108\n");
-      TexOutput("\\cell\\row\\trowd\\trgaph108\n");
+//      TexOutput(_T("\\cell\\row\\trowd\\trgaph108\\trleft-108\n"));
+      TexOutput(_T("\\cell\\row\\trowd\\trgaph108\n"));
     }
     break;
   }
@@ -4656,9 +4647,8 @@ bool RTFOnArgument(int macroId, int arg_no, bool start)
       {
         case 1:
         {
-          noMultiColumns = atoi(GetArgData());
+          noMultiColumns = wxAtoi(GetArgData());
           return FALSE;
-          break;
         }
         case 2:
         {
@@ -4675,7 +4665,7 @@ bool RTFOnArgument(int macroId, int arg_no, bool start)
       if (arg_no == 3)
       {
         for (int i = 1; i < noMultiColumns; i ++)
-          TexOutput("\\cell");
+          TexOutput(_T("\\cell"));
       }
     }
     break;
@@ -4685,7 +4675,7 @@ bool RTFOnArgument(int macroId, int arg_no, bool start)
     if (start && (arg_no == 1))
     {
 //      indentLevel ++;
-//      TexOutput("\\fi0\n");
+//      TexOutput(_T("\\fi0\n"));
       int oldIndent = 0;
       wxNode *node = itemizeStack.GetFirst();
       if (node)
@@ -4697,7 +4687,7 @@ bool RTFOnArgument(int macroId, int arg_no, bool start)
       ItemizeStruc *struc = new ItemizeStruc(LATEX_INDENT, indentSize);
       itemizeStack.Insert(struc);
       
-      sprintf(buf, "\\tx%d\\li%d ", indentSize, indentSize);
+      wxSprintf(buf, _T("\\tx%d\\li%d "), indentSize, indentSize);
       PushEnvironmentStyle(buf);
       TexOutput(buf);
       return FALSE;
@@ -4713,13 +4703,12 @@ bool RTFOnArgument(int macroId, int arg_no, bool start)
       }
       if (itemizeStack.GetCount() == 0)
       {
-        TexOutput("\\par\\pard\n");
+        TexOutput(_T("\\par\\pard\n"));
         issuedNewParagraph = 1;
         WriteEnvironmentStyles();
       }
     }
     return TRUE;
-    break;
   }
 /*
   case ltSIZEDBOX:
@@ -4741,8 +4730,8 @@ bool RTFOnArgument(int macroId, int arg_no, bool start)
       ItemizeStruc *struc = new ItemizeStruc(LATEX_INDENT, indentSize);
       itemizeStack.Insert(struc);
       
-      sprintf(buf, "\\tx%d\\li%d\\lr%d\\box%s ", indentSize, indentSize, indentSizeRight,
-        ((macroId == ltCENTEREDBOX) ? "\\brdrs" : "\\brdrdb"));
+      wxSprintf(buf, _T("\\tx%d\\li%d\\lr%d\\box%s "), indentSize, indentSize, indentSizeRight,
+        ((macroId == ltCENTEREDBOX) ? _T("\\brdrs") : _T("\\brdrdb")));
       PushEnvironmentStyle(buf);
       TexOutput(buf);
       return FALSE;
@@ -4758,7 +4747,7 @@ bool RTFOnArgument(int macroId, int arg_no, bool start)
       }
       if (itemizeStack.Number() == 0)
       {
-        TexOutput("\\par\\pard\n");
+        TexOutput(_T("\\par\\pard\n"));
         issuedNewParagraph = 1;
         WriteEnvironmentStyles();
       }
@@ -4774,13 +4763,13 @@ bool RTFOnArgument(int macroId, int arg_no, bool start)
     {
       if (MinorDocumentStyleString)
       {
-        if (StringMatch("twoside", MinorDocumentStyleString))
+        if (StringMatch(_T("twoside"), MinorDocumentStyleString))
           // Mirror margins, switch on odd/even headers & footers, and break sections at odd pages
-          TexOutput("\\margmirror\\facingp\\sbkodd");
-        if (StringMatch("twocolumn", MinorDocumentStyleString))
-          TexOutput("\\cols2");
+          TexOutput(_T("\\margmirror\\facingp\\sbkodd"));
+        if (StringMatch(_T("twocolumn"), MinorDocumentStyleString))
+          TexOutput(_T("\\cols2"));
       }
-      TexOutput("\n");
+      TexOutput(_T("\n"));
     }
     return FALSE;
   }
@@ -4789,8 +4778,8 @@ bool RTFOnArgument(int macroId, int arg_no, bool start)
   {
     if (!start)
     {
-      char *text = GetArgData();
-      if (strcmp(text, "yes") == 0 || strcmp(text, "on") == 0 || strcmp(text, "ok") == 0)
+      wxChar *text = GetArgData();
+      if (wxStrcmp(text, _T("yes")) == 0 || wxStrcmp(text, _T("on")) == 0 || wxStrcmp(text, _T("ok")) == 0)
         hotSpotColour = TRUE;
       else
         hotSpotColour = FALSE;
@@ -4801,8 +4790,8 @@ bool RTFOnArgument(int macroId, int arg_no, bool start)
   {
     if (!start)
     {
-      char *text = GetArgData();
-      if (strcmp(text, "yes") == 0 || strcmp(text, "on") == 0 || strcmp(text, "ok") == 0)
+      wxChar *text = GetArgData();
+      if (wxStrcmp(text, _T("yes")) == 0 || wxStrcmp(text, _T("on")) == 0 || wxStrcmp(text, _T("ok")) == 0)
         bitmapTransparency = TRUE;
       else
         bitmapTransparency = FALSE;
@@ -4813,8 +4802,8 @@ bool RTFOnArgument(int macroId, int arg_no, bool start)
   {
     if (!start)
     {
-      char *text = GetArgData();
-      if (strcmp(text, "yes") == 0 || strcmp(text, "on") == 0 || strcmp(text, "ok") == 0)
+      wxChar *text = GetArgData();
+      if (wxStrcmp(text, _T("yes")) == 0 || wxStrcmp(text, _T("on")) == 0 || wxStrcmp(text, _T("ok")) == 0)
         hotSpotUnderline = TRUE;
       else
         hotSpotUnderline = FALSE;
@@ -4825,25 +4814,24 @@ bool RTFOnArgument(int macroId, int arg_no, bool start)
   {
     if (arg_no == 1 && start)
     {
-      char *citeKey = GetArgData();
+      wxChar *citeKey = GetArgData();
       TexRef *ref = (TexRef *)TexReferences.Get(citeKey);
       if (ref)
       {
         if (ref->sectionNumber) delete[] ref->sectionNumber;
-        sprintf(buf, "[%d]", citeCount);
+        wxSprintf(buf, _T("[%d]"), citeCount);
         ref->sectionNumber = copystring(buf);
       }
 
-      TexOutput("\\li260\\fi-260 "); // Indent from 2nd line
-      sprintf(buf, "{\\b [%d]} ", citeCount);
+      TexOutput(_T("\\li260\\fi-260 ")); // Indent from 2nd line
+      wxSprintf(buf, _T("{\\b [%d]} "), citeCount);
       TexOutput(buf);
       citeCount ++;
       return FALSE;
     }
     if (arg_no == 2 && !start)
-      TexOutput("\\par\\pard\\par\n\n");
+      TexOutput(_T("\\par\\pard\\par\n\n"));
     return TRUE;
-    break;
   }
   case ltTHEBIBLIOGRAPHY:
   {
@@ -4855,12 +4843,12 @@ bool RTFOnArgument(int macroId, int arg_no, bool start)
 
       if (!winHelp)
       {
-        fprintf(Chapters, "\\sect\\pgncont\\titlepg\n");
+        wxFprintf(Chapters, _T("\\sect\\pgncont\\titlepg\n"));
 
         // If a non-custom page style, we generate the header now.
-        if (PageStyle && (strcmp(PageStyle, "plain") == 0 ||
-                          strcmp(PageStyle, "empty") == 0 ||
-                          strcmp(PageStyle, "headings") == 0))
+        if (PageStyle && (wxStrcmp(PageStyle, _T("plain")) == 0 ||
+                          wxStrcmp(PageStyle, _T("empty")) == 0 ||
+                          wxStrcmp(PageStyle, _T("headings")) == 0))
         {
           OutputRTFHeaderCommands();
           OutputRTFFooterCommands();
@@ -4871,49 +4859,48 @@ bool RTFOnArgument(int macroId, int arg_no, bool start)
         SetCurrentOutput(Contents);
       }
       else
-        fprintf(Chapters, "\\page\n");
+        wxFprintf(Chapters, _T("\\page\n"));
 
       if (winHelp)
-        fprintf(Contents, "\n{\\uldb %s}", ReferencesNameString);
+        wxFprintf(Contents, _T("\n{\\uldb %s}"), ReferencesNameString);
       else
-        fprintf(Contents, "\\par\n\\pard{\\b %s}", ReferencesNameString);
+        wxFprintf(Contents, _T("\\par\n\\pard{\\b %s}"), ReferencesNameString);
 
       startedSections = TRUE;
 
       if (winHelp)
-        fprintf(Chapters, "\n${\\footnote %s}", ReferencesNameString);
+        wxFprintf(Chapters, _T("\n${\\footnote %s}"), ReferencesNameString);
 
-      char *topicName = "bibliography";
+      wxChar *topicName = _T("bibliography");
 
       if (winHelp)
-        fprintf(Contents, "{\\v %s}\\par\\pard\n", topicName);
+        wxFprintf(Contents, _T("{\\v %s}\\par\\pard\n"), topicName);
       else
-        fprintf(Contents, "\\par\\par\\pard\n");
+        wxFprintf(Contents, _T("\\par\\par\\pard\n"));
 
       if (winHelp)
       {
-        fprintf(Chapters, "\n#{\\footnote %s}\n", topicName);
-        fprintf(Chapters, "+{\\footnote %s}\n", GetBrowseString());
-        fprintf(Chapters, "K{\\footnote {K} %s}\n", ReferencesNameString);
+        wxFprintf(Chapters, _T("\n#{\\footnote %s}\n"), topicName);
+        wxFprintf(Chapters, _T("+{\\footnote %s}\n"), GetBrowseString());
+        wxFprintf(Chapters, _T("K{\\footnote {K} %s}\n"), ReferencesNameString);
         GenerateKeywordsForTopic(topicName);
         if (useUpButton)
         {
-          fprintf(Chapters, "!{\\footnote EnableButton(\"Up\");ChangeButtonBinding(\"Up\", \"JumpId(`%s.hlp', `%s')\")}\n",
+          wxFprintf(Chapters, _T("!{\\footnote EnableButton(\"Up\");ChangeButtonBinding(\"Up\", \"JumpId(`%s.hlp', `%s')\")}\n"),
                wxFileNameFromPath(FileRoot), "Contents");
         }
       }
       
       SetCurrentOutput(Chapters);
-      char *styleCommand = "";
+      wxChar *styleCommand = _T("");
       if (!winHelp && useHeadingStyles)
-        styleCommand = "\\s1";
-      fprintf(Chapters, "\\pard{%s", (winHelp ? "\\keepn\\sa140\\sb140" : styleCommand));
-      WriteHeadingStyle(Chapters, 1);  fprintf(Chapters, " References\\par\\pard}\n");
+        styleCommand = _T("\\s1");
+      wxFprintf(Chapters, _T("\\pard{%s"), (winHelp ? _T("\\keepn\\sa140\\sb140") : styleCommand));
+      WriteHeadingStyle(Chapters, 1);  wxFprintf(Chapters, _T(" References\\par\\pard}\n"));
 
       return FALSE;
     }
     return TRUE;
-    break;
   }
   case ltINDEX:
   {
@@ -4928,8 +4915,8 @@ bool RTFOnArgument(int macroId, int arg_no, bool start)
      */
     if (start)
     {
-//      char *entry = GetArgData();
-      char buf[300];
+//      wxChar *entry = GetArgData();
+      wxChar buf[300];
       OutputChunkToString(GetArgChunk(), buf);
       if (winHelp)
       {
@@ -4941,7 +4928,6 @@ bool RTFOnArgument(int macroId, int arg_no, bool start)
       else GenerateIndexEntry(buf);
     }
     return FALSE;
-    break;
   }
   case ltFCOL:
   case ltBCOL:
@@ -4952,16 +4938,16 @@ bool RTFOnArgument(int macroId, int arg_no, bool start)
       {
         case 1:
         {
-          char *name = GetArgData();
+          wxChar *name = GetArgData();
           int pos = FindColourPosition(name);
           if (pos > -1)
           {
-            sprintf(buf, "{%s%d ", ((macroId == ltFCOL) ? "\\cf" : "\\cb"), pos);
+            wxSprintf(buf, _T("{%s%d "), ((macroId == ltFCOL) ? _T("\\cf") : _T("\\cb")), pos);
             TexOutput(buf);
           }
                  else
                  {
-                       sprintf(buf, "Could not find colour name %s", name);
+                       wxSprintf(buf, _T("Could not find colour name %s"), name);
             OnError(buf);
                  }
           break;
@@ -4969,7 +4955,6 @@ bool RTFOnArgument(int macroId, int arg_no, bool start)
         case 2:
         {
           return TRUE;
-          break;
         }
         default:
           break;
@@ -4977,42 +4962,39 @@ bool RTFOnArgument(int macroId, int arg_no, bool start)
     }
     else
     {
-      if (arg_no == 2) TexOutput("}");
+      if (arg_no == 2) TexOutput(_T("}"));
     }
     return FALSE;
-    break;
   }
   case ltLABEL:
   {
     if (start && !winHelp && useWord)
     {
-      char *s = GetArgData();
+      wxChar *s = GetArgData();
       // Only insert a bookmark here if it's not just been inserted
       // in a section heading.
-      if ( !CurrentTopic || !(strcmp(CurrentTopic, s) == 0) )
+      if ( !CurrentTopic || !(wxStrcmp(CurrentTopic, s) == 0) )
 /*
-      if ( (!CurrentChapterName || !(CurrentChapterName && (strcmp(CurrentChapterName, s) == 0))) &&
-           (!CurrentSectionName || !(CurrentSectionName && (strcmp(CurrentSectionName, s) == 0))) &&
-           (!CurrentSubsectionName || !(CurrentSubsectionName && (strcmp(CurrentSubsectionName, s) == 0)))
+      if ( (!CurrentChapterName || !(CurrentChapterName && (wxStrcmp(CurrentChapterName, s) == 0))) &&
+           (!CurrentSectionName || !(CurrentSectionName && (wxStrcmp(CurrentSectionName, s) == 0))) &&
+           (!CurrentSubsectionName || !(CurrentSubsectionName && (wxStrcmp(CurrentSubsectionName, s) == 0)))
          )
 */
       {
-          fprintf(Chapters, "{\\bkmkstart %s}{\\bkmkend %s}", s,s);
+          wxFprintf(Chapters, _T("{\\bkmkstart %s}{\\bkmkend %s}"), s,s);
       }
     }
     return FALSE;
-    break;
   }
   case ltPAGEREF:
   {
     if (start && useWord && !winHelp)
     {
-      char *s = GetArgData();
-      fprintf(Chapters, "{\\field{\\*\\fldinst  PAGEREF %s \\\\* MERGEFORMAT }{\\fldrslt ??}}",
+      wxChar *s = GetArgData();
+      wxFprintf(Chapters, _T("{\\field{\\*\\fldinst  PAGEREF %s \\\\* MERGEFORMAT }{\\fldrslt ??}}"),
               s);
     }
     return FALSE;
-    break;
   }
   case ltPOPREFONLY:
   {
@@ -5038,8 +5020,8 @@ bool RTFOnArgument(int macroId, int arg_no, bool start)
         {
           oldLevelFile = CurrentOutput1;
 
-          char *str = GetArgData();
-          currentLevelNo = atoi(str);
+          wxChar *str = GetArgData();
+          currentLevelNo = wxAtoi(str);
           FILE* outputFile;
           // TODO: cope with article style (no chapters)
           switch (currentLevelNo)
@@ -5073,12 +5055,10 @@ bool RTFOnArgument(int macroId, int arg_no, bool start)
           if (outputFile)
             CurrentOutput1 = outputFile;
           return FALSE;
-          break;
         }
         case 2:
         {
           return TRUE;
-          break;
         }
         default:
           break;
@@ -5093,13 +5073,9 @@ bool RTFOnArgument(int macroId, int arg_no, bool start)
         }
         return TRUE;
     }
-    break;
   }
   default:
-  {
     return DefaultOnArgument(macroId, arg_no, start);
-    break;
-  }
   }
   return TRUE;
 }
@@ -5132,87 +5108,87 @@ bool RTFGo(void)
     // recursively
     Text2RTF(GetTopLevelChunk());
 
-    Contents = fopen(TmpContentsName, "w");
-    Chapters = fopen("chapters.rtf", "w");
+    Contents = wxFopen(TmpContentsName, _T("w"));
+    Chapters = wxFopen(_T("chapters.rtf"), _T("w"));
     if (winHelp)
     {
-      Sections = fopen("sections.rtf", "w");
-      Subsections = fopen("subsections.rtf", "w");
-      Subsubsections = fopen("subsubsections.rtf", "w");
-      Popups = fopen("popups.rtf", "w");
+      Sections = wxFopen(_T("sections.rtf"), _T("w"));
+      Subsections = wxFopen(_T("subsections.rtf"), _T("w"));
+      Subsubsections = wxFopen(_T("subsubsections.rtf"), _T("w"));
+      Popups = wxFopen(_T("popups.rtf"), _T("w"));
       if (winHelpContents)
       {
-        WinHelpContentsFile = fopen(WinHelpContentsFileName, "w");
+        WinHelpContentsFile = wxFopen(WinHelpContentsFileName, _T("w"));
         if (WinHelpContentsFile)
-          fprintf(WinHelpContentsFile, ":Base %s.hlp\n", wxFileNameFromPath(FileRoot));
+          wxFprintf(WinHelpContentsFile, _T(":Base %s.hlp\n"), wxFileNameFromPath(FileRoot));
       }
 
       if (!Sections || !Subsections || !Subsubsections || !Popups || (winHelpContents && !WinHelpContentsFile))
       {
-        OnError("Ouch! Could not open temporary file(s) for writing.");
+        OnError(_T("Ouch! Could not open temporary file(s) for writing."));
         return FALSE;
       }
     }
     if (!Contents || !Chapters)
     {
-      OnError("Ouch! Could not open temporary file(s) for writing.");
+      OnError(_T("Ouch! Could not open temporary file(s) for writing."));
       return FALSE;
     }
 
     if (winHelp)
     {
-      fprintf(Chapters, "\n#{\\footnote Contents}\n");
-      fprintf(Chapters, "${\\footnote Contents}\n");
-      fprintf(Chapters, "+{\\footnote %s}\n", GetBrowseString());
-      fprintf(Chapters, "K{\\footnote {K} %s}\n", ContentsNameString);
-      fprintf(Chapters, "!{\\footnote DisableButton(\"Up\")}\n");
+      wxFprintf(Chapters, _T("\n#{\\footnote Contents}\n"));
+      wxFprintf(Chapters, _T("${\\footnote Contents}\n"));
+      wxFprintf(Chapters, _T("+{\\footnote %s}\n"), GetBrowseString());
+      wxFprintf(Chapters, _T("K{\\footnote {K} %s}\n"), ContentsNameString);
+      wxFprintf(Chapters, _T("!{\\footnote DisableButton(\"Up\")}\n"));
     }
     if (!winHelp)
     {
-      fprintf(Chapters, "\\titlepg\n");
-      fprintf(Contents, "\\par\\pard\\pgnrestart\\sect\\titlepg");
+      wxFprintf(Chapters, _T("\\titlepg\n"));
+      wxFprintf(Contents, _T("\\par\\pard\\pgnrestart\\sect\\titlepg"));
     }
     
     // In WinHelp, Contents title takes font of title.
     // In linear RTF, same as chapter headings.
-    fprintf(Contents, "{\\b\\fs%d %s}\\par\\par\\pard\n\n",
+    wxFprintf(Contents, _T("{\\b\\fs%d %s}\\par\\par\\pard\n\n"),
       (winHelp ? titleFont : chapterFont)*2, ContentsNameString);
 
     // By default, Swiss, 10 point.
-    fprintf(Chapters, "\\f2\\fs20\n");
+    wxFprintf(Chapters, _T("\\f2\\fs20\n"));
 
     SetCurrentOutput(Chapters);
 
     if (stopRunning)
         return FALSE;
 
-    OnInform("Converting...");
+    OnInform(_T("Converting..."));
 
     TraverseDocument();
 
-    FILE *Header = fopen("header.rtf", "w");
+    FILE *Header = wxFopen(_T("header.rtf"), _T("w"));
     if (!Header)
     {
-      OnError("Ouch! Could not open temporary file header.rtf for writing.");
+      OnError(_T("Ouch! Could not open temporary file header.rtf for writing."));
       return FALSE;
     }
     WriteRTFHeader(Header);
-    fclose(Header); Header = NULL;
+    fclose(Header);
     
     Tex2RTFYield(TRUE);
     if (winHelp)
     {
-//      fprintf(Contents, "\\page\n");
-      fprintf(Chapters, "\\page\n");
-      fprintf(Sections, "\\page\n");
-      fprintf(Subsections, "\\page\n");
-      fprintf(Subsubsections, "\\page\n\n");
-      fprintf(Popups, "\\page\n}\n");
+//      wxFprintf(Contents, _T("\\page\n"));
+      wxFprintf(Chapters, _T("\\page\n"));
+      wxFprintf(Sections, _T("\\page\n"));
+      wxFprintf(Subsections, _T("\\page\n"));
+      wxFprintf(Subsubsections, _T("\\page\n\n"));
+      wxFprintf(Popups, _T("\\page\n}\n"));
     }
 
-//    TexOutput("\n\\info{\\doccomm Document created by Julian Smart's Tex2RTF.}\n");
+//    TexOutput(_T("\n\\info{\\doccomm Document created by Julian Smart's Tex2RTF.}\n"));
     if (!winHelp)
-      TexOutput("}\n");
+      TexOutput(_T("}\n"));
     fclose(Contents); Contents = NULL;
     fclose(Chapters); Chapters = NULL;
     if (winHelp)
@@ -5229,30 +5205,30 @@ bool RTFGo(void)
 
     if (winHelp)
     {
-      wxConcatFiles("header.rtf", "chapters.rtf", "tmp1.rtf");
+      wxConcatFiles(_T("header.rtf"), _T("chapters.rtf"), _T("tmp1.rtf"));
       Tex2RTFYield(TRUE);
-      wxConcatFiles("tmp1.rtf", "sections.rtf", "tmp2.rtf");
+      wxConcatFiles(_T("tmp1.rtf"), _T("sections.rtf"), _T("tmp2.rtf"));
       Tex2RTFYield(TRUE);
-      wxConcatFiles("tmp2.rtf", "subsections.rtf", "tmp3.rtf");
+      wxConcatFiles(_T("tmp2.rtf"), _T("subsections.rtf"), _T("tmp3.rtf"));
       Tex2RTFYield(TRUE);
-      wxConcatFiles("tmp3.rtf", "subsubsections.rtf", "tmp4.rtf");
+      wxConcatFiles(_T("tmp3.rtf"), _T("subsubsections.rtf"), _T("tmp4.rtf"));
       Tex2RTFYield(TRUE);
-      wxConcatFiles("tmp4.rtf", "popups.rtf", OutputFile);
+      wxConcatFiles(_T("tmp4.rtf"), _T("popups.rtf"), OutputFile);
       Tex2RTFYield(TRUE);
 
-      wxRemoveFile("tmp1.rtf");
-      wxRemoveFile("tmp2.rtf");
-      wxRemoveFile("tmp3.rtf");
-      wxRemoveFile("tmp4.rtf");
+      wxRemoveFile(_T("tmp1.rtf"));
+      wxRemoveFile(_T("tmp2.rtf"));
+      wxRemoveFile(_T("tmp3.rtf"));
+      wxRemoveFile(_T("tmp4.rtf"));
     }
     else
     {
-      wxConcatFiles("header.rtf", "chapters.rtf", "tmp1.rtf");
+      wxConcatFiles(_T("header.rtf"), _T("chapters.rtf"), _T("tmp1.rtf"));
       Tex2RTFYield(TRUE);
       if (wxFileExists(OutputFile))
           wxRemoveFile(OutputFile);
 
-      char *cwdStr;
+      wxChar *cwdStr;
       cwdStr = wxGetWorkingDirectory();
 
       wxString outputDirStr;
@@ -5261,18 +5237,18 @@ bool RTFGo(void)
       // Determine if the temp file and the output file are in the same directory,
       // and if they are, then just rename the temp file rather than copying
       // it, as this is much faster when working with large (multi-megabyte files)
-      if ((wxStrcmp(outputDirStr.c_str(),"") == 0) ||  // no path specified on output file
+      if ((wxStrcmp(outputDirStr.c_str(),_T("")) == 0) ||  // no path specified on output file
           (wxStrcmp(cwdStr,outputDirStr.c_str()) == 0)) // paths do not match
       {
-        wxRenameFile("tmp1.rtf", OutputFile);
+        wxRenameFile(_T("tmp1.rtf"), OutputFile);
       }
       else
       {
-        wxCopyFile("tmp1.rtf", OutputFile);
+        wxCopyFile(_T("tmp1.rtf"), OutputFile);
       }
       delete [] cwdStr;
       Tex2RTFYield(TRUE);
-      wxRemoveFile("tmp1.rtf");
+      wxRemoveFile(_T("tmp1.rtf"));
     }
     
     if (wxFileExists(ContentsName)) wxRemoveFile(ContentsName);
@@ -5283,15 +5259,15 @@ bool RTFGo(void)
       wxRemoveFile(TmpContentsName);
     }
 
-    wxRemoveFile("chapters.rtf");
-    wxRemoveFile("header.rtf");
+    wxRemoveFile(_T("chapters.rtf"));
+    wxRemoveFile(_T("header.rtf"));
       
     if (winHelp)
     {
-      wxRemoveFile("sections.rtf");
-      wxRemoveFile("subsections.rtf");
-      wxRemoveFile("subsubsections.rtf");
-      wxRemoveFile("popups.rtf");
+      wxRemoveFile(_T("sections.rtf"));
+      wxRemoveFile(_T("subsections.rtf"));
+      wxRemoveFile(_T("subsubsections.rtf"));
+      wxRemoveFile(_T("popups.rtf"));
     }
     if (winHelp && generateHPJ)
       WriteHPJ(OutputFile);
index 9f2cf955dbb6209ac28d8dcc986ccd94957d949e..8eef489bf24e52a50422258493a0867500434851 100644 (file)
@@ -43,7 +43,7 @@ void Text2RTF(TexChunk *chunk);
  *
  */
 
-void PushEnvironmentStyle(char *style);
+void PushEnvironmentStyle(wxChar *style);
 
 void PopEnvironmentStyle(void);
 
@@ -51,10 +51,10 @@ void PopEnvironmentStyle(void);
 void WriteEnvironmentStyles(void);
 
 // Called on start/end of macro examination
-void DefaultRtfOnMacro(char *name, int no_args, bool start);
+void DefaultRtfOnMacro(wxChar *name, int no_args, bool start);
 
 // Called on start/end of argument examination
-bool DefaultRtfOnArgument(char *macro_name, int arg_no, bool start);
+bool DefaultRtfOnArgument(wxChar *macro_name, int arg_no, bool start);
 
 // Reset memory of which levels have 'books' (for WinHelp 4 contents file)
 void ResetContentsLevels(int level);
index 6d4b41dd425e0694af66cf68a611e9799fc1e3b7..113d5d4701e2ff9e24ed5b4906018e4d60d08c54 100644 (file)
@@ -57,11 +57,11 @@ int currentRowNumber = 0;
  *
  */
 
-bool ParseTableArgument(char *value)
+bool ParseTableArgument(wxChar *value)
 {
   noColumns = 0;
   int i = 0;
-  int len = strlen(value);
+  int len = wxStrlen(value);
   bool isBorder = FALSE;
   while (i < len)
   {
@@ -111,7 +111,7 @@ bool ParseTableArgument(char *value)
     {
       i ++;
       int j = 0;
-      char numberBuf[50];
+      wxChar numberBuf[50];
       ch = value[i];
       if (ch == '{')
       {
@@ -145,8 +145,8 @@ bool ParseTableArgument(char *value)
     }
     else
     {
-      char *buf = new char[strlen(value) + 80];
-      sprintf(buf, "Tabular first argument \"%s\" too complex!", value);
+      wxChar *buf = new wxChar[wxStrlen(value) + 80];
+      wxSprintf(buf, _T("Tabular first argument \"%s\" too complex!"), value);
       OnError(buf);
       delete[] buf;
       return FALSE;
index d2235f2394141e15aaf7c4d4ba070e0b94f603e6..4597318e3a4c74c58f4c5567f73f3b97e8461a26 100644 (file)
@@ -33,4 +33,4 @@ extern int noColumns;   // Current number of columns in table
 extern int ruleTop;
 extern int ruleBottom;
 extern int currentRowNumber;
-extern bool ParseTableArgument(char *value);
+extern bool ParseTableArgument(wxChar *value);
index de7e4b662a8133f59585cd67e8afdc460d51058f..8d595fdecbf4da15c49838c7526d02cd53dc8162 100644 (file)
@@ -55,14 +55,14 @@ TexChunk *      CentreHeaderOdd = NULL;
 TexChunk *      CentreFooterOdd = NULL;
 TexChunk *      RightHeaderOdd = NULL;
 TexChunk *      RightFooterOdd = NULL;
-char *          PageStyle = copystring("plain");
+wxChar *        PageStyle = copystring(_T("plain"));
 
 int             DocumentStyle = LATEX_REPORT;
 int             MinorDocumentStyle = 0;
 wxPathList      TexPathList;
-char *          BibliographyStyleString = copystring("plain");
-char *          DocumentStyleString = copystring("report");
-char *          MinorDocumentStyleString = NULL;
+wxChar *        BibliographyStyleString = copystring(_T("plain"));
+wxChar *        DocumentStyleString = copystring(_T("report"));
+wxChar *        MinorDocumentStyleString = NULL;
 int             ParSkip = 0;
 int             ParIndent = 0;
 
@@ -80,18 +80,18 @@ int             HUGEFont3 = 28;
 // text) and must start at the first character of the line, or tex2rtf
 // will fail to process them correctly (a limitation of tex2rtf, not TeX)
 static const wxString syntaxTokens[] =
-{ "\\begin{verbatim}",
-  "\\begin{toocomplex}",
-  "\\end{verbatim}",
-  "\\end{toocomplex}",
-  "\\verb",
-  "\\begin{comment}",
-  "\\end{comment}",
-  "\\verbatiminput",
-//  "\\par",
-  "\\input",
-  "\\helpinput",
-  "\\include",
+{ _T("\\begin{verbatim}"),
+  _T("\\begin{toocomplex}"),
+  _T("\\end{verbatim}"),
+  _T("\\end{toocomplex}"),
+  _T("\\verb"),
+  _T("\\begin{comment}"),
+  _T("\\end{comment}"),
+  _T("\\verbatiminput"),
+//  _T("\\par"),
+  _T("\\input"),
+  _T("\\helpinput"),
+  _T("\\include"),
   wxEmptyString
 };
 
@@ -119,7 +119,7 @@ bool            footerRule = FALSE;
 bool            compatibilityMode = FALSE; // If TRUE, maximum Latex compatibility
                                 // (Quality of RTF generation deteriorate)
 bool            generateHPJ; // Generate WinHelp Help Project file
-char            *winHelpTitle = NULL; // Windows Help title
+wxChar         *winHelpTitle = NULL; // Windows Help title
 int             defaultTableColumnWidth = 2000;
 
 int             labelIndentTab = 18;  // From left indent to item label (points)
@@ -133,24 +133,24 @@ int             winHelpVersion = 3; // WinHelp Version (3 for Windows 3.1, 4 for
 bool            winHelpContents = FALSE; // Generate .cnt file for WinHelp 4
 bool            htmlIndex = FALSE; // Generate .htx file for HTML
 bool            htmlFrameContents = FALSE; // Use frames for HTML contents page
-char           *htmlStylesheet = NULL; // Use this CSS stylesheet for HTML pages
+wxChar         *htmlStylesheet = NULL; // Use this CSS stylesheet for HTML pages
 bool            useHeadingStyles = TRUE; // Insert \s1, s2 etc.
 bool            useWord = TRUE; // Insert proper Word table of contents, etc etc
 int             contentsDepth = 4; // Depth of Word table of contents
 bool            indexSubsections = TRUE; // Index subsections in linear RTF
 // Linear RTF method of including bitmaps. Can be "includepicture", "hex"
-char            *bitmapMethod = copystring("includepicture");
+wxChar         *bitmapMethod = copystring(_T("includepicture"));
 bool            upperCaseNames = FALSE;
 // HTML background and text colours
-char            *backgroundImageString = NULL;
-char            *backgroundColourString = copystring("255;255;255");
-char            *textColourString = NULL;
-char            *linkColourString = NULL;
-char            *followedLinkColourString = NULL;
+wxChar         *backgroundImageString = NULL;
+wxChar         *backgroundColourString = copystring(_T("255;255;255"));
+wxChar         *textColourString = NULL;
+wxChar         *linkColourString = NULL;
+wxChar         *followedLinkColourString = NULL;
 bool            combineSubSections = FALSE;
 bool            htmlWorkshopFiles = FALSE;
 bool            ignoreBadRefs = FALSE;
-char                   *htmlFaceName = NULL;
+wxChar                 *htmlFaceName = NULL;
 
 extern int passNumber;
 
@@ -161,20 +161,20 @@ extern wxHashTable TexReferences;
  */
 
 // Names to help with internationalisation
-char *ContentsNameString = copystring("Contents");
-char *AbstractNameString = copystring("Abstract");
-char *GlossaryNameString = copystring("Glossary");
-char *ReferencesNameString = copystring("References");
-char *FiguresNameString = copystring("List of Figures");
-char *TablesNameString = copystring("List of Tables");
-char *FigureNameString = copystring("Figure");
-char *TableNameString = copystring("Table");
-char *IndexNameString = copystring("Index");
-char *ChapterNameString = copystring("chapter");
-char *SectionNameString = copystring("section");
-char *SubsectionNameString = copystring("subsection");
-char *SubsubsectionNameString = copystring("subsubsection");
-char *UpNameString = copystring("Up");
+wxChar *ContentsNameString = copystring(_T("Contents"));
+wxChar *AbstractNameString = copystring(_T("Abstract"));
+wxChar *GlossaryNameString = copystring(_T("Glossary"));
+wxChar *ReferencesNameString = copystring(_T("References"));
+wxChar *FiguresNameString = copystring(_T("List of Figures"));
+wxChar *TablesNameString = copystring(_T("List of Tables"));
+wxChar *FigureNameString = copystring(_T("Figure"));
+wxChar *TableNameString = copystring(_T("Table"));
+wxChar *IndexNameString = copystring(_T("Index"));
+wxChar *ChapterNameString = copystring(_T("chapter"));
+wxChar *SectionNameString = copystring(_T("section"));
+wxChar *SubsectionNameString = copystring(_T("subsection"));
+wxChar *SubsubsectionNameString = copystring(_T("subsubsection"));
+wxChar *UpNameString = copystring(_T("Up"));
 
 /*
  * Section numbering
@@ -197,17 +197,17 @@ FILE *CurrentOutput1 = NULL;
 FILE *CurrentOutput2 = NULL;
 FILE *Inputs[15];
 unsigned long LineNumbers[15];
-char *FileNames[15];
+wxChar *FileNames[15];
 int CurrentInputIndex = 0;
 
-char *TexFileRoot = NULL;
-char *TexBibName = NULL;         // Bibliography output file name
-char *TexTmpBibName = NULL;      // Temporary bibliography output file name
+wxChar *TexFileRoot = NULL;
+wxChar *TexBibName = NULL;         // Bibliography output file name
+wxChar *TexTmpBibName = NULL;      // Temporary bibliography output file name
 bool isSync = FALSE;             // If TRUE, should not yield to other processes.
 bool stopRunning = FALSE;        // If TRUE, should abort.
 
 static int currentColumn = 0;
-char *currentArgData = NULL;
+wxChar *currentArgData = NULL;
 bool haveArgData = FALSE; // If TRUE, we're simulating the data.
 TexChunk *currentArgument = NULL;
 TexChunk *nextChunk = NULL;
@@ -218,20 +218,20 @@ TexChunk *TopLevel = NULL;
 // wxList MacroDefs(wxKEY_STRING);
 wxHashTable MacroDefs(wxKEY_STRING);
 wxStringList IgnorableInputFiles; // Ignorable \input files, e.g. psbox.tex
-char *BigBuffer = NULL;  // For reading in large chunks of text
+wxChar *BigBuffer = NULL;  // For reading in large chunks of text
 TexMacroDef *SoloBlockDef = NULL;
 TexMacroDef *VerbatimMacroDef = NULL;
 
 #define IncrementLineNumber() LineNumbers[CurrentInputIndex] ++
 
 
-TexRef::TexRef(const char *label, const char *file,
-              const char *section, const char *sectionN)
+TexRef::TexRef(const wxChar *label, const wxChar *file,
+              const wxChar *section, const wxChar *sectionN)
 {
     refLabel = copystring(label);
-    refFile = file ? copystring(file) : (char*) NULL;
-    sectionNumber = section ? copystring(section) : copystring("??");
-    sectionName = sectionN ? copystring(sectionN) : copystring("??");
+    refFile = file ? copystring(file) : (wxChar*) NULL;
+    sectionNumber = section ? copystring(section) : copystring(_T("??"));
+    sectionName = sectionN ? copystring(sectionN) : copystring(_T("??"));
 }
 
 TexRef::~TexRef(void)
@@ -251,9 +251,9 @@ CustomMacro::~CustomMacro()
         delete [] macroBody;
 }
 
-void TexOutput(const char *s, bool ordinaryText)
+void TexOutput(const wxChar *s, bool ordinaryText)
 {
-  int len = strlen(s);
+  int len = wxStrlen(s);
 
   // Update current column, but only if we're guaranteed to
   // be ordinary text (not mark-up stuff)
@@ -268,9 +268,9 @@ void TexOutput(const char *s, bool ordinaryText)
     }
 
   if (CurrentOutput1)
-    fprintf(CurrentOutput1, "%s", s);
+    wxFprintf(CurrentOutput1, _T("%s"), s);
   if (CurrentOutput2)
-    fprintf(CurrentOutput2, "%s", s);
+    wxFprintf(CurrentOutput2, _T("%s"), s);
 }
 
 /*
@@ -287,14 +287,14 @@ void ForbidWarning(TexMacroDef *def)
   {
     case FORBID_WARN:
     {
-      informBuf.Printf("Warning: it is recommended that command %s is not used.", def->name);
-      OnInform((char *)informBuf.c_str());
+      informBuf.Printf(_T("Warning: it is recommended that command %s is not used."), def->name);
+      OnInform((const wxChar *)informBuf.c_str());
       break;
     }
     case FORBID_ABSOLUTELY:
     {
-      informBuf.Printf("Error: command %s cannot be used and will lead to errors.", def->name);
-      OnInform((char *)informBuf.c_str());
+      informBuf.Printf(_T("Error: command %s cannot be used and will lead to errors."), def->name);
+      OnInform((const wxChar *)informBuf.c_str());
       break;
     }
     default:
@@ -302,15 +302,15 @@ void ForbidWarning(TexMacroDef *def)
   }
 }
  
-TexMacroDef *MatchMacro(char *buffer, int *pos, char **env, bool *parseToBrace)
+TexMacroDef *MatchMacro(wxChar *buffer, int *pos, wxChar **env, bool *parseToBrace)
 {
   *parseToBrace = TRUE;
   int i = (*pos);
   TexMacroDef *def = NULL;
-  char macroBuf[40];
+  wxChar macroBuf[40];
 
   // First, try to find begin{thing}
-  if (strncmp(buffer+i, "begin{", 6) == 0)
+  if (wxStrncmp(buffer+i, _T("begin{"), 6) == 0)
   {
     i += 6;
 
@@ -381,9 +381,9 @@ TexMacroDef *MatchMacro(char *buffer, int *pos, char **env, bool *parseToBrace)
   return NULL;
 }
 
-void EatWhiteSpace(char *buffer, int *pos)
+void EatWhiteSpace(wxChar *buffer, int *pos)
 {
-  int len = strlen(buffer);
+  int len = wxStrlen(buffer);
   int j = *pos;
   bool keepGoing = TRUE;
   bool moreLines = TRUE;
@@ -396,7 +396,7 @@ void EatWhiteSpace(char *buffer, int *pos)
       if (moreLines)
       {
         moreLines = read_a_line(buffer);
-        len = strlen(buffer);
+        len = wxStrlen(buffer);
         j = 0;
       }
       else
@@ -406,15 +406,15 @@ void EatWhiteSpace(char *buffer, int *pos)
   *pos = j;
 }
 
-bool FindEndEnvironment(char *buffer, int *pos, char *env)
+bool FindEndEnvironment(wxChar *buffer, int *pos, wxChar *env)
 {
   int i = (*pos);
 
   // Try to find end{thing}
-  if ((strncmp(buffer+i, "end{", 4) == 0) &&
-      (strncmp(buffer+i+4, env, strlen(env)) == 0))
+  if ((wxStrncmp(buffer+i, _T("end{"), 4) == 0) &&
+      (wxStrncmp(buffer+i+4, env, wxStrlen(env)) == 0))
   {
-    *pos = i + 5 + strlen(env);
+    *pos = i + 5 + wxStrlen(env);
     return TRUE;
   }
   else return FALSE;
@@ -429,9 +429,9 @@ bool readInVerbatim = FALSE;  // Within a verbatim, but not nec. verbatiminput
 
 unsigned long leftCurley = 0;
 unsigned long rightCurley = 0;
-static wxString currentFileName = "";
+static wxString currentFileName = _T("");
 
-bool read_a_line(char *buf)
+bool read_a_line(wxChar *buf)
 {
   if (CurrentInputIndex < 0)
   {
@@ -448,14 +448,14 @@ bool read_a_line(char *buf)
     if (bufIndex >= MAX_LINE_BUFFER_SIZE)
     {
        wxString errBuf;
-       errBuf.Printf("Line %lu of file %s is too long.  Lines can be no longer than %lu characters.  Truncated.",
-           LineNumbers[CurrentInputIndex], (const char*) currentFileName.c_str(), MAX_LINE_BUFFER_SIZE);
-       OnError((char *)errBuf.c_str());
+       errBuf.Printf(_T("Line %lu of file %s is too long.  Lines can be no longer than %lu characters.  Truncated."),
+           LineNumbers[CurrentInputIndex], (const wxChar*) currentFileName.c_str(), MAX_LINE_BUFFER_SIZE);
+       OnError((wxChar *)errBuf.c_str());
        return FALSE;
     }
 
-    if (((bufIndex == 14) && (strncmp(buf, "\\end{verbatim}", 14) == 0)) ||
-         ((bufIndex == 16) && (strncmp(buf, "\\end{toocomplex}", 16) == 0)))
+    if (((bufIndex == 14) && (wxStrncmp(buf, _T("\\end{verbatim}"), 14) == 0)) ||
+         ((bufIndex == 16) && (wxStrncmp(buf, _T("\\end{toocomplex}"), 16) == 0)))
       readInVerbatim = FALSE;
 
     ch = getc(Inputs[CurrentInputIndex]);
@@ -470,8 +470,8 @@ bool read_a_line(char *buf)
            if (rightCurley > leftCurley)
            {
                wxString errBuf;
-               errBuf.Printf("An extra right Curley brace ('}') was detected at line %lu inside file %s", LineNumbers[CurrentInputIndex], (const char*) currentFileName.c_str());
-               OnError((char *)errBuf.c_str());
+               errBuf.Printf(_T("An extra right Curley brace ('}') was detected at line %lu inside file %s"), LineNumbers[CurrentInputIndex], (const wxChar*) currentFileName.c_str());
+               OnError((wxChar *)errBuf.c_str());
 
                // Reduce the count of right Curley braces, so the mismatched count
                // isn't reported on every line that has a '}' after the first mismatch
@@ -490,20 +490,20 @@ bool read_a_line(char *buf)
         {
           // Eliminate newline (10) following DOS linefeed
           if (ch1 == 13) 
-            ch1 = getc(Inputs[CurrentInputIndex]);
+            getc(Inputs[CurrentInputIndex]);
           buf[bufIndex] = 0;
           IncrementLineNumber();
-//          strcat(buf, "\\par\n");
+//          wxStrcat(buf, "\\par\n");
 //          i += 6;
           if (bufIndex+5 >= MAX_LINE_BUFFER_SIZE)
           {
              wxString errBuf;
-             errBuf.Printf("Line %lu of file %s is too long.  Lines can be no longer than %lu characters.  Truncated.",
-                 LineNumbers[CurrentInputIndex], (const char*) currentFileName.c_str(),MAX_LINE_BUFFER_SIZE);
-             OnError((char *)errBuf.c_str());
+             errBuf.Printf(_T("Line %lu of file %s is too long.  Lines can be no longer than %lu characters.  Truncated."),
+                 LineNumbers[CurrentInputIndex], (const wxChar*) currentFileName.c_str(),MAX_LINE_BUFFER_SIZE);
+             OnError((wxChar *)errBuf.c_str());
              return FALSE;
           }
-          strcat(buf, "\\par");
+          wxStrcat(buf, _T("\\par"));
           bufIndex += 5;
 
         }
@@ -513,9 +513,9 @@ bool read_a_line(char *buf)
           if (bufIndex >= MAX_LINE_BUFFER_SIZE)
           {
              wxString errBuf;
-             errBuf.Printf("Line %lu of file %s is too long.  Lines can be no longer than %lu characters.  Truncated.",
-                 LineNumbers[CurrentInputIndex], (const char*) currentFileName.c_str(),MAX_LINE_BUFFER_SIZE);
-             OnError((char *)errBuf.c_str());
+             errBuf.Printf(_T("Line %lu of file %s is too long.  Lines can be no longer than %lu characters.  Truncated."),
+                 LineNumbers[CurrentInputIndex], (const wxChar*) currentFileName.c_str(),MAX_LINE_BUFFER_SIZE);
+             OnError((wxChar *)errBuf.c_str());
              return FALSE;
           }
 
@@ -538,9 +538,9 @@ bool read_a_line(char *buf)
                 if (bufIndex+5 >= MAX_LINE_BUFFER_SIZE)
                 {
                    wxString errBuf;
-                   errBuf.Printf("Line %lu of file %s is too long.  Lines can be no longer than %lu characters.  Truncated.",
-                       LineNumbers[CurrentInputIndex], (const char*) currentFileName.c_str(),MAX_LINE_BUFFER_SIZE);
-                   OnError((char *)errBuf.c_str());
+                   errBuf.Printf(_T("Line %lu of file %s is too long.  Lines can be no longer than %lu characters.  Truncated."),
+                       LineNumbers[CurrentInputIndex], (const wxChar*) currentFileName.c_str(),MAX_LINE_BUFFER_SIZE);
+                   OnError((wxChar *)errBuf.c_str());
                    return FALSE;
                 }
                 buf[bufIndex++]='\\';
@@ -561,9 +561,9 @@ bool read_a_line(char *buf)
             if (bufIndex+5 >= MAX_LINE_BUFFER_SIZE)
             {
               wxString errBuf;
-              errBuf.Printf("Line %lu of file %s is too long.  Lines can be no longer than %lu characters.  Truncated.",
-                  LineNumbers[CurrentInputIndex], (const char*) currentFileName.c_str(),MAX_LINE_BUFFER_SIZE);
-              OnError((char *)errBuf.c_str());
+              errBuf.Printf(_T("Line %lu of file %s is too long.  Lines can be no longer than %lu characters.  Truncated."),
+                  LineNumbers[CurrentInputIndex], (const wxChar*) currentFileName.c_str(),MAX_LINE_BUFFER_SIZE);
+              OnError((wxChar *)errBuf.c_str());
               return FALSE;
             }
             buf[bufIndex++]='\\';
@@ -576,9 +576,9 @@ bool read_a_line(char *buf)
             if (bufIndex >= MAX_LINE_BUFFER_SIZE)
             {
               wxString errBuf;
-              errBuf.Printf("Line %lu of file %s is too long.  Lines can be no longer than %lu characters.  Truncated.",
-                  LineNumbers[CurrentInputIndex], (const char*) currentFileName.c_str(),MAX_LINE_BUFFER_SIZE);
-              OnError((char *)errBuf.c_str());
+              errBuf.Printf(_T("Line %lu of file %s is too long.  Lines can be no longer than %lu characters.  Truncated."),
+                  LineNumbers[CurrentInputIndex], (const wxChar*) currentFileName.c_str(),MAX_LINE_BUFFER_SIZE);
+              OnError((wxChar *)errBuf.c_str());
               return FALSE;
             }
             // If the current character read in is a '_', we need to check 
@@ -597,8 +597,9 @@ bool read_a_line(char *buf)
                     if ((bufIndex > 0 && (buf[bufIndex-1] == '\\')) && (buf[0] != '%'))
                     {
                         wxString errBuf;
-                        errBuf.Printf("An underscore ('_') was detected at line %lu inside file %s that should NOT have a '\\' before it.",LineNumbers[CurrentInputIndex], (const char*) currentFileName.c_str());
-                        OnError((char *)errBuf.c_str());
+                        errBuf.Printf(_T("An underscore ('_') was detected at line %lu inside file %s that should NOT have a '\\' before it."),
+                            LineNumbers[CurrentInputIndex], (const wxChar*) currentFileName.c_str());
+                        OnError((wxChar *)errBuf.c_str());
                     }
                 }
                 else
@@ -607,15 +608,17 @@ bool read_a_line(char *buf)
                     if (bufIndex == 0)
                     {
                         wxString errBuf;
-                        errBuf.Printf("An underscore ('_') was detected at line %lu inside file %s that may need a '\\' before it.",LineNumbers[CurrentInputIndex], (const char*) currentFileName.c_str());
-                        OnError((char *)errBuf.c_str());
+                        errBuf.Printf(_T("An underscore ('_') was detected at line %lu inside file %s that may need a '\\' before it."),
+                            LineNumbers[CurrentInputIndex], (const wxChar*) currentFileName.c_str());
+                        OnError((wxChar *)errBuf.c_str());
                     }
                     else if ((buf[bufIndex-1] != '\\') && (buf[0] != '%') &&  // If it is a comment line, then no warnings
-                        (strncmp(buf, "\\input", 6))) // do not report filenames that have underscores in them
+                        (wxStrncmp(buf, _T("\\input"), 6))) // do not report filenames that have underscores in them
                     {
                         wxString errBuf;
-                        errBuf.Printf("An underscore ('_') was detected at line %lu inside file %s that may need a '\\' before it.",LineNumbers[CurrentInputIndex], (const char*) currentFileName.c_str());
-                        OnError((char *)errBuf.c_str());
+                        errBuf.Printf(_T("An underscore ('_') was detected at line %lu inside file %s that may need a '\\' before it."),
+                            LineNumbers[CurrentInputIndex], (const wxChar*) currentFileName.c_str());
+                        OnError((wxChar *)errBuf.c_str());
                     }
                 }
             }
@@ -638,8 +641,9 @@ bool read_a_line(char *buf)
           if (leftCurley != rightCurley)
           {
             wxString errBuf;
-            errBuf.Printf("Curley braces do not match inside file %s\n%lu opens, %lu closes", (const char*) currentFileName.c_str(),leftCurley,rightCurley);
-            OnError((char *)errBuf.c_str());
+            errBuf.Printf(_T("Curley braces do not match inside file %s\n%lu opens, %lu closes"),
+                          (const wxChar*) currentFileName.c_str(),leftCurley,rightCurley);
+            OnError((wxChar *)errBuf.c_str());
           }
           leftCurley = 0;
           rightCurley = 0;
@@ -649,7 +653,7 @@ bool read_a_line(char *buf)
       {
         readingVerbatim = FALSE;
         readInVerbatim = FALSE;
-        strcat(buf, "\\end{verbatim}\n");
+        wxStrcat(buf, _T("\\end{verbatim}\n"));
         return FALSE;
       }
     }
@@ -659,23 +663,23 @@ bool read_a_line(char *buf)
   buf[bufIndex] = 0;
 
   // Strip out comment environment
-  if (strncmp(buf, "\\begin{comment}", 15) == 0)
+  if (wxStrncmp(buf, _T("\\begin{comment}"), 15) == 0)
   {
-    while (strncmp(buf, "\\end{comment}", 13) != 0)
+    while (wxStrncmp(buf, _T("\\end{comment}"), 13) != 0)
       read_a_line(buf);
     return read_a_line(buf);
   }
   // Read a verbatim input file as if it were a verbatim environment
-  else if (strncmp(buf, "\\verbatiminput", 14) == 0)
+  else if (wxStrncmp(buf, _T("\\verbatiminput"), 14) == 0)
   {
     int wordLen = 14;
-    char *fileName = buf + wordLen + 1;
+    wxChar *fileName = buf + wordLen + 1;
 
     int j = bufIndex - 1;
     buf[j] = 0;
 
     // thing}\par -- eliminate the \par!
-    if (strncmp((buf + strlen(buf)-5), "\\par", 4) == 0)
+    if (wxStrncmp((buf + wxStrlen(buf)-5), _T("\\par"), 4) == 0)
     {
       j -= 5;
       buf[j] = 0;
@@ -686,20 +690,20 @@ bool read_a_line(char *buf)
 
     wxString actualFile = TexPathList.FindValidPath(fileName);
     currentFileName = actualFile;
-    if (actualFile == "")
+    if (actualFile == _T(""))
     {
       wxString errBuf;
-      errBuf.Printf("Could not find file: %s",fileName);
-      OnError((char *)errBuf.c_str());
+      errBuf.Printf(_T("Could not find file: %s"),fileName);
+      OnError((wxChar *)errBuf.c_str());
     }
     else
     {
       wxString informStr;
-      informStr.Printf("Processing: %s",actualFile.c_str());
-      OnInform((char *)informStr.c_str());
+      informStr.Printf(_T("Processing: %s"),actualFile.c_str());
+      OnInform((wxChar *)informStr.c_str());
       CurrentInputIndex ++;
 
-      Inputs[CurrentInputIndex] = fopen(actualFile, "r");
+      Inputs[CurrentInputIndex] = wxFopen(actualFile, _T("r"));
       LineNumbers[CurrentInputIndex] = 1;
       if (FileNames[CurrentInputIndex])
         delete[] FileNames[CurrentInputIndex];
@@ -708,71 +712,71 @@ bool read_a_line(char *buf)
       if (!Inputs[CurrentInputIndex])
       {
         CurrentInputIndex --;
-        OnError("Could not open verbatiminput file.");
+        OnError(_T("Could not open verbatiminput file."));
       }
       else
       {
         readingVerbatim = TRUE;
         readInVerbatim = TRUE;
-        strcpy(buf, "\\begin{verbatim}\n");
+        wxStrcpy(buf, _T("\\begin{verbatim}\n"));
         return FALSE;
       }
     }
     return FALSE;
   }
-  else if (strncmp(buf, "\\input", 6) == 0 || strncmp(buf, "\\helpinput", 10) == 0 ||
-      strncmp(buf, "\\include", 8) == 0)
+  else if (wxStrncmp(buf, _T("\\input"), 6) == 0 || wxStrncmp(buf, _T("\\helpinput"), 10) == 0 ||
+      wxStrncmp(buf, _T("\\include"), 8) == 0)
   {
     int wordLen;
-    if (strncmp(buf, "\\input", 6) == 0)
+    if (wxStrncmp(buf, _T("\\input"), 6) == 0)
       wordLen = 6;
     else
-    if (strncmp(buf, "\\include", 8) == 0)
+    if (wxStrncmp(buf, _T("\\include"), 8) == 0)
       wordLen = 8;
     else
       wordLen = 10;
 
-    char *fileName = buf + wordLen + 1;
+    wxChar *fileName = buf + wordLen + 1;
 
     int j = bufIndex - 1;
     buf[j] = 0;
 
     // \input{thing}\par -- eliminate the \par!
-//    if (strncmp((buf + strlen(buf)-5), "\\par", 4) == 0)
-    if (strncmp((buf + strlen(buf)-4), "\\par", 4) == 0) // Bug fix 8/2/95 Ulrich Leodolter
+//    if (wxStrncmp((buf + wxStrlen(buf)-5), "\\par", 4) == 0)
+    if (wxStrncmp((buf + wxStrlen(buf)-4), _T("\\par"), 4) == 0) // Bug fix 8/2/95 Ulrich Leodolter
     {
 //      j -= 5;
       j -= 4; // Ditto
       buf[j] = 0;
     }
 
-    if (buf[j-1] == '}'
+    if (buf[j-1] == _T('}')
         buf[j-1] = 0; // Ignore final brace
 
     // Remove backslashes from name
     wxString fileNameStr(fileName);
-    fileNameStr.Replace("\\", "");
+    fileNameStr.Replace(_T("\\"), _T(""));
 
     // Ignore some types of input files (e.g. macro definition files)
-    char *fileOnly = wxFileNameFromPath((char*) (const char*) fileNameStr);
+    wxChar *fileOnly = wxFileNameFromPath((wxChar*) (const wxChar*) fileNameStr);
     currentFileName = fileOnly;
     if (IgnorableInputFiles.Member(fileOnly))
       return read_a_line(buf);
 
     wxString actualFile = TexPathList.FindValidPath(fileNameStr);
-    if (actualFile == "")
+    if (actualFile == _T(""))
     {
-      char buf2[400];
-      sprintf(buf2, "%s.tex", (const char*) fileNameStr);
+      wxChar buf2[400];
+      wxSprintf(buf2, _T("%s.tex"), fileNameStr.c_str());
       actualFile = TexPathList.FindValidPath(buf2);
     }
     currentFileName = actualFile;
 
-    if (actualFile == "")
+    if (actualFile == _T(""))
     {
       wxString errBuf;
-      errBuf.Printf("Could not find file: %s",fileName);
-      OnError((char *)errBuf.c_str());
+      errBuf.Printf(_T("Could not find file: %s"),fileName);
+      OnError((wxChar *)errBuf.c_str());
     }
     else
     {
@@ -781,11 +785,11 @@ bool read_a_line(char *buf)
       TexPathList.EnsureFileAccessible(actualFile);
 
       wxString informStr;
-      informStr.Printf("Processing: %s",actualFile.c_str());
-      OnInform((char *)informStr.c_str());
+      informStr.Printf(_T("Processing: %s"),actualFile.c_str());
+      OnInform((wxChar *)informStr.c_str());
       CurrentInputIndex ++;
 
-      Inputs[CurrentInputIndex] = fopen(actualFile, "r");
+      Inputs[CurrentInputIndex] = wxFopen(actualFile, _T("r"));
       LineNumbers[CurrentInputIndex] = 1;
       if (FileNames[CurrentInputIndex])
         delete[] FileNames[CurrentInputIndex];
@@ -794,9 +798,9 @@ bool read_a_line(char *buf)
       if (!Inputs[CurrentInputIndex])
       {
         wxString errBuf;
-        errBuf.Printf("Could not open include file %s", (const char*) actualFile);
+        errBuf.Printf(_T("Could not open include file %s"), (const wxChar*) actualFile);
         CurrentInputIndex --;
-        OnError((char *)errBuf.c_str());
+        OnError((wxChar *)errBuf.c_str());
       }
     }
     bool succ = read_a_line(buf);
@@ -806,42 +810,40 @@ bool read_a_line(char *buf)
   if (checkSyntax)
   {
       wxString bufStr = buf;
-      int index = 0;
-      size_t pos = 0;
-      for (index=0; syntaxTokens[index] != wxEmptyString; index++)
+      for (int index=0; syntaxTokens[index] != wxEmptyString; index++)
       {
-          pos = bufStr.find(syntaxTokens[index]);
+          size_t pos = bufStr.find(syntaxTokens[index]);
           if (pos != wxString::npos && pos != 0)
           {
-              size_t commentStart = bufStr.find("%");
+              size_t commentStart = bufStr.find(_T("%"));
               if (commentStart == wxString::npos || commentStart > pos)
               {
                   wxString errBuf;
-                  if (syntaxTokens[index] == "\\verb")
+                  if (syntaxTokens[index] == _T("\\verb"))
                   {
-                      errBuf.Printf("'%s$....$' was detected at line %lu inside file %s.  Please replace this form with \\tt{....}",
+                      errBuf.Printf(_T("'%s$....$' was detected at line %lu inside file %s.  Please replace this form with \\tt{....}"),
                                     syntaxTokens[index].c_str(),
                                     LineNumbers[CurrentInputIndex],
                                     currentFileName.c_str());
                   }
                   else
                   {
-                      errBuf.Printf("'%s' was detected at line %lu inside file %s that is not the only text on the line, starting at column one.",
+                      errBuf.Printf(_T("'%s' was detected at line %lu inside file %s that is not the only text on the line, starting at column one."),
                                     syntaxTokens[index].c_str(),
                                     LineNumbers[CurrentInputIndex],
                                     currentFileName.c_str());
                   }
-                  OnError((char *)errBuf.c_str());
+                  OnError((wxChar *)errBuf.c_str());
               }
           }
       }
   }  // checkSyntax
 
-  if (strncmp(buf, "\\begin{verbatim}", 16) == 0 ||
-      strncmp(buf, "\\begin{toocomplex}", 18) == 0)
+  if (wxStrncmp(buf, _T("\\begin{verbatim}"), 16) == 0 ||
+      wxStrncmp(buf, _T("\\begin{toocomplex}"), 18) == 0)
     readInVerbatim = TRUE;
-  else if (strncmp(buf, "\\end{verbatim}", 14) == 0 ||
-           strncmp(buf, "\\end{toocomplex}", 16) == 0)
+  else if (wxStrncmp(buf, _T("\\end{verbatim}"), 14) == 0 ||
+           wxStrncmp(buf, _T("\\end{toocomplex}"), 16) == 0)
     readInVerbatim = FALSE;
 
   if (checkCurleyBraces)
@@ -849,8 +851,9 @@ bool read_a_line(char *buf)
       if (ch == EOF && leftCurley != rightCurley)
       {
         wxString errBuf;
-        errBuf.Printf("Curley braces do not match inside file %s\n%lu opens, %lu closes", (const char*) currentFileName.c_str(),leftCurley,rightCurley);
-        OnError((char *)errBuf.c_str());
+        errBuf.Printf(_T("Curley braces do not match inside file %s\n%lu opens, %lu closes"),
+            (const wxChar*) currentFileName.c_str(),leftCurley,rightCurley);
+        OnError((wxChar *)errBuf.c_str());
       }
   }
 
@@ -862,21 +865,21 @@ bool read_a_line(char *buf)
  *
  */
 
-bool ParseNewCommand(char *buffer, int *pos)
+bool ParseNewCommand(wxChar *buffer, int *pos)
 {
-  if ((strncmp((buffer+(*pos)), "newcommand", 10) == 0) ||
-      (strncmp((buffer+(*pos)), "renewcommand", 12) == 0))
+  if ((wxStrncmp((buffer+(*pos)), _T("newcommand"), 10) == 0) ||
+      (wxStrncmp((buffer+(*pos)), _T("renewcommand"), 12) == 0))
   {
-    if (strncmp((buffer+(*pos)), "newcommand", 10) == 0)
+    if (wxStrncmp((buffer+(*pos)), _T("newcommand"), 10) == 0)
       *pos = *pos + 12;
     else
       *pos = *pos + 14;
 
-    char commandName[100];
-    char commandValue[1000];
+    wxChar commandName[100];
+    wxChar commandValue[1000];
     int noArgs = 0;
     int i = 0;
-    while (buffer[*pos] != '}' && (buffer[*pos] != 0))
+    while (buffer[*pos] != _T('}') && (buffer[*pos] != 0))
     {
       commandName[i] = buffer[*pos];
       *pos += 1;
@@ -885,7 +888,7 @@ bool ParseNewCommand(char *buffer, int *pos)
     commandName[i] = 0;
     i = 0;
     *pos += 1;
-    if (buffer[*pos] == '[')
+    if (buffer[*pos] == _T('['))
     {
       *pos += 1;
       noArgs = (int)(buffer[*pos]) - 48;
@@ -896,9 +899,9 @@ bool ParseNewCommand(char *buffer, int *pos)
     while (!end)
     {
       char ch = buffer[*pos];
-      if (ch == '{')
+      if (ch == _T('{'))
         braceCount ++;
-      else if (ch == '}')
+      else if (ch == _T('}'))
       {
         braceCount --;
         if (braceCount == 0)
@@ -906,8 +909,8 @@ bool ParseNewCommand(char *buffer, int *pos)
       }
       else if (ch == 0)
       {
-        if (!read_a_line(buffer))
-          end = TRUE;
+        end = !read_a_line(buffer);
+        wxUnusedVar(end);
         *pos = 0;
         break;
       }
@@ -918,7 +921,7 @@ bool ParseNewCommand(char *buffer, int *pos)
     commandValue[i] = 0;
 
     CustomMacro *macro = new CustomMacro(commandName, noArgs, NULL);
-    if (strlen(commandValue) > 0)
+    if (wxStrlen(commandValue) > 0)
       macro->macroBody = copystring(commandValue);
     if (!CustomMacroList.Find(commandName))
     {
@@ -930,10 +933,10 @@ bool ParseNewCommand(char *buffer, int *pos)
   else return FALSE;
 }
 
-void MacroError(char *buffer)
+void MacroError(wxChar *buffer)
 {
   wxString errBuf;
-  char macroBuf[200];
+  wxChar macroBuf[200];
   macroBuf[0] = '\\';
   int i = 1;
   char ch;
@@ -946,15 +949,13 @@ void MacroError(char *buffer)
   if (i > 20)
     macroBuf[20] = 0;
 
-  errBuf.Printf("Could not find macro: %s at line %d, file %s",
+  errBuf.Printf(_T("Could not find macro: %s at line %d, file %s"),
              macroBuf, (int)(LineNumbers[CurrentInputIndex]-1), FileNames[CurrentInputIndex]);
-  OnError((char *)errBuf.c_str());
+  OnError((wxChar *)errBuf.c_str());
 
-  if (wxStrcmp(macroBuf,"\\end{document}") == 0)
+  if (wxStrcmp(macroBuf,_T("\\end{document}")) == 0)
   {
-      wxString buf;
-      buf = "Halted build due to unrecoverable error.";
-      OnInform((char *)buf.c_str());
+      OnInform( _T("Halted build due to unrecoverable error.") );
       stopRunning = TRUE;
   }
 }
@@ -967,7 +968,7 @@ void MacroError(char *buffer)
  * e.g. in {\bf an argument} as opposed to \vskip 30pt
  *
  */
-int ParseArg(TexChunk *thisArg, wxList& children, char *buffer, int pos, char *environment, bool parseToBrace, TexChunk *customMacroArgs)
+int ParseArg(TexChunk *thisArg, wxList& children, wxChar *buffer, int pos, wxChar *environment, bool parseToBrace, TexChunk *customMacroArgs)
 {
   Tex2RTFYield();
   if (stopRunning) return pos;
@@ -1019,7 +1020,6 @@ int ParseArg(TexChunk *thisArg, wxList& children, char *buffer, int pos, char *e
     {
       TexChunk *chunk = new TexChunk(CHUNK_TYPE_STRING);
       BigBuffer[buf_ptr] = 0;
-      buf_ptr = 0;
       chunk->value = copystring(BigBuffer);
       children.Append((wxObject *)chunk);
     }
@@ -1028,26 +1028,24 @@ int ParseArg(TexChunk *thisArg, wxList& children, char *buffer, int pos, char *e
 
   while (!eof)
   {
-    len = strlen(buffer);
+    len = wxStrlen(buffer);
     if (pos >= len)
     {
       if (customMacroArgs) return 0;
 
       eof = read_a_line(buffer);
       pos = 0;
-      len = strlen(buffer);
       // Check for verbatim (or toocomplex, which comes to the same thing)
       wxString bufStr = buffer;
 //      if (bufStr.find("\\begin{verbatim}") != wxString::npos ||
 //          bufStr.find("\\begin{toocomplex}") != wxString::npos)
-      if (strncmp(buffer, "\\begin{verbatim}", 16) == 0 ||
-          strncmp(buffer, "\\begin{toocomplex}", 18) == 0)
+      if (wxStrncmp(buffer, _T("\\begin{verbatim}"), 16) == 0 ||
+          wxStrncmp(buffer, _T("\\begin{toocomplex}"), 18) == 0)
       {
         if (buf_ptr > 0)
         {
           TexChunk *chunk = new TexChunk(CHUNK_TYPE_STRING);
           BigBuffer[buf_ptr] = 0;
-          buf_ptr = 0;
           chunk->value = copystring(BigBuffer);
           children.Append((wxObject *)chunk);
         }
@@ -1055,12 +1053,12 @@ int ParseArg(TexChunk *thisArg, wxList& children, char *buffer, int pos, char *e
         buf_ptr = 0;
 
         eof = read_a_line(buffer);
-        while (!eof && (strncmp(buffer, "\\end{verbatim}", 14) != 0) &&
-                       (strncmp(buffer, "\\end{toocomplex}", 16) != 0)
+        while (!eof && (wxStrncmp(buffer, _T("\\end{verbatim}"), 14) != 0) &&
+                       (wxStrncmp(buffer, _T("\\end{toocomplex}"), 16) != 0)
                )
         {
-          strcat(BigBuffer, buffer);
-          buf_ptr += strlen(buffer);
+          wxStrcat(BigBuffer, buffer);
+          buf_ptr += wxStrlen(buffer);
           eof = read_a_line(buffer);
         }
         eof = read_a_line(buffer);
@@ -1083,7 +1081,7 @@ int ParseArg(TexChunk *thisArg, wxList& children, char *buffer, int pos, char *e
         // after a verbatim): EXCEPT in HTML
         if (convertMode != TEX_HTML)
         {
-          TexMacroDef *parDef = (TexMacroDef *)MacroDefs.Get("\\");
+          TexMacroDef *parDef = (TexMacroDef *)MacroDefs.Get(_T("\\"));
           TexChunk *parChunk = new TexChunk(CHUNK_TYPE_MACRO, parDef);
           parChunk->no_args = 0;
           parChunk->macroId = ltBACKSLASHCHAR;
@@ -1106,13 +1104,11 @@ int ParseArg(TexChunk *thisArg, wxList& children, char *buffer, int pos, char *e
         {
           TexChunk *chunk = new TexChunk(CHUNK_TYPE_STRING);
           BigBuffer[buf_ptr] = 0;
-          buf_ptr = 0;
           chunk->value = copystring(BigBuffer);
           children.Append((wxObject *)chunk);
         }
         if (ch == '}') pos ++;
         return pos;
-        break;
       }
       case '\\':
       {
@@ -1142,7 +1138,7 @@ int ParseArg(TexChunk *thisArg, wxList& children, char *buffer, int pos, char *e
         if (ParseNewCommand(buffer, &pos))
           break;
 
-        if (strncmp(buffer+pos, "special", 7) == 0)
+        if (wxStrncmp(buffer+pos, _T("special"), 7) == 0)
         {
           pos += 7;
 
@@ -1201,7 +1197,7 @@ int ParseArg(TexChunk *thisArg, wxList& children, char *buffer, int pos, char *e
           TexChunk *chunk = new TexChunk(CHUNK_TYPE_MACRO);
           chunk->no_args = 1;
           chunk->macroId = ltSPECIAL;
-          TexMacroDef *specialDef = (TexMacroDef *)MacroDefs.Get("special");
+          TexMacroDef *specialDef = (TexMacroDef *)MacroDefs.Get(_T("special"));
           chunk->def = specialDef;
           TexChunk *arg = new TexChunk(CHUNK_TYPE_ARG, specialDef);
           chunk->children.Append((wxObject *)arg);
@@ -1216,7 +1212,7 @@ int ParseArg(TexChunk *thisArg, wxList& children, char *buffer, int pos, char *e
 
           children.Append((wxObject *)chunk);
         }
-        else if (strncmp(buffer+pos, "verb", 4) == 0)
+        else if (wxStrncmp(buffer+pos, _T("verb"), 4) == 0)
         {
           pos += 4;
           if (buffer[pos] == '*')
@@ -1229,7 +1225,7 @@ int ParseArg(TexChunk *thisArg, wxList& children, char *buffer, int pos, char *e
           int j = pos;
           while ((buffer[pos] != ch) && buffer[pos] != 0)
             pos ++;
-          char *val = new char[pos - j + 1];
+          wxChar *val = new wxChar[pos - j + 1];
           int i;
           for (i = j; i < pos; i++)
           {
@@ -1242,7 +1238,7 @@ int ParseArg(TexChunk *thisArg, wxList& children, char *buffer, int pos, char *e
           TexChunk *chunk = new TexChunk(CHUNK_TYPE_MACRO);
           chunk->no_args = 1;
           chunk->macroId = ltVERB;
-          TexMacroDef *verbDef = (TexMacroDef *)MacroDefs.Get("verb");
+          TexMacroDef *verbDef = (TexMacroDef *)MacroDefs.Get(_T("verb"));
           chunk->def = verbDef;
           TexChunk *arg = new TexChunk(CHUNK_TYPE_ARG, verbDef);
           chunk->children.Append((wxObject *)arg);
@@ -1259,7 +1255,7 @@ int ParseArg(TexChunk *thisArg, wxList& children, char *buffer, int pos, char *e
         }
     else
     {
-          char *env = NULL;
+          wxChar *env = NULL;
           bool tmpParseToBrace = TRUE;
           TexMacroDef *def = MatchMacro(buffer, &pos, &env, &tmpParseToBrace);
           if (def)
@@ -1276,7 +1272,7 @@ int ParseArg(TexChunk *thisArg, wxList& children, char *buffer, int pos, char *e
             children.Append((wxObject *)chunk);
 
           // Eliminate newline after a \begin{} or a \\ if possible
-          if (env || strcmp(def->name, "\\") == 0)
+          if (env || wxStrcmp(def->name, _T("\\")) == 0)
             if (buffer[pos] == 13)
             {
               pos ++;
@@ -1292,10 +1288,10 @@ int ParseArg(TexChunk *thisArg, wxList& children, char *buffer, int pos, char *e
           {
             if (customMacro->macroBody)
             {
-              char macroBuf[300];
-//              strcpy(macroBuf, "{");
-              strcpy(macroBuf, customMacro->macroBody);
-              strcat(macroBuf, "}");
+              wxChar macroBuf[300];
+//              wxStrcpy(macroBuf, _T("{"));
+              wxStrcpy(macroBuf, customMacro->macroBody);
+              wxStrcat(macroBuf, _T("}"));
               ParseArg(thisArg, children, macroBuf, 0, NULL, TRUE, chunk);
             }
             
@@ -1326,7 +1322,7 @@ int ParseArg(TexChunk *thisArg, wxList& children, char *buffer, int pos, char *e
           }
           pos ++;
 
-          char *env;
+          wxChar *env;
           bool tmpParseToBrace;
           TexMacroDef *def = MatchMacro(buffer, &pos, &env, &tmpParseToBrace);
           if (def)
@@ -1348,10 +1344,10 @@ int ParseArg(TexChunk *thisArg, wxList& children, char *buffer, int pos, char *e
             {
               if (customMacro->macroBody)
               {
-                char macroBuf[300];
-//                strcpy(macroBuf, "{");
-                strcpy(macroBuf, customMacro->macroBody);
-                strcat(macroBuf, "}");
+                wxChar macroBuf[300];
+//                wxStrcpy(macroBuf, _T("{"));
+                wxStrcpy(macroBuf, customMacro->macroBody);
+                wxStrcat(macroBuf, _T("}"));
                 ParseArg(thisArg, children, macroBuf, 0, NULL, TRUE, chunk);
               }
             
@@ -1372,7 +1368,7 @@ int ParseArg(TexChunk *thisArg, wxList& children, char *buffer, int pos, char *e
           */
           if (!SoloBlockDef)
           {
-            SoloBlockDef = new TexMacroDef(ltSOLO_BLOCK, "solo block", 1, FALSE);
+            SoloBlockDef = new TexMacroDef(ltSOLO_BLOCK, _T("solo block"), 1, FALSE);
           }
           // Save text so far
           if (buf_ptr > 0)
@@ -1417,7 +1413,7 @@ int ParseArg(TexChunk *thisArg, wxList& children, char *buffer, int pos, char *e
         {
           TexChunk *chunk = new TexChunk(CHUNK_TYPE_MACRO);
           chunk->no_args = 0;
-//          chunk->name = copystring("$$");
+//          chunk->name = copystring(_T("$$"));
           chunk->macroId = ltSPECIALDOUBLEDOLLAR;
           children.Append((wxObject *)chunk);
           pos ++;
@@ -1426,7 +1422,7 @@ int ParseArg(TexChunk *thisArg, wxList& children, char *buffer, int pos, char *e
         {
           TexChunk *chunk = new TexChunk(CHUNK_TYPE_MACRO);
           chunk->no_args = 0;
-//          chunk->name = copystring("_$");
+//          chunk->name = copystring(_T("_$"));
           chunk->macroId = ltSPECIALDOLLAR;
           children.Append((wxObject *)chunk);
         }
@@ -1446,7 +1442,7 @@ int ParseArg(TexChunk *thisArg, wxList& children, char *buffer, int pos, char *e
         pos ++;
         TexChunk *chunk = new TexChunk(CHUNK_TYPE_MACRO);
         chunk->no_args = 0;
-//        chunk->name = copystring("_~");
+//        chunk->name = copystring(_T("_~"));
         chunk->macroId = ltSPECIALTILDE;
         children.Append((wxObject *)chunk);
         break;
@@ -1467,7 +1463,7 @@ int ParseArg(TexChunk *thisArg, wxList& children, char *buffer, int pos, char *e
         {
           TexChunk *chunk = new TexChunk(CHUNK_TYPE_MACRO);
           chunk->no_args = 0;
-//          chunk->name = copystring("_#");
+//          chunk->name = copystring(_T("_#"));
           chunk->macroId = ltSPECIALHASH;
           children.Append((wxObject *)chunk);
         }
@@ -1511,7 +1507,7 @@ int ParseArg(TexChunk *thisArg, wxList& children, char *buffer, int pos, char *e
 
         TexChunk *chunk = new TexChunk(CHUNK_TYPE_MACRO);
         chunk->no_args = 0;
-//        chunk->name = copystring("_&");
+//        chunk->name = copystring(_T("_&"));
         chunk->macroId = ltSPECIALAMPERSAND;
         children.Append((wxObject *)chunk);
         break;
@@ -1559,9 +1555,9 @@ int ParseArg(TexChunk *thisArg, wxList& children, char *buffer, int pos, char *e
  *
  */
  
-int ParseMacroBody(const char *macro_name, TexChunk *parent,
-                   int no_args, char *buffer, int pos,
-                   char *environment, bool parseToBrace,
+int ParseMacroBody(const wxChar *WXUNUSED(macro_name), TexChunk *parent,
+                   int no_args, wxChar *buffer, int pos,
+                   wxChar *environment, bool parseToBrace,
                    TexChunk *customMacroArgs)
 {
   Tex2RTFYield();
@@ -1596,7 +1592,7 @@ int ParseMacroBody(const char *macro_name, TexChunk *parent,
 
     // To parse the first arg of a 2 arg \begin{thing}{arg} ... \end{thing}
     // have to fool parser into thinking this is a regular kind of block.
-    char *actualEnv;
+    wxChar *actualEnv;
     if ((no_args == 2) && (i == 0))
       actualEnv = NULL;
     else
@@ -1630,11 +1626,11 @@ int ParseMacroBody(const char *macro_name, TexChunk *parent,
         wxString tmpBuffer(buffer);
         if (tmpBuffer.length() > 4)
         {
-            if (tmpBuffer.Right(4) == "\\par")
+            if (tmpBuffer.Right(4) == _T("\\par"))
                 tmpBuffer = tmpBuffer.Mid(0,tmpBuffer.length()-4);
         }
-        errBuf.Printf("Missing macro argument in the line:\n\t%s\n",tmpBuffer.c_str());
-        OnError((char *)errBuf.c_str());
+        errBuf.Printf(_T("Missing macro argument in the line:\n\t%s\n"),tmpBuffer.c_str());
+        OnError((wxChar *)errBuf.c_str());
       }
 
     }
@@ -1664,29 +1660,29 @@ int ParseMacroBody(const char *macro_name, TexChunk *parent,
   return pos;
 }
 
-bool TexLoadFile(char *filename)
+bool TexLoadFile(wxChar *filename)
 {
-  static char *line_buffer;
+  static wxChar *line_buffer;
   stopRunning = FALSE;
-  strcpy(TexFileRoot, filename);
+  wxStrcpy(TexFileRoot, filename);
   StripExtension(TexFileRoot);
-  sprintf(TexBibName, "%s.bb", TexFileRoot);
-  sprintf(TexTmpBibName, "%s.bb1", TexFileRoot);
+  wxSprintf(TexBibName, _T("%s.bb"), TexFileRoot);
+  wxSprintf(TexTmpBibName, _T("%s.bb1"), TexFileRoot);
 
   TexPathList.EnsureFileAccessible(filename);
 
   if (line_buffer) 
       delete line_buffer;
 
-  line_buffer = new char[MAX_LINE_BUFFER_SIZE];
+  line_buffer = new wxChar[MAX_LINE_BUFFER_SIZE];
   
-  Inputs[0] = fopen(filename, "r");
+  Inputs[0] = wxFopen(filename, _T("r"));
   LineNumbers[0] = 1;
   FileNames[0] = copystring(filename);
   if (Inputs[0])
   {
     read_a_line(line_buffer);
-    ParseMacroBody("toplevel", TopLevel, 1, line_buffer, 0, NULL, TRUE);
+    ParseMacroBody(_T("toplevel"), TopLevel, 1, line_buffer, 0, NULL, TRUE);
     if (Inputs[0]) fclose(Inputs[0]);
     return TRUE;
   }
@@ -1694,7 +1690,7 @@ bool TexLoadFile(char *filename)
   return FALSE;
 }
 
-TexMacroDef::TexMacroDef(int the_id, const char *the_name, int n, bool ig, bool forbidLevel)
+TexMacroDef::TexMacroDef(int the_id, const wxChar *the_name, int n, bool ig, bool forbidLevel)
 {
   name = copystring(the_name);
   no_args = n;
@@ -1788,19 +1784,19 @@ void GetArgData1(TexChunk *chunk)
       if (def && def->ignore)
         return;
 
-      if (def && (strcmp(def->name, "solo block") != 0))
+      if (def && (wxStrcmp(def->name, _T("solo block")) != 0))
       {
-        strcat(currentArgData, "\\");
-        strcat(currentArgData, def->name);
+        wxStrcat(currentArgData, _T("\\"));
+        wxStrcat(currentArgData, def->name);
       }
 
       wxNode *node = chunk->children.GetFirst();
       while (node)
       {
         TexChunk *child_chunk = (TexChunk *)node->GetData();
-        strcat(currentArgData, "{");
+        wxStrcat(currentArgData, _T("{"));
         GetArgData1(child_chunk);
-        strcat(currentArgData, "}");
+        wxStrcat(currentArgData, _T("}"));
         node = node->GetNext();
       }
       break;
@@ -1819,13 +1815,13 @@ void GetArgData1(TexChunk *chunk)
     case CHUNK_TYPE_STRING:
     {
       if (chunk->value)
-        strcat(currentArgData, chunk->value);
+        wxStrcat(currentArgData, chunk->value);
       break;
     }
   }
 }
 
-char *GetArgData(TexChunk *chunk)
+wxChar *GetArgData(TexChunk *WXUNUSED(chunk))
 {
   currentArgData[0] = 0;
   GetArgData1(currentArgument);
@@ -1833,7 +1829,7 @@ char *GetArgData(TexChunk *chunk)
   return currentArgData;
 }
 
-char *GetArgData(void)
+wxChar *GetArgData(void)
 {
   if (!haveArgData)
   {
@@ -1886,10 +1882,9 @@ void TraverseFromChunk(TexChunk *chunk, wxNode *thisNode, bool childrenOnly)
         OnMacro(chunk->macroId, chunk->no_args, TRUE);
 
       wxNode *node = chunk->children.GetFirst();
-      TexChunk *child_chunk = NULL;
       while (node)
       {
-        child_chunk = (TexChunk *)node->GetData();
+        TexChunk *child_chunk = (TexChunk *)node->GetData();
         TraverseFromChunk(child_chunk, node);
         node = node->GetNext();
       }
@@ -1969,7 +1964,7 @@ void SetCurrentOutputs(FILE *fd1, FILE *fd2)
   CurrentOutput2 = fd2;
 }
 
-void AddMacroDef(int the_id, const char *name, int n, bool ignore, bool forbid)
+void AddMacroDef(int the_id, const wxChar *name, int n, bool ignore, bool forbid)
 {
   MacroDefs.Put(name, new TexMacroDef(the_id, name, n, ignore, forbid));
 }
@@ -1978,10 +1973,10 @@ void TexInitialize(int bufSize)
 {
   InitialiseColourTable();
 #ifdef __WXMSW__
-  TexPathList.AddEnvList("TEXINPUT");
+  TexPathList.AddEnvList(_T("TEXINPUT"));
 #endif
 #ifdef __UNIX__
-  TexPathList.AddEnvList("TEXINPUTS");
+  TexPathList.AddEnvList(_T("TEXINPUTS"));
 #endif
   int i;
   for (i = 0; i < 15; i++)
@@ -1991,18 +1986,18 @@ void TexInitialize(int bufSize)
     FileNames[i] = NULL;
   }
 
-  IgnorableInputFiles.Add("psbox.tex");
-  BigBuffer = new char[(bufSize*1000)];
-  currentArgData = new char[2000];
-  TexFileRoot = new char[300];
-  TexBibName = new char[300];
-  TexTmpBibName = new char[300];
-  AddMacroDef(ltTOPLEVEL, "toplevel", 1);
+  IgnorableInputFiles.Add(_T("psbox.tex"));
+  BigBuffer = new wxChar[(bufSize*1000)];
+  currentArgData = new wxChar[2000];
+  TexFileRoot = new wxChar[300];
+  TexBibName = new wxChar[300];
+  TexTmpBibName = new wxChar[300];
+  AddMacroDef(ltTOPLEVEL, _T("toplevel"), 1);
   TopLevel = new TexChunk(CHUNK_TYPE_MACRO);
-//  TopLevel->name = copystring("toplevel");
+//  TopLevel->name = copystring(_T("toplevel"));
   TopLevel->macroId = ltTOPLEVEL;
   TopLevel->no_args = 1;
-  VerbatimMacroDef = (TexMacroDef *)MacroDefs.Get("verbatim");
+  VerbatimMacroDef = (TexMacroDef *)MacroDefs.Get(_T("verbatim"));
 }
 
 void TexCleanUp(void)
@@ -2026,7 +2021,7 @@ void TexCleanUp(void)
   if (TopLevel)
     delete TopLevel;
   TopLevel = new TexChunk(CHUNK_TYPE_MACRO);
-//  TopLevel->name = copystring("toplevel");
+//  TopLevel->name = copystring(_T("toplevel"));
   TopLevel->macroId = ltTOPLEVEL;
   TopLevel->no_args = 1;
 
@@ -2035,8 +2030,8 @@ void TexCleanUp(void)
   DocumentDate = NULL;
   DocumentStyle = LATEX_REPORT;
   MinorDocumentStyle = 0;
-  BibliographyStyleString = copystring("plain");
-  DocumentStyleString = copystring("report");
+  BibliographyStyleString = copystring(_T("plain"));
+  DocumentStyleString = copystring(_T("report"));
   MinorDocumentStyleString = NULL;
 
   // gt - Changed this so if this is the final pass
@@ -2087,484 +2082,485 @@ void DefineDefaultMacros(void)
   // Put names which subsume other names at the TOP
   // so they get recognized first
 
-  AddMacroDef(ltACCENT_GRAVE,     "`", 1);
-  AddMacroDef(ltACCENT_ACUTE,     "'", 1);
-  AddMacroDef(ltACCENT_CARET,     "^", 1);
-  AddMacroDef(ltACCENT_UMLAUT,    "\"", 1);
-  AddMacroDef(ltACCENT_TILDE,     "~", 1);
-  AddMacroDef(ltACCENT_DOT,       ".", 1);
-  AddMacroDef(ltACCENT_CADILLA,   "c", 1);
-  AddMacroDef(ltSMALLSPACE1,      ",", 0);
-  AddMacroDef(ltSMALLSPACE2,      ";", 0);
-
-  AddMacroDef(ltABSTRACT,         "abstract", 1);
-  AddMacroDef(ltADDCONTENTSLINE,  "addcontentsline", 3);
-  AddMacroDef(ltADDTOCOUNTER,     "addtocounter", 2);
-  AddMacroDef(ltALEPH,            "aleph", 0);
-  AddMacroDef(ltALPHA,            "alpha", 0);
-  AddMacroDef(ltALPH1,            "alph", 1);
-  AddMacroDef(ltALPH2,            "Alph", 1);
-  AddMacroDef(ltANGLE,            "angle", 0);
-  AddMacroDef(ltAPPENDIX,         "appendix", 0);
-  AddMacroDef(ltAPPROX,           "approx", 0);
-  AddMacroDef(ltARABIC,           "arabic", 1);
-  AddMacroDef(ltARRAY,            "array", 1);
-  AddMacroDef(ltAST,              "ast", 0);
-  AddMacroDef(ltASYMP,            "asymp", 0);
-  AddMacroDef(ltAUTHOR,           "author", 1);
-
-  AddMacroDef(ltBACKGROUNDCOLOUR, "backgroundcolour", 1);
-  AddMacroDef(ltBACKGROUNDIMAGE,  "backgroundimage", 1);
-  AddMacroDef(ltBACKGROUND,       "background", 1);
-  AddMacroDef(ltBACKSLASHRAW,     "backslashraw", 0);
-  AddMacroDef(ltBACKSLASH,        "backslash", 0);
-  AddMacroDef(ltBASELINESKIP,     "baselineskip", 1);
-  AddMacroDef(ltBCOL,             "bcol", 2);
-  AddMacroDef(ltBETA,             "beta", 0);
-  AddMacroDef(ltBFSERIES,         "bfseries", 1);
-  AddMacroDef(ltBF,               "bf", 1);
-  AddMacroDef(ltBIBITEM,          "bibitem", 2);  // For convenience, bibitem has 2 args: label and item.
+  AddMacroDef(ltACCENT_GRAVE,        _T("`"), 1);
+  AddMacroDef(ltACCENT_ACUTE,        _T("'"), 1);
+  AddMacroDef(ltACCENT_CARET,        _T("^"), 1);
+  AddMacroDef(ltACCENT_UMLAUT,       _T("\""), 1);
+  AddMacroDef(ltACCENT_TILDE,        _T("~"), 1);
+  AddMacroDef(ltACCENT_DOT,          _T("."), 1);
+  AddMacroDef(ltACCENT_CADILLA,      _T("c"), 1);
+  AddMacroDef(ltSMALLSPACE1,         _T(","), 0);
+  AddMacroDef(ltSMALLSPACE2,         _T(";"), 0);
+
+  AddMacroDef(ltABSTRACT,            _T("abstract"), 1);
+  AddMacroDef(ltADDCONTENTSLINE,     _T("addcontentsline"), 3);
+  AddMacroDef(ltADDTOCOUNTER,        _T("addtocounter"), 2);
+  AddMacroDef(ltALEPH,               _T("aleph"), 0);
+  AddMacroDef(ltALPHA,               _T("alpha"), 0);
+  AddMacroDef(ltALPH1,               _T("alph"), 1);
+  AddMacroDef(ltALPH2,               _T("Alph"), 1);
+  AddMacroDef(ltANGLE,               _T("angle"), 0);
+  AddMacroDef(ltAPPENDIX,            _T("appendix"), 0);
+  AddMacroDef(ltAPPROX,              _T("approx"), 0);
+  AddMacroDef(ltARABIC,              _T("arabic"), 1);
+  AddMacroDef(ltARRAY,               _T("array"), 1);
+  AddMacroDef(ltAST,                 _T("ast"), 0);
+  AddMacroDef(ltASYMP,               _T("asymp"), 0);
+  AddMacroDef(ltAUTHOR,              _T("author"), 1);
+
+  AddMacroDef(ltBACKGROUNDCOLOUR,    _T("backgroundcolour"), 1);
+  AddMacroDef(ltBACKGROUNDIMAGE,     _T("backgroundimage"), 1);
+  AddMacroDef(ltBACKGROUND,          _T("background"), 1);
+  AddMacroDef(ltBACKSLASHRAW,        _T("backslashraw"), 0);
+  AddMacroDef(ltBACKSLASH,           _T("backslash"), 0);
+  AddMacroDef(ltBASELINESKIP,        _T("baselineskip"), 1);
+  AddMacroDef(ltBCOL,                _T("bcol"), 2);
+  AddMacroDef(ltBETA,                _T("beta"), 0);
+  AddMacroDef(ltBFSERIES,            _T("bfseries"), 1);
+  AddMacroDef(ltBF,                  _T("bf"), 1);
+  AddMacroDef(ltBIBITEM,             _T("bibitem"), 2);
+             // For convenience, bibitem has 2 args: label and item.
                               // The Latex syntax permits writing as 2 args.
-  AddMacroDef(ltBIBLIOGRAPHYSTYLE,    "bibliographystyle", 1);
-  AddMacroDef(ltBIBLIOGRAPHY,     "bibliography", 1);
-  AddMacroDef(ltBIGTRIANGLEDOWN,  "bigtriangledown", 0);
-  AddMacroDef(ltBOT,              "bot", 0);
-  AddMacroDef(ltBOXIT,            "boxit", 1);
-  AddMacroDef(ltBOX,              "box", 0);
-  AddMacroDef(ltBRCLEAR,          "brclear", 0);
-  AddMacroDef(ltBULLET,           "bullet", 0);
-
-  AddMacroDef(ltCAPTIONSTAR,      "caption*", 1);
-  AddMacroDef(ltCAPTION,          "caption", 1);
-  AddMacroDef(ltCAP,              "cap", 0);
-  AddMacroDef(ltCDOTS,            "cdots", 0);
-  AddMacroDef(ltCDOT,             "cdot", 0);
-  AddMacroDef(ltCENTERLINE,       "centerline", 1);
-  AddMacroDef(ltCENTERING,        "centering", 0);
-  AddMacroDef(ltCENTER,           "center", 1);
-  AddMacroDef(ltCEXTRACT,         "cextract", 0);
-  AddMacroDef(ltCHAPTERHEADING,   "chapterheading", 1);
-  AddMacroDef(ltCHAPTERSTAR,      "chapter*", 1);
-  AddMacroDef(ltCHAPTER,          "chapter", 1);
-  AddMacroDef(ltCHI,              "chi", 0);
-  AddMacroDef(ltCINSERT,          "cinsert", 0);
-  AddMacroDef(ltCIRC,             "circ", 0);
-  AddMacroDef(ltCITE,             "cite", 1);
-  AddMacroDef(ltCLASS,            "class", 1);
-  AddMacroDef(ltCLEARDOUBLEPAGE,  "cleardoublepage", 0);
-  AddMacroDef(ltCLEARPAGE,        "clearpage", 0);
-  AddMacroDef(ltCLINE,            "cline", 1);
-  AddMacroDef(ltCLIPSFUNC,        "clipsfunc", 3);
-  AddMacroDef(ltCLUBSUIT,         "clubsuit", 0);
-  AddMacroDef(ltCOLUMNSEP,        "columnsep", 1);
-  AddMacroDef(ltCOMMENT,          "comment", 1, TRUE);
-  AddMacroDef(ltCONG,             "cong", 0);
-  AddMacroDef(ltCOPYRIGHT,        "copyright", 0);
-  AddMacroDef(ltCPARAM,           "cparam", 2);
-  AddMacroDef(ltCHEAD,            "chead", 1);
-  AddMacroDef(ltCFOOT,            "cfoot", 1);
-  AddMacroDef(ltCUP,              "cup", 0);
-
-  AddMacroDef(ltDASHV,            "dashv", 0);
-  AddMacroDef(ltDATE,             "date", 1);
-  AddMacroDef(ltDELTA,            "delta", 0);
-  AddMacroDef(ltCAP_DELTA,        "Delta", 0);
-  AddMacroDef(ltDEFINECOLOUR,     "definecolour", 4);
-  AddMacroDef(ltDEFINECOLOR,      "definecolor", 4);
-  AddMacroDef(ltDESCRIPTION,      "description", 1);
-  AddMacroDef(ltDESTRUCT,         "destruct", 1);
-  AddMacroDef(ltDIAMOND2,         "diamond2", 0);
-  AddMacroDef(ltDIAMOND,          "diamond", 0);
-  AddMacroDef(ltDIV,              "div", 0);
-  AddMacroDef(ltDOCUMENTCLASS,    "documentclass", 1);
-  AddMacroDef(ltDOCUMENTSTYLE,    "documentstyle", 1);
-  AddMacroDef(ltDOCUMENT,         "document", 1);
-  AddMacroDef(ltDOUBLESPACE,      "doublespace", 1);
-  AddMacroDef(ltDOTEQ,            "doteq", 0);
-  AddMacroDef(ltDOWNARROW,        "downarrow", 0);
-  AddMacroDef(ltDOWNARROW2,       "Downarrow", 0);
-
-  AddMacroDef(ltEMPTYSET,         "emptyset", 0);
-  AddMacroDef(ltEMPH,             "emph", 1);
-  AddMacroDef(ltEM,               "em", 1);
-  AddMacroDef(ltENUMERATE,        "enumerate", 1);
-  AddMacroDef(ltEPSILON,          "epsilon", 0);
-  AddMacroDef(ltEQUATION,         "equation", 1);
-  AddMacroDef(ltEQUIV,            "equiv", 0);
-  AddMacroDef(ltETA,              "eta", 0);
-  AddMacroDef(ltEVENSIDEMARGIN,   "evensidemargin", 1);
-  AddMacroDef(ltEXISTS,           "exists", 0);
-
-  AddMacroDef(ltFBOX,             "fbox", 1);
-  AddMacroDef(ltFCOL,             "fcol", 2);
-  AddMacroDef(ltFIGURE,           "figure", 1);
-  AddMacroDef(ltFIGURESTAR,       "figure*", 1);
-  AddMacroDef(ltFLUSHLEFT,        "flushleft", 1);
-  AddMacroDef(ltFLUSHRIGHT,       "flushright", 1);
-  AddMacroDef(ltFOLLOWEDLINKCOLOUR, "followedlinkcolour", 1);
-  AddMacroDef(ltFOOTHEIGHT,       "footheight", 1);
-  AddMacroDef(ltFOOTNOTEPOPUP,    "footnotepopup", 2);
-  AddMacroDef(ltFOOTNOTE,         "footnote", 1);
-  AddMacroDef(ltFOOTSKIP,         "footskip", 1);
-  AddMacroDef(ltFORALL,           "forall", 0);
-  AddMacroDef(ltFRAMEBOX,         "framebox", 1);
-  AddMacroDef(ltFROWN,            "frown", 0);
-  AddMacroDef(ltFUNCTIONSECTION,  "functionsection", 1);
-  AddMacroDef(ltFUNC,             "func", 3);
-  AddMacroDef(ltFOOTNOTESIZE,     "footnotesize", 0);
-  AddMacroDef(ltFANCYPLAIN,       "fancyplain", 2);
-
-  AddMacroDef(ltGAMMA,            "gamma", 0);
-  AddMacroDef(ltCAP_GAMMA,        "Gamma", 0);
-  AddMacroDef(ltGEQ,              "geq", 0);
-  AddMacroDef(ltGE,               "ge", 0);
-  AddMacroDef(ltGG,               "gg", 0);
-  AddMacroDef(ltGLOSSARY,         "glossary", 1);
-  AddMacroDef(ltGLOSS,            "gloss", 1);
-
-  AddMacroDef(ltHEADHEIGHT,       "headheight", 1);
-  AddMacroDef(ltHEARTSUIT,        "heartsuit", 0);
-  AddMacroDef(ltHELPGLOSSARY,     "helpglossary", 1);
-  AddMacroDef(ltHELPIGNORE,       "helpignore", 1, TRUE);
-  AddMacroDef(ltHELPONLY,         "helponly", 1);
-  AddMacroDef(ltHELPINPUT,        "helpinput", 1);
-  AddMacroDef(ltHELPFONTFAMILY,   "helpfontfamily", 1);
-  AddMacroDef(ltHELPFONTSIZE,     "helpfontsize", 1);
-  AddMacroDef(ltHELPREFN,         "helprefn", 2);
-  AddMacroDef(ltHELPREF,          "helpref", 2);
-  AddMacroDef(ltHFILL,            "hfill", 0);
-  AddMacroDef(ltHLINE,            "hline", 0);
-  AddMacroDef(ltHRULE,            "hrule", 0);
-  AddMacroDef(ltHSPACESTAR,       "hspace*", 1);
-  AddMacroDef(ltHSPACE,           "hspace", 1);
-  AddMacroDef(ltHSKIPSTAR,        "hskip*", 1);
-  AddMacroDef(ltHSKIP,            "hskip", 1);
-  AddMacroDef(lthuge,             "huge", 1);
-  AddMacroDef(ltHuge,             "Huge", 1);
-  AddMacroDef(ltHUGE,             "HUGE", 1);
-  AddMacroDef(ltHTMLIGNORE,       "htmlignore", 1);
-  AddMacroDef(ltHTMLONLY,         "htmlonly", 1);
-
-  AddMacroDef(ltIM,               "im", 0);
-  AddMacroDef(ltINCLUDEONLY,      "includeonly", 1);
-  AddMacroDef(ltINCLUDE,          "include", 1);
-  AddMacroDef(ltINDENTED,         "indented", 2);
-  AddMacroDef(ltINDEX,            "index", 1);
-  AddMacroDef(ltINPUT,            "input", 1, TRUE);
-  AddMacroDef(ltIOTA,             "iota", 0);
-  AddMacroDef(ltITEMIZE,          "itemize", 1);
-  AddMacroDef(ltITEM,             "item", 0);
-  AddMacroDef(ltIMAGEMAP,         "imagemap", 3);
-  AddMacroDef(ltIMAGEL,           "imagel", 2);
-  AddMacroDef(ltIMAGER,           "imager", 2);
-  AddMacroDef(ltIMAGE,            "image", 2);
-  AddMacroDef(ltIN,               "in", 0);
-  AddMacroDef(ltINFTY,            "infty", 0);
-  AddMacroDef(ltITSHAPE,          "itshape", 1);
-  AddMacroDef(ltIT,               "it", 1);
-  AddMacroDef(ltITEMSEP,          "itemsep", 1);
-  AddMacroDef(ltINSERTATLEVEL,    "insertatlevel", 2);
-
-  AddMacroDef(ltKAPPA,            "kappa", 0);
-  AddMacroDef(ltKILL,             "kill", 0);
-
-  AddMacroDef(ltLABEL,            "label", 1);
-  AddMacroDef(ltLAMBDA,           "lambda", 0);
-  AddMacroDef(ltCAP_LAMBDA,       "Lambda", 0);
-  AddMacroDef(ltlarge,            "large", 1);
-  AddMacroDef(ltLarge,            "Large", 1);
-  AddMacroDef(ltLARGE,            "LARGE", 1);
-  AddMacroDef(ltLATEXIGNORE,      "latexignore", 1);
-  AddMacroDef(ltLATEXONLY,        "latexonly", 1);
-  AddMacroDef(ltLATEX,            "LaTeX", 0);
-  AddMacroDef(ltLBOX,             "lbox", 1);
-  AddMacroDef(ltLBRACERAW,        "lbraceraw", 0);
-  AddMacroDef(ltLDOTS,            "ldots", 0);
-  AddMacroDef(ltLEQ,              "leq", 0);
-  AddMacroDef(ltLE,               "le", 0);
-  AddMacroDef(ltLEFTARROW,        "leftarrow", 0);
-  AddMacroDef(ltLEFTRIGHTARROW,   "leftrightarrow", 0);
-  AddMacroDef(ltLEFTARROW2,       "Leftarrow", 0);
-  AddMacroDef(ltLEFTRIGHTARROW2,  "Leftrightarrow", 0);
-  AddMacroDef(ltLINEBREAK,        "linebreak", 0);
-  AddMacroDef(ltLINKCOLOUR,       "linkcolour", 1);
-  AddMacroDef(ltLISTOFFIGURES,    "listoffigures", 0);
-  AddMacroDef(ltLISTOFTABLES,     "listoftables", 0);
-  AddMacroDef(ltLHEAD,            "lhead", 1);
-  AddMacroDef(ltLFOOT,            "lfoot", 1);
-  AddMacroDef(ltLOWERCASE,        "lowercase", 1);
-  AddMacroDef(ltLL,               "ll", 0);
-
-  AddMacroDef(ltMAKEGLOSSARY,     "makeglossary", 0);
-  AddMacroDef(ltMAKEINDEX,        "makeindex", 0);
-  AddMacroDef(ltMAKETITLE,        "maketitle", 0);
-  AddMacroDef(ltMARKRIGHT,        "markright", 1);
-  AddMacroDef(ltMARKBOTH,         "markboth", 2);
-  AddMacroDef(ltMARGINPARWIDTH,   "marginparwidth", 1);
-  AddMacroDef(ltMARGINPARSEP,     "marginparsep", 1);
-  AddMacroDef(ltMARGINPARODD,     "marginparodd", 1);
-  AddMacroDef(ltMARGINPAREVEN,    "marginpareven", 1);
-  AddMacroDef(ltMARGINPAR,        "marginpar", 1);
-  AddMacroDef(ltMBOX,             "mbox", 1);
-  AddMacroDef(ltMDSERIES,         "mdseries", 1);
-  AddMacroDef(ltMEMBERSECTION,    "membersection", 1);
-  AddMacroDef(ltMEMBER,           "member", 2);
-  AddMacroDef(ltMID,              "mid", 0);
-  AddMacroDef(ltMODELS,           "models", 0);
-  AddMacroDef(ltMP,               "mp", 0);
-  AddMacroDef(ltMULTICOLUMN,      "multicolumn", 3);
-  AddMacroDef(ltMU,               "mu", 0);
-
-  AddMacroDef(ltNABLA,            "nabla", 0);
-  AddMacroDef(ltNEG,              "neg", 0);
-  AddMacroDef(ltNEQ,              "neq", 0);
-  AddMacroDef(ltNEWCOUNTER,       "newcounter", 1, FALSE, (bool)FORBID_ABSOLUTELY);
-  AddMacroDef(ltNEWLINE,          "newline", 0);
-  AddMacroDef(ltNEWPAGE,          "newpage", 0);
-  AddMacroDef(ltNI,               "ni", 0);
-  AddMacroDef(ltNOCITE,           "nocite", 1);
-  AddMacroDef(ltNOINDENT,         "noindent", 0);
-  AddMacroDef(ltNOLINEBREAK,      "nolinebreak", 0);
-  AddMacroDef(ltNOPAGEBREAK,      "nopagebreak", 0);
-  AddMacroDef(ltNORMALSIZE,       "normalsize", 1);
-  AddMacroDef(ltNORMALBOX,        "normalbox", 1);
-  AddMacroDef(ltNORMALBOXD,       "normalboxd", 1);
-  AddMacroDef(ltNOTEQ,            "noteq", 0);
-  AddMacroDef(ltNOTIN,            "notin", 0);
-  AddMacroDef(ltNOTSUBSET,        "notsubset", 0);
-  AddMacroDef(ltNU,               "nu", 0);
-
-  AddMacroDef(ltODDSIDEMARGIN,    "oddsidemargin", 1);
-  AddMacroDef(ltOMEGA,            "omega", 0);
-  AddMacroDef(ltCAP_OMEGA,        "Omega", 0);
-  AddMacroDef(ltONECOLUMN,        "onecolumn", 0);
-  AddMacroDef(ltOPLUS,            "oplus", 0);
-  AddMacroDef(ltOSLASH,           "oslash", 0);
-  AddMacroDef(ltOTIMES,           "otimes", 0);
-
-  AddMacroDef(ltPAGEBREAK,        "pagebreak", 0);
-  AddMacroDef(ltPAGEREF,          "pageref", 1);
-  AddMacroDef(ltPAGESTYLE,        "pagestyle", 1);
-  AddMacroDef(ltPAGENUMBERING,    "pagenumbering", 1);
-  AddMacroDef(ltPARAGRAPHSTAR,    "paragraph*", 1);
-  AddMacroDef(ltPARAGRAPH,        "paragraph", 1);
-  AddMacroDef(ltPARALLEL,         "parallel", 0);
-  AddMacroDef(ltPARAM,            "param", 2);
-  AddMacroDef(ltPARINDENT,        "parindent", 1);
-  AddMacroDef(ltPARSKIP,          "parskip", 1);
-  AddMacroDef(ltPARTIAL,          "partial", 0);
-  AddMacroDef(ltPARTSTAR,         "part*", 1);
-  AddMacroDef(ltPART,             "part", 1);
-  AddMacroDef(ltPAR,              "par", 0);
-  AddMacroDef(ltPERP,             "perp", 0);
-  AddMacroDef(ltPHI,              "phi", 0);
-  AddMacroDef(ltCAP_PHI,          "Phi", 0);
-  AddMacroDef(ltPFUNC,            "pfunc", 3);
-  AddMacroDef(ltPICTURE,          "picture", 1);
-  AddMacroDef(ltPI,               "pi", 0);
-  AddMacroDef(ltCAP_PI,           "Pi", 0);
-  AddMacroDef(ltPM,               "pm", 0);
-  AddMacroDef(ltPOPREFONLY,       "poprefonly", 1);
-  AddMacroDef(ltPOPREF,           "popref", 2);
-  AddMacroDef(ltPOUNDS,           "pounds", 0);
-  AddMacroDef(ltPREC,             "prec", 0);
-  AddMacroDef(ltPRECEQ,           "preceq", 0);
-  AddMacroDef(ltPRINTINDEX,       "printindex", 0);
-  AddMacroDef(ltPROPTO,           "propto", 0);
-  AddMacroDef(ltPSBOXTO,          "psboxto", 1, FALSE, (bool)FORBID_ABSOLUTELY);
-  AddMacroDef(ltPSBOX,            "psbox", 1, FALSE, (bool)FORBID_ABSOLUTELY);
-  AddMacroDef(ltPSI,              "psi", 0);
-  AddMacroDef(ltCAP_PSI,          "Psi", 0);
-
-  AddMacroDef(ltQUOTE,            "quote", 1);
-  AddMacroDef(ltQUOTATION,        "quotation", 1);
-
-  AddMacroDef(ltRAGGEDBOTTOM,     "raggedbottom", 0);
-  AddMacroDef(ltRAGGEDLEFT,       "raggedleft", 0);
-  AddMacroDef(ltRAGGEDRIGHT,      "raggedright", 0);
-  AddMacroDef(ltRBRACERAW,        "rbraceraw", 0);
-  AddMacroDef(ltREF,              "ref", 1);
-  AddMacroDef(ltREGISTERED,       "registered", 0);
-  AddMacroDef(ltRE,               "we", 0);
-  AddMacroDef(ltRHO,              "rho", 0);
-  AddMacroDef(ltRIGHTARROW,       "rightarrow", 0);
-  AddMacroDef(ltRIGHTARROW2,      "rightarrow2", 0);
-  AddMacroDef(ltRMFAMILY,         "rmfamily", 1);
-  AddMacroDef(ltRM,               "rm", 1);
-  AddMacroDef(ltROMAN,            "roman", 1);
-  AddMacroDef(ltROMAN2,           "Roman", 1);
+  AddMacroDef(ltBIBLIOGRAPHYSTYLE,   _T("bibliographystyle"), 1);
+  AddMacroDef(ltBIBLIOGRAPHY,        _T("bibliography"), 1);
+  AddMacroDef(ltBIGTRIANGLEDOWN,     _T("bigtriangledown"), 0);
+  AddMacroDef(ltBOT,                 _T("bot"), 0);
+  AddMacroDef(ltBOXIT,               _T("boxit"), 1);
+  AddMacroDef(ltBOX,                 _T("box"), 0);
+  AddMacroDef(ltBRCLEAR,             _T("brclear"), 0);
+  AddMacroDef(ltBULLET,              _T("bullet"), 0);
+
+  AddMacroDef(ltCAPTIONSTAR,         _T("caption*"), 1);
+  AddMacroDef(ltCAPTION,             _T("caption"), 1);
+  AddMacroDef(ltCAP,                 _T("cap"), 0);
+  AddMacroDef(ltCDOTS,               _T("cdots"), 0);
+  AddMacroDef(ltCDOT,                _T("cdot"), 0);
+  AddMacroDef(ltCENTERLINE,          _T("centerline"), 1);
+  AddMacroDef(ltCENTERING,           _T("centering"), 0);
+  AddMacroDef(ltCENTER,              _T("center"), 1);
+  AddMacroDef(ltCEXTRACT,            _T("cextract"), 0);
+  AddMacroDef(ltCHAPTERHEADING,      _T("chapterheading"), 1);
+  AddMacroDef(ltCHAPTERSTAR,         _T("chapter*"), 1);
+  AddMacroDef(ltCHAPTER,             _T("chapter"), 1);
+  AddMacroDef(ltCHI,                 _T("chi"), 0);
+  AddMacroDef(ltCINSERT,             _T("cinsert"), 0);
+  AddMacroDef(ltCIRC,                _T("circ"), 0);
+  AddMacroDef(ltCITE,                _T("cite"), 1);
+  AddMacroDef(ltCLASS,               _T("class"), 1);
+  AddMacroDef(ltCLEARDOUBLEPAGE,     _T("cleardoublepage"), 0);
+  AddMacroDef(ltCLEARPAGE,           _T("clearpage"), 0);
+  AddMacroDef(ltCLINE,               _T("cline"), 1);
+  AddMacroDef(ltCLIPSFUNC,           _T("clipsfunc"), 3);
+  AddMacroDef(ltCLUBSUIT,            _T("clubsuit"), 0);
+  AddMacroDef(ltCOLUMNSEP,           _T("columnsep"), 1);
+  AddMacroDef(ltCOMMENT,             _T("comment"), 1, TRUE);
+  AddMacroDef(ltCONG,                _T("cong"), 0);
+  AddMacroDef(ltCOPYRIGHT,           _T("copyright"), 0);
+  AddMacroDef(ltCPARAM,              _T("cparam"), 2);
+  AddMacroDef(ltCHEAD,               _T("chead"), 1);
+  AddMacroDef(ltCFOOT,               _T("cfoot"), 1);
+  AddMacroDef(ltCUP,                 _T("cup"), 0);
+
+  AddMacroDef(ltDASHV,               _T("dashv"), 0);
+  AddMacroDef(ltDATE,                _T("date"), 1);
+  AddMacroDef(ltDELTA,               _T("delta"), 0);
+  AddMacroDef(ltCAP_DELTA,           _T("Delta"), 0);
+  AddMacroDef(ltDEFINECOLOUR,        _T("definecolour"), 4);
+  AddMacroDef(ltDEFINECOLOR,         _T("definecolor"), 4);
+  AddMacroDef(ltDESCRIPTION,         _T("description"), 1);
+  AddMacroDef(ltDESTRUCT,            _T("destruct"), 1);
+  AddMacroDef(ltDIAMOND2,            _T("diamond2"), 0);
+  AddMacroDef(ltDIAMOND,             _T("diamond"), 0);
+  AddMacroDef(ltDIV,                 _T("div"), 0);
+  AddMacroDef(ltDOCUMENTCLASS,       _T("documentclass"), 1);
+  AddMacroDef(ltDOCUMENTSTYLE,       _T("documentstyle"), 1);
+  AddMacroDef(ltDOCUMENT,            _T("document"), 1);
+  AddMacroDef(ltDOUBLESPACE,         _T("doublespace"), 1);
+  AddMacroDef(ltDOTEQ,               _T("doteq"), 0);
+  AddMacroDef(ltDOWNARROW,           _T("downarrow"), 0);
+  AddMacroDef(ltDOWNARROW2,          _T("Downarrow"), 0);
+
+  AddMacroDef(ltEMPTYSET,            _T("emptyset"), 0);
+  AddMacroDef(ltEMPH,                _T("emph"), 1);
+  AddMacroDef(ltEM,                  _T("em"), 1);
+  AddMacroDef(ltENUMERATE,           _T("enumerate"), 1);
+  AddMacroDef(ltEPSILON,             _T("epsilon"), 0);
+  AddMacroDef(ltEQUATION,            _T("equation"), 1);
+  AddMacroDef(ltEQUIV,               _T("equiv"), 0);
+  AddMacroDef(ltETA,                 _T("eta"), 0);
+  AddMacroDef(ltEVENSIDEMARGIN,      _T("evensidemargin"), 1);
+  AddMacroDef(ltEXISTS,              _T("exists"), 0);
+
+  AddMacroDef(ltFBOX,                _T("fbox"), 1);
+  AddMacroDef(ltFCOL,                _T("fcol"), 2);
+  AddMacroDef(ltFIGURE,              _T("figure"), 1);
+  AddMacroDef(ltFIGURESTAR,          _T("figure*"), 1);
+  AddMacroDef(ltFLUSHLEFT,           _T("flushleft"), 1);
+  AddMacroDef(ltFLUSHRIGHT,          _T("flushright"), 1);
+  AddMacroDef(ltFOLLOWEDLINKCOLOUR,  _T("followedlinkcolour"), 1);
+  AddMacroDef(ltFOOTHEIGHT,          _T("footheight"), 1);
+  AddMacroDef(ltFOOTNOTEPOPUP,       _T("footnotepopup"), 2);
+  AddMacroDef(ltFOOTNOTE,            _T("footnote"), 1);
+  AddMacroDef(ltFOOTSKIP,            _T("footskip"), 1);
+  AddMacroDef(ltFORALL,              _T("forall"), 0);
+  AddMacroDef(ltFRAMEBOX,            _T("framebox"), 1);
+  AddMacroDef(ltFROWN,               _T("frown"), 0);
+  AddMacroDef(ltFUNCTIONSECTION,     _T("functionsection"), 1);
+  AddMacroDef(ltFUNC,                _T("func"), 3);
+  AddMacroDef(ltFOOTNOTESIZE,        _T("footnotesize"), 0);
+  AddMacroDef(ltFANCYPLAIN,          _T("fancyplain"), 2);
+
+  AddMacroDef(ltGAMMA,               _T("gamma"), 0);
+  AddMacroDef(ltCAP_GAMMA,           _T("Gamma"), 0);
+  AddMacroDef(ltGEQ,                 _T("geq"), 0);
+  AddMacroDef(ltGE,                  _T("ge"), 0);
+  AddMacroDef(ltGG,                  _T("gg"), 0);
+  AddMacroDef(ltGLOSSARY,            _T("glossary"), 1);
+  AddMacroDef(ltGLOSS,               _T("gloss"), 1);
+
+  AddMacroDef(ltHEADHEIGHT,          _T("headheight"), 1);
+  AddMacroDef(ltHEARTSUIT,           _T("heartsuit"), 0);
+  AddMacroDef(ltHELPGLOSSARY,        _T("helpglossary"), 1);
+  AddMacroDef(ltHELPIGNORE,          _T("helpignore"), 1, TRUE);
+  AddMacroDef(ltHELPONLY,            _T("helponly"), 1);
+  AddMacroDef(ltHELPINPUT,           _T("helpinput"), 1);
+  AddMacroDef(ltHELPFONTFAMILY,      _T("helpfontfamily"), 1);
+  AddMacroDef(ltHELPFONTSIZE,        _T("helpfontsize"), 1);
+  AddMacroDef(ltHELPREFN,            _T("helprefn"), 2);
+  AddMacroDef(ltHELPREF,             _T("helpref"), 2);
+  AddMacroDef(ltHFILL,               _T("hfill"), 0);
+  AddMacroDef(ltHLINE,               _T("hline"), 0);
+  AddMacroDef(ltHRULE,               _T("hrule"), 0);
+  AddMacroDef(ltHSPACESTAR,          _T("hspace*"), 1);
+  AddMacroDef(ltHSPACE,              _T("hspace"), 1);
+  AddMacroDef(ltHSKIPSTAR,           _T("hskip*"), 1);
+  AddMacroDef(ltHSKIP,               _T("hskip"), 1);
+  AddMacroDef(lthuge,                _T("huge"), 1);
+  AddMacroDef(ltHuge,                _T("Huge"), 1);
+  AddMacroDef(ltHUGE,                _T("HUGE"), 1);
+  AddMacroDef(ltHTMLIGNORE,          _T("htmlignore"), 1);
+  AddMacroDef(ltHTMLONLY,            _T("htmlonly"), 1);
+
+  AddMacroDef(ltIM,                  _T("im"), 0);
+  AddMacroDef(ltINCLUDEONLY,         _T("includeonly"), 1);
+  AddMacroDef(ltINCLUDE,             _T("include"), 1);
+  AddMacroDef(ltINDENTED,            _T("indented"), 2);
+  AddMacroDef(ltINDEX,               _T("index"), 1);
+  AddMacroDef(ltINPUT,               _T("input"), 1, TRUE);
+  AddMacroDef(ltIOTA,                _T("iota"), 0);
+  AddMacroDef(ltITEMIZE,             _T("itemize"), 1);
+  AddMacroDef(ltITEM,                _T("item"), 0);
+  AddMacroDef(ltIMAGEMAP,            _T("imagemap"), 3);
+  AddMacroDef(ltIMAGEL,              _T("imagel"), 2);
+  AddMacroDef(ltIMAGER,              _T("imager"), 2);
+  AddMacroDef(ltIMAGE,               _T("image"), 2);
+  AddMacroDef(ltIN,                  _T("in"), 0);
+  AddMacroDef(ltINFTY,               _T("infty"), 0);
+  AddMacroDef(ltITSHAPE,             _T("itshape"), 1);
+  AddMacroDef(ltIT,                  _T("it"), 1);
+  AddMacroDef(ltITEMSEP,             _T("itemsep"), 1);
+  AddMacroDef(ltINSERTATLEVEL,       _T("insertatlevel"), 2);
+
+  AddMacroDef(ltKAPPA,               _T("kappa"), 0);
+  AddMacroDef(ltKILL,                _T("kill"), 0);
+
+  AddMacroDef(ltLABEL,               _T("label"), 1);
+  AddMacroDef(ltLAMBDA,              _T("lambda"), 0);
+  AddMacroDef(ltCAP_LAMBDA,          _T("Lambda"), 0);
+  AddMacroDef(ltlarge,               _T("large"), 1);
+  AddMacroDef(ltLarge,               _T("Large"), 1);
+  AddMacroDef(ltLARGE,               _T("LARGE"), 1);
+  AddMacroDef(ltLATEXIGNORE,         _T("latexignore"), 1);
+  AddMacroDef(ltLATEXONLY,           _T("latexonly"), 1);
+  AddMacroDef(ltLATEX,               _T("LaTeX"), 0);
+  AddMacroDef(ltLBOX,                _T("lbox"), 1);
+  AddMacroDef(ltLBRACERAW,           _T("lbraceraw"), 0);
+  AddMacroDef(ltLDOTS,               _T("ldots"), 0);
+  AddMacroDef(ltLEQ,                 _T("leq"), 0);
+  AddMacroDef(ltLE,                  _T("le"), 0);
+  AddMacroDef(ltLEFTARROW,           _T("leftarrow"), 0);
+  AddMacroDef(ltLEFTRIGHTARROW,      _T("leftrightarrow"), 0);
+  AddMacroDef(ltLEFTARROW2,          _T("Leftarrow"), 0);
+  AddMacroDef(ltLEFTRIGHTARROW2,     _T("Leftrightarrow"), 0);
+  AddMacroDef(ltLINEBREAK,           _T("linebreak"), 0);
+  AddMacroDef(ltLINKCOLOUR,          _T("linkcolour"), 1);
+  AddMacroDef(ltLISTOFFIGURES,       _T("listoffigures"), 0);
+  AddMacroDef(ltLISTOFTABLES,        _T("listoftables"), 0);
+  AddMacroDef(ltLHEAD,               _T("lhead"), 1);
+  AddMacroDef(ltLFOOT,               _T("lfoot"), 1);
+  AddMacroDef(ltLOWERCASE,           _T("lowercase"), 1);
+  AddMacroDef(ltLL,                  _T("ll"), 0);
+
+  AddMacroDef(ltMAKEGLOSSARY,        _T("makeglossary"), 0);
+  AddMacroDef(ltMAKEINDEX,           _T("makeindex"), 0);
+  AddMacroDef(ltMAKETITLE,           _T("maketitle"), 0);
+  AddMacroDef(ltMARKRIGHT,           _T("markright"), 1);
+  AddMacroDef(ltMARKBOTH,            _T("markboth"), 2);
+  AddMacroDef(ltMARGINPARWIDTH,      _T("marginparwidth"), 1);
+  AddMacroDef(ltMARGINPARSEP,        _T("marginparsep"), 1);
+  AddMacroDef(ltMARGINPARODD,        _T("marginparodd"), 1);
+  AddMacroDef(ltMARGINPAREVEN,       _T("marginpareven"), 1);
+  AddMacroDef(ltMARGINPAR,           _T("marginpar"), 1);
+  AddMacroDef(ltMBOX,                _T("mbox"), 1);
+  AddMacroDef(ltMDSERIES,            _T("mdseries"), 1);
+  AddMacroDef(ltMEMBERSECTION,       _T("membersection"), 1);
+  AddMacroDef(ltMEMBER,              _T("member"), 2);
+  AddMacroDef(ltMID,                 _T("mid"), 0);
+  AddMacroDef(ltMODELS,              _T("models"), 0);
+  AddMacroDef(ltMP,                  _T("mp"), 0);
+  AddMacroDef(ltMULTICOLUMN,         _T("multicolumn"), 3);
+  AddMacroDef(ltMU,                  _T("mu"), 0);
+
+  AddMacroDef(ltNABLA,               _T("nabla"), 0);
+  AddMacroDef(ltNEG,                 _T("neg"), 0);
+  AddMacroDef(ltNEQ,                 _T("neq"), 0);
+  AddMacroDef(ltNEWCOUNTER,          _T("newcounter"), 1, FALSE, (bool)FORBID_ABSOLUTELY);
+  AddMacroDef(ltNEWLINE,             _T("newline"), 0);
+  AddMacroDef(ltNEWPAGE,             _T("newpage"), 0);
+  AddMacroDef(ltNI,                  _T("ni"), 0);
+  AddMacroDef(ltNOCITE,              _T("nocite"), 1);
+  AddMacroDef(ltNOINDENT,            _T("noindent"), 0);
+  AddMacroDef(ltNOLINEBREAK,         _T("nolinebreak"), 0);
+  AddMacroDef(ltNOPAGEBREAK,         _T("nopagebreak"), 0);
+  AddMacroDef(ltNORMALSIZE,          _T("normalsize"), 1);
+  AddMacroDef(ltNORMALBOX,           _T("normalbox"), 1);
+  AddMacroDef(ltNORMALBOXD,          _T("normalboxd"), 1);
+  AddMacroDef(ltNOTEQ,               _T("noteq"), 0);
+  AddMacroDef(ltNOTIN,               _T("notin"), 0);
+  AddMacroDef(ltNOTSUBSET,           _T("notsubset"), 0);
+  AddMacroDef(ltNU,                  _T("nu"), 0);
+
+  AddMacroDef(ltODDSIDEMARGIN,       _T("oddsidemargin"), 1);
+  AddMacroDef(ltOMEGA,               _T("omega"), 0);
+  AddMacroDef(ltCAP_OMEGA,           _T("Omega"), 0);
+  AddMacroDef(ltONECOLUMN,           _T("onecolumn"), 0);
+  AddMacroDef(ltOPLUS,               _T("oplus"), 0);
+  AddMacroDef(ltOSLASH,              _T("oslash"), 0);
+  AddMacroDef(ltOTIMES,              _T("otimes"), 0);
+
+  AddMacroDef(ltPAGEBREAK,           _T("pagebreak"), 0);
+  AddMacroDef(ltPAGEREF,             _T("pageref"), 1);
+  AddMacroDef(ltPAGESTYLE,           _T("pagestyle"), 1);
+  AddMacroDef(ltPAGENUMBERING,       _T("pagenumbering"), 1);
+  AddMacroDef(ltPARAGRAPHSTAR,       _T("paragraph*"), 1);
+  AddMacroDef(ltPARAGRAPH,           _T("paragraph"), 1);
+  AddMacroDef(ltPARALLEL,            _T("parallel"), 0);
+  AddMacroDef(ltPARAM,               _T("param"), 2);
+  AddMacroDef(ltPARINDENT,           _T("parindent"), 1);
+  AddMacroDef(ltPARSKIP,             _T("parskip"), 1);
+  AddMacroDef(ltPARTIAL,             _T("partial"), 0);
+  AddMacroDef(ltPARTSTAR,            _T("part*"), 1);
+  AddMacroDef(ltPART,                _T("part"), 1);
+  AddMacroDef(ltPAR,                 _T("par"), 0);
+  AddMacroDef(ltPERP,                _T("perp"), 0);
+  AddMacroDef(ltPHI,                 _T("phi"), 0);
+  AddMacroDef(ltCAP_PHI,             _T("Phi"), 0);
+  AddMacroDef(ltPFUNC,               _T("pfunc"), 3);
+  AddMacroDef(ltPICTURE,             _T("picture"), 1);
+  AddMacroDef(ltPI,                  _T("pi"), 0);
+  AddMacroDef(ltCAP_PI,              _T("Pi"), 0);
+  AddMacroDef(ltPM,                  _T("pm"), 0);
+  AddMacroDef(ltPOPREFONLY,          _T("poprefonly"), 1);
+  AddMacroDef(ltPOPREF,              _T("popref"), 2);
+  AddMacroDef(ltPOUNDS,              _T("pounds"), 0);
+  AddMacroDef(ltPREC,                _T("prec"), 0);
+  AddMacroDef(ltPRECEQ,              _T("preceq"), 0);
+  AddMacroDef(ltPRINTINDEX,          _T("printindex"), 0);
+  AddMacroDef(ltPROPTO,              _T("propto"), 0);
+  AddMacroDef(ltPSBOXTO,             _T("psboxto"), 1, FALSE, (bool)FORBID_ABSOLUTELY);
+  AddMacroDef(ltPSBOX,               _T("psbox"), 1, FALSE, (bool)FORBID_ABSOLUTELY);
+  AddMacroDef(ltPSI,                 _T("psi"), 0);
+  AddMacroDef(ltCAP_PSI,             _T("Psi"), 0);
+
+  AddMacroDef(ltQUOTE,               _T("quote"), 1);
+  AddMacroDef(ltQUOTATION,           _T("quotation"), 1);
+
+  AddMacroDef(ltRAGGEDBOTTOM,        _T("raggedbottom"), 0);
+  AddMacroDef(ltRAGGEDLEFT,          _T("raggedleft"), 0);
+  AddMacroDef(ltRAGGEDRIGHT,         _T("raggedright"), 0);
+  AddMacroDef(ltRBRACERAW,           _T("rbraceraw"), 0);
+  AddMacroDef(ltREF,                 _T("ref"), 1);
+  AddMacroDef(ltREGISTERED,          _T("registered"), 0);
+  AddMacroDef(ltRE,                  _T("we"), 0);
+  AddMacroDef(ltRHO,                 _T("rho"), 0);
+  AddMacroDef(ltRIGHTARROW,          _T("rightarrow"), 0);
+  AddMacroDef(ltRIGHTARROW2,         _T("rightarrow2"), 0);
+  AddMacroDef(ltRMFAMILY,            _T("rmfamily"), 1);
+  AddMacroDef(ltRM,                  _T("rm"), 1);
+  AddMacroDef(ltROMAN,               _T("roman"), 1);
+  AddMacroDef(ltROMAN2,              _T("Roman"), 1);
 //  AddMacroDef(lt"row", 1);
-  AddMacroDef(ltRTFSP,            "rtfsp", 0);
-  AddMacroDef(ltRTFIGNORE,        "rtfignore", 1);
-  AddMacroDef(ltRTFONLY,          "rtfonly", 1);
-  AddMacroDef(ltRULEDROW,         "ruledrow", 1);
-  AddMacroDef(ltDRULED,           "druled", 1);
-  AddMacroDef(ltRULE,             "rule", 2);
-  AddMacroDef(ltRHEAD,            "rhead", 1);
-  AddMacroDef(ltRFOOT,            "rfoot", 1);
-  AddMacroDef(ltROW,              "row", 1);
-
-  AddMacroDef(ltSCSHAPE,          "scshape", 1);
-  AddMacroDef(ltSC,               "sc", 1);
-  AddMacroDef(ltSECTIONHEADING,   "sectionheading", 1);
-  AddMacroDef(ltSECTIONSTAR,      "section*", 1);
-  AddMacroDef(ltSECTION,          "section", 1);
-  AddMacroDef(ltSETCOUNTER,       "setcounter", 2);
-  AddMacroDef(ltSFFAMILY,         "sffamily", 1);
-  AddMacroDef(ltSF,               "sf", 1);
-  AddMacroDef(ltSHARP,            "sharp", 0);
-  AddMacroDef(ltSHORTCITE,        "shortcite", 1);
-  AddMacroDef(ltSIGMA,            "sigma", 0);
-  AddMacroDef(ltCAP_SIGMA,        "Sigma", 0);
-  AddMacroDef(ltSIM,              "sim", 0);
-  AddMacroDef(ltSIMEQ,            "simeq", 0);
-  AddMacroDef(ltSINGLESPACE,      "singlespace", 1);
-  AddMacroDef(ltSIZEDBOX,         "sizedbox", 2);
-  AddMacroDef(ltSIZEDBOXD,        "sizedboxd", 2);
-  AddMacroDef(ltSLOPPYPAR,        "sloppypar", 1);
-  AddMacroDef(ltSLOPPY,           "sloppy", 0);
-  AddMacroDef(ltSLSHAPE,          "slshape", 1);
-  AddMacroDef(ltSL,               "sl", 1);
-  AddMacroDef(ltSMALL,            "small", 1);
-  AddMacroDef(ltSMILE,            "smile", 0);
-  AddMacroDef(ltSS,               "ss", 0);
-  AddMacroDef(ltSTAR,             "star", 0);
-  AddMacroDef(ltSUBITEM,          "subitem", 0);
-  AddMacroDef(ltSUBPARAGRAPHSTAR, "subparagraph*", 1);
-  AddMacroDef(ltSUBPARAGRAPH,     "subparagraph", 1);
-  AddMacroDef(ltSPECIAL,          "special", 1);
-  AddMacroDef(ltSUBSECTIONSTAR,   "subsection*", 1);
-  AddMacroDef(ltSUBSECTION,       "subsection", 1);
-  AddMacroDef(ltSUBSETEQ,         "subseteq", 0);
-  AddMacroDef(ltSUBSET,           "subset", 0);
-  AddMacroDef(ltSUCC,             "succ", 0);
-  AddMacroDef(ltSUCCEQ,           "succeq", 0);
-  AddMacroDef(ltSUPSETEQ,         "supseteq", 0);
-  AddMacroDef(ltSUPSET,           "supset", 0);
-  AddMacroDef(ltSUBSUBSECTIONSTAR,"subsubsection*", 1);
-  AddMacroDef(ltSUBSUBSECTION,    "subsubsection", 1);
-  AddMacroDef(ltSUPERTABULAR,     "supertabular", 2, FALSE);
-  AddMacroDef(ltSURD,             "surd", 0);
-  AddMacroDef(ltSCRIPTSIZE,       "scriptsize", 1);
-  AddMacroDef(ltSETHEADER,        "setheader", 6);
-  AddMacroDef(ltSETFOOTER,        "setfooter", 6);
-  AddMacroDef(ltSETHOTSPOTCOLOUR, "sethotspotcolour", 1);
-  AddMacroDef(ltSETHOTSPOTCOLOR,  "sethotspotcolor", 1);
-  AddMacroDef(ltSETHOTSPOTUNDERLINE, "sethotspotunderline", 1);
-  AddMacroDef(ltSETTRANSPARENCY,  "settransparency", 1);
-  AddMacroDef(ltSPADESUIT,        "spadesuit", 0);
-
-  AddMacroDef(ltTABBING,          "tabbing", 2);
-  AddMacroDef(ltTABLEOFCONTENTS,  "tableofcontents", 0);
-  AddMacroDef(ltTABLE,            "table", 1);
-  AddMacroDef(ltTABULAR,          "tabular", 2, FALSE);
-  AddMacroDef(ltTAB,              "tab", 0);
-  AddMacroDef(ltTAU,              "tau", 0);
-  AddMacroDef(ltTEXTRM,           "textrm", 1);
-  AddMacroDef(ltTEXTSF,           "textsf", 1);
-  AddMacroDef(ltTEXTTT,           "texttt", 1);
-  AddMacroDef(ltTEXTBF,           "textbf", 1);
-  AddMacroDef(ltTEXTIT,           "textit", 1);
-  AddMacroDef(ltTEXTSL,           "textsl", 1);
-  AddMacroDef(ltTEXTSC,           "textsc", 1);
-  AddMacroDef(ltTEXTWIDTH,        "textwidth", 1);
-  AddMacroDef(ltTEXTHEIGHT,       "textheight", 1);
-  AddMacroDef(ltTEXTCOLOUR,       "textcolour", 1);
-  AddMacroDef(ltTEX,              "TeX", 0);
-  AddMacroDef(ltTHEBIBLIOGRAPHY,  "thebibliography", 2);
-  AddMacroDef(ltTHETA,            "theta", 0);
-  AddMacroDef(ltTIMES,            "times", 0);
-  AddMacroDef(ltCAP_THETA,        "Theta", 0);
-  AddMacroDef(ltTITLEPAGE,        "titlepage", 1);
-  AddMacroDef(ltTITLE,            "title", 1);
-  AddMacroDef(ltTINY,             "tiny", 1);
-  AddMacroDef(ltTODAY,            "today", 0);
-  AddMacroDef(ltTOPMARGIN,        "topmargin", 1);
-  AddMacroDef(ltTOPSKIP,          "topskip", 1);
-  AddMacroDef(ltTRIANGLE,         "triangle", 0);
-  AddMacroDef(ltTTFAMILY,         "ttfamily", 1);
-  AddMacroDef(ltTT,               "tt", 1);
-  AddMacroDef(ltTYPEIN,           "typein", 1);
-  AddMacroDef(ltTYPEOUT,          "typeout", 1);
-  AddMacroDef(ltTWOCOLWIDTHA,     "twocolwidtha", 1);
-  AddMacroDef(ltTWOCOLWIDTHB,     "twocolwidthb", 1);
-  AddMacroDef(ltTWOCOLSPACING,    "twocolspacing", 1);
-  AddMacroDef(ltTWOCOLITEMRULED,  "twocolitemruled", 2);
-  AddMacroDef(ltTWOCOLITEM,       "twocolitem", 2);
-  AddMacroDef(ltTWOCOLLIST,       "twocollist", 1);
-  AddMacroDef(ltTWOCOLUMN,        "twocolumn", 0);
-  AddMacroDef(ltTHEPAGE,          "thepage", 0);
-  AddMacroDef(ltTHECHAPTER,       "thechapter", 0);
-  AddMacroDef(ltTHESECTION,       "thesection", 0);
-  AddMacroDef(ltTHISPAGESTYLE,    "thispagestyle", 1);
-
-  AddMacroDef(ltUNDERLINE,        "underline", 1);
-  AddMacroDef(ltUPSILON,          "upsilon", 0);
-  AddMacroDef(ltCAP_UPSILON,      "Upsilon", 0);
-  AddMacroDef(ltUPARROW,          "uparrow", 0);
-  AddMacroDef(ltUPARROW2,         "Uparrow", 0);
-  AddMacroDef(ltUPPERCASE,        "uppercase", 1);
-  AddMacroDef(ltUPSHAPE,          "upshape", 1);
-  AddMacroDef(ltURLREF,           "urlref", 2);
-  AddMacroDef(ltUSEPACKAGE,       "usepackage", 1);
+  AddMacroDef(ltRTFSP,               _T("rtfsp"), 0);
+  AddMacroDef(ltRTFIGNORE,           _T("rtfignore"), 1);
+  AddMacroDef(ltRTFONLY,             _T("rtfonly"), 1);
+  AddMacroDef(ltRULEDROW,            _T("ruledrow"), 1);
+  AddMacroDef(ltDRULED,              _T("druled"), 1);
+  AddMacroDef(ltRULE,                _T("rule"), 2);
+  AddMacroDef(ltRHEAD,               _T("rhead"), 1);
+  AddMacroDef(ltRFOOT,               _T("rfoot"), 1);
+  AddMacroDef(ltROW,                 _T("row"), 1);
+
+  AddMacroDef(ltSCSHAPE,             _T("scshape"), 1);
+  AddMacroDef(ltSC,                  _T("sc"), 1);
+  AddMacroDef(ltSECTIONHEADING,      _T("sectionheading"), 1);
+  AddMacroDef(ltSECTIONSTAR,         _T("section*"), 1);
+  AddMacroDef(ltSECTION,             _T("section"), 1);
+  AddMacroDef(ltSETCOUNTER,          _T("setcounter"), 2);
+  AddMacroDef(ltSFFAMILY,            _T("sffamily"), 1);
+  AddMacroDef(ltSF,                  _T("sf"), 1);
+  AddMacroDef(ltSHARP,               _T("sharp"), 0);
+  AddMacroDef(ltSHORTCITE,           _T("shortcite"), 1);
+  AddMacroDef(ltSIGMA,               _T("sigma"), 0);
+  AddMacroDef(ltCAP_SIGMA,           _T("Sigma"), 0);
+  AddMacroDef(ltSIM,                 _T("sim"), 0);
+  AddMacroDef(ltSIMEQ,               _T("simeq"), 0);
+  AddMacroDef(ltSINGLESPACE,         _T("singlespace"), 1);
+  AddMacroDef(ltSIZEDBOX,            _T("sizedbox"), 2);
+  AddMacroDef(ltSIZEDBOXD,           _T("sizedboxd"), 2);
+  AddMacroDef(ltSLOPPYPAR,           _T("sloppypar"), 1);
+  AddMacroDef(ltSLOPPY,              _T("sloppy"), 0);
+  AddMacroDef(ltSLSHAPE,             _T("slshape"), 1);
+  AddMacroDef(ltSL,                  _T("sl"), 1);
+  AddMacroDef(ltSMALL,               _T("small"), 1);
+  AddMacroDef(ltSMILE,               _T("smile"), 0);
+  AddMacroDef(ltSS,                  _T("ss"), 0);
+  AddMacroDef(ltSTAR,                _T("star"), 0);
+  AddMacroDef(ltSUBITEM,             _T("subitem"), 0);
+  AddMacroDef(ltSUBPARAGRAPHSTAR,    _T("subparagraph*"), 1);
+  AddMacroDef(ltSUBPARAGRAPH,        _T("subparagraph"), 1);
+  AddMacroDef(ltSPECIAL,             _T("special"), 1);
+  AddMacroDef(ltSUBSECTIONSTAR,      _T("subsection*"), 1);
+  AddMacroDef(ltSUBSECTION,          _T("subsection"), 1);
+  AddMacroDef(ltSUBSETEQ,            _T("subseteq"), 0);
+  AddMacroDef(ltSUBSET,              _T("subset"), 0);
+  AddMacroDef(ltSUCC,                _T("succ"), 0);
+  AddMacroDef(ltSUCCEQ,              _T("succeq"), 0);
+  AddMacroDef(ltSUPSETEQ,            _T("supseteq"), 0);
+  AddMacroDef(ltSUPSET,              _T("supset"), 0);
+  AddMacroDef(ltSUBSUBSECTIONSTAR,   _T("subsubsection*"), 1);
+  AddMacroDef(ltSUBSUBSECTION,       _T("subsubsection"), 1);
+  AddMacroDef(ltSUPERTABULAR,        _T("supertabular"), 2, FALSE);
+  AddMacroDef(ltSURD,                _T("surd"), 0);
+  AddMacroDef(ltSCRIPTSIZE,          _T("scriptsize"), 1);
+  AddMacroDef(ltSETHEADER,           _T("setheader"), 6);
+  AddMacroDef(ltSETFOOTER,           _T("setfooter"), 6);
+  AddMacroDef(ltSETHOTSPOTCOLOUR,    _T("sethotspotcolour"), 1);
+  AddMacroDef(ltSETHOTSPOTCOLOR,     _T("sethotspotcolor"), 1);
+  AddMacroDef(ltSETHOTSPOTUNDERLINE, _T("sethotspotunderline"), 1);
+  AddMacroDef(ltSETTRANSPARENCY,     _T("settransparency"), 1);
+  AddMacroDef(ltSPADESUIT,           _T("spadesuit"), 0);
+
+  AddMacroDef(ltTABBING,             _T("tabbing"), 2);
+  AddMacroDef(ltTABLEOFCONTENTS,     _T("tableofcontents"), 0);
+  AddMacroDef(ltTABLE,               _T("table"), 1);
+  AddMacroDef(ltTABULAR,             _T("tabular"), 2, FALSE);
+  AddMacroDef(ltTAB,                 _T("tab"), 0);
+  AddMacroDef(ltTAU,                 _T("tau"), 0);
+  AddMacroDef(ltTEXTRM,              _T("textrm"), 1);
+  AddMacroDef(ltTEXTSF,              _T("textsf"), 1);
+  AddMacroDef(ltTEXTTT,              _T("texttt"), 1);
+  AddMacroDef(ltTEXTBF,              _T("textbf"), 1);
+  AddMacroDef(ltTEXTIT,              _T("textit"), 1);
+  AddMacroDef(ltTEXTSL,              _T("textsl"), 1);
+  AddMacroDef(ltTEXTSC,              _T("textsc"), 1);
+  AddMacroDef(ltTEXTWIDTH,           _T("textwidth"), 1);
+  AddMacroDef(ltTEXTHEIGHT,          _T("textheight"), 1);
+  AddMacroDef(ltTEXTCOLOUR,          _T("textcolour"), 1);
+  AddMacroDef(ltTEX,                 _T("TeX"), 0);
+  AddMacroDef(ltTHEBIBLIOGRAPHY,     _T("thebibliography"), 2);
+  AddMacroDef(ltTHETA,               _T("theta"), 0);
+  AddMacroDef(ltTIMES,               _T("times"), 0);
+  AddMacroDef(ltCAP_THETA,           _T("Theta"), 0);
+  AddMacroDef(ltTITLEPAGE,           _T("titlepage"), 1);
+  AddMacroDef(ltTITLE,               _T("title"), 1);
+  AddMacroDef(ltTINY,                _T("tiny"), 1);
+  AddMacroDef(ltTODAY,               _T("today"), 0);
+  AddMacroDef(ltTOPMARGIN,           _T("topmargin"), 1);
+  AddMacroDef(ltTOPSKIP,             _T("topskip"), 1);
+  AddMacroDef(ltTRIANGLE,            _T("triangle"), 0);
+  AddMacroDef(ltTTFAMILY,            _T("ttfamily"), 1);
+  AddMacroDef(ltTT,                  _T("tt"), 1);
+  AddMacroDef(ltTYPEIN,              _T("typein"), 1);
+  AddMacroDef(ltTYPEOUT,             _T("typeout"), 1);
+  AddMacroDef(ltTWOCOLWIDTHA,        _T("twocolwidtha"), 1);
+  AddMacroDef(ltTWOCOLWIDTHB,        _T("twocolwidthb"), 1);
+  AddMacroDef(ltTWOCOLSPACING,       _T("twocolspacing"), 1);
+  AddMacroDef(ltTWOCOLITEMRULED,     _T("twocolitemruled"), 2);
+  AddMacroDef(ltTWOCOLITEM,          _T("twocolitem"), 2);
+  AddMacroDef(ltTWOCOLLIST,          _T("twocollist"), 1);
+  AddMacroDef(ltTWOCOLUMN,           _T("twocolumn"), 0);
+  AddMacroDef(ltTHEPAGE,             _T("thepage"), 0);
+  AddMacroDef(ltTHECHAPTER,          _T("thechapter"), 0);
+  AddMacroDef(ltTHESECTION,          _T("thesection"), 0);
+  AddMacroDef(ltTHISPAGESTYLE,       _T("thispagestyle"), 1);
+
+  AddMacroDef(ltUNDERLINE,           _T("underline"), 1);
+  AddMacroDef(ltUPSILON,             _T("upsilon"), 0);
+  AddMacroDef(ltCAP_UPSILON,         _T("Upsilon"), 0);
+  AddMacroDef(ltUPARROW,             _T("uparrow"), 0);
+  AddMacroDef(ltUPARROW2,            _T("Uparrow"), 0);
+  AddMacroDef(ltUPPERCASE,           _T("uppercase"), 1);
+  AddMacroDef(ltUPSHAPE,             _T("upshape"), 1);
+  AddMacroDef(ltURLREF,              _T("urlref"), 2);
+  AddMacroDef(ltUSEPACKAGE,          _T("usepackage"), 1);
   
-  AddMacroDef(ltVAREPSILON,       "varepsilon", 0);
-  AddMacroDef(ltVARPHI,           "varphi", 0);
-  AddMacroDef(ltVARPI,            "varpi", 0);
-  AddMacroDef(ltVARRHO,           "varrho", 0);
-  AddMacroDef(ltVARSIGMA,         "varsigma", 0);
-  AddMacroDef(ltVARTHETA,         "vartheta", 0);
-  AddMacroDef(ltVDOTS,            "vdots", 0);
-  AddMacroDef(ltVEE,              "vee", 0);
-  AddMacroDef(ltVERBATIMINPUT,    "verbatiminput", 1);
-  AddMacroDef(ltVERBATIM,         "verbatim", 1);
-  AddMacroDef(ltVERBSTAR,         "verb*", 1);
-  AddMacroDef(ltVERB,             "verb", 1);
-  AddMacroDef(ltVERSE,            "verse", 1);
-  AddMacroDef(ltVFILL,            "vfill", 0);
-  AddMacroDef(ltVLINE,            "vline", 0);
-  AddMacroDef(ltVOID,             "void", 0);
-  AddMacroDef(ltVDASH,            "vdash", 0);
-  AddMacroDef(ltVRULE,            "vrule", 0);
-  AddMacroDef(ltVSPACESTAR,       "vspace*", 1);
-  AddMacroDef(ltVSKIPSTAR,        "vskip*", 1);
-  AddMacroDef(ltVSPACE,           "vspace", 1);
-  AddMacroDef(ltVSKIP,            "vskip", 1);
-
-  AddMacroDef(ltWEDGE,            "wedge", 0);
-  AddMacroDef(ltWXCLIPS,          "wxclips", 0);
-  AddMacroDef(ltWINHELPIGNORE,    "winhelpignore", 1);
-  AddMacroDef(ltWINHELPONLY,      "winhelponly", 1);
-  AddMacroDef(ltWP,               "wp", 0);
-
-  AddMacroDef(ltXI,               "xi", 0);
-  AddMacroDef(ltCAP_XI,           "Xi", 0);
-  AddMacroDef(ltXLPIGNORE,        "xlpignore", 1);
-  AddMacroDef(ltXLPONLY,          "xlponly", 1);
-
-  AddMacroDef(ltZETA,             "zeta", 0);
-
-  AddMacroDef(ltSPACE,            " ", 0);
-  AddMacroDef(ltBACKSLASHCHAR,    "\\", 0);
-  AddMacroDef(ltPIPE,             "|", 0);
-  AddMacroDef(ltFORWARDSLASH,     "/", 0);
-  AddMacroDef(ltUNDERSCORE,       "_", 0);
-  AddMacroDef(ltAMPERSAND,        "&", 0);
-  AddMacroDef(ltPERCENT,          "%", 0);
-  AddMacroDef(ltDOLLAR,           "$", 0);
-  AddMacroDef(ltHASH,             "#", 0);
-  AddMacroDef(ltLPARENTH,         "(", 0);
-  AddMacroDef(ltRPARENTH,         ")", 0);
-  AddMacroDef(ltLBRACE,           "{", 0);
-  AddMacroDef(ltRBRACE,           "}", 0);
-//  AddMacroDef(ltEQUALS,           "=", 0);
-  AddMacroDef(ltRANGLEBRA,        ">", 0);
-  AddMacroDef(ltLANGLEBRA,        "<", 0);
-  AddMacroDef(ltPLUS,             "+", 0);
-  AddMacroDef(ltDASH,             "-", 0);
-  AddMacroDef(ltAT_SYMBOL,        "@", 0);
-//  AddMacroDef(ltSINGLEQUOTE,      "'", 0);
-//  AddMacroDef(ltBACKQUOTE,        "`", 0);
+  AddMacroDef(ltVAREPSILON,          _T("varepsilon"), 0);
+  AddMacroDef(ltVARPHI,              _T("varphi"), 0);
+  AddMacroDef(ltVARPI,               _T("varpi"), 0);
+  AddMacroDef(ltVARRHO,              _T("varrho"), 0);
+  AddMacroDef(ltVARSIGMA,            _T("varsigma"), 0);
+  AddMacroDef(ltVARTHETA,            _T("vartheta"), 0);
+  AddMacroDef(ltVDOTS,               _T("vdots"), 0);
+  AddMacroDef(ltVEE,                 _T("vee"), 0);
+  AddMacroDef(ltVERBATIMINPUT,       _T("verbatiminput"), 1);
+  AddMacroDef(ltVERBATIM,            _T("verbatim"), 1);
+  AddMacroDef(ltVERBSTAR,            _T("verb*"), 1);
+  AddMacroDef(ltVERB,                _T("verb"), 1);
+  AddMacroDef(ltVERSE,               _T("verse"), 1);
+  AddMacroDef(ltVFILL,               _T("vfill"), 0);
+  AddMacroDef(ltVLINE,               _T("vline"), 0);
+  AddMacroDef(ltVOID,                _T("void"), 0);
+  AddMacroDef(ltVDASH,               _T("vdash"), 0);
+  AddMacroDef(ltVRULE,               _T("vrule"), 0);
+  AddMacroDef(ltVSPACESTAR,          _T("vspace*"), 1);
+  AddMacroDef(ltVSKIPSTAR,           _T("vskip*"), 1);
+  AddMacroDef(ltVSPACE,              _T("vspace"), 1);
+  AddMacroDef(ltVSKIP,               _T("vskip"), 1);
+
+  AddMacroDef(ltWEDGE,               _T("wedge"), 0);
+  AddMacroDef(ltWXCLIPS,             _T("wxclips"), 0);
+  AddMacroDef(ltWINHELPIGNORE,       _T("winhelpignore"), 1);
+  AddMacroDef(ltWINHELPONLY,         _T("winhelponly"), 1);
+  AddMacroDef(ltWP,                  _T("wp"), 0);
+
+  AddMacroDef(ltXI,                  _T("xi"), 0);
+  AddMacroDef(ltCAP_XI,              _T("Xi"), 0);
+  AddMacroDef(ltXLPIGNORE,           _T("xlpignore"), 1);
+  AddMacroDef(ltXLPONLY,             _T("xlponly"), 1);
+
+  AddMacroDef(ltZETA,                _T("zeta"), 0);
+
+  AddMacroDef(ltSPACE,               _T(" "), 0);
+  AddMacroDef(ltBACKSLASHCHAR,       _T("\\"), 0);
+  AddMacroDef(ltPIPE,                _T("|"), 0);
+  AddMacroDef(ltFORWARDSLASH,        _T("/"), 0);
+  AddMacroDef(ltUNDERSCORE,          _T("_"), 0);
+  AddMacroDef(ltAMPERSAND,           _T("&"), 0);
+  AddMacroDef(ltPERCENT,             _T("%"), 0);
+  AddMacroDef(ltDOLLAR,              _T("$"), 0);
+  AddMacroDef(ltHASH,                _T("#"), 0);
+  AddMacroDef(ltLPARENTH,            _T("("), 0);
+  AddMacroDef(ltRPARENTH,            _T(")"), 0);
+  AddMacroDef(ltLBRACE,              _T("{"), 0);
+  AddMacroDef(ltRBRACE,              _T("}"), 0);
+//  AddMacroDef(ltEQUALS,              _T("="), 0);
+  AddMacroDef(ltRANGLEBRA,           _T(">"), 0);
+  AddMacroDef(ltLANGLEBRA,           _T("<"), 0);
+  AddMacroDef(ltPLUS,                _T("+"), 0);
+  AddMacroDef(ltDASH,                _T("-"), 0);
+  AddMacroDef(ltAT_SYMBOL,           _T("@"), 0);
+//  AddMacroDef(ltSINGLEQUOTE,         _T("'"), 0);
+//  AddMacroDef(ltBACKQUOTE,           _T("`"), 0);
 }
 
 /*
@@ -2616,105 +2612,105 @@ void DefaultOnMacro(int macroId, int no_args, bool start)
     }
     case ltSPECIALAMPERSAND:
       if (start)
-        TexOutput("  ");
+        TexOutput(_T("  "));
       break;
 
     case ltCINSERT:
       if (start)
-        TexOutput("<<", TRUE);
+        TexOutput(_T("<<"), TRUE);
       break;
     case ltCEXTRACT:
       if (start)
-        TexOutput(">>", TRUE);
+        TexOutput(_T(">>"), TRUE);
       break;
     case ltDESTRUCT:
       if (start)
-        TexOutput("~", TRUE);
+        TexOutput(_T("~"), TRUE);
       break;
     case ltTILDE:
       if (start)
-        TexOutput("~", TRUE);
+        TexOutput(_T("~"), TRUE);
       break;
     case ltSPECIALTILDE:
       if (start)
-        TexOutput(" ", TRUE);
+        TexOutput(_T(" "), TRUE);
       break;
     case ltUNDERSCORE:
       if (start)
-        TexOutput("_", TRUE);
+        TexOutput(_T("_"), TRUE);
       break;
     case ltHASH:
       if (start)
-        TexOutput("#", TRUE);
+        TexOutput(_T("#"), TRUE);
       break;
     case ltAMPERSAND:
       if (start)
-        TexOutput("&", TRUE);
+        TexOutput(_T("&"), TRUE);
       break;
     case ltSPACE:
       if (start)
-        TexOutput(" ", TRUE);
+        TexOutput(_T(" "), TRUE);
       break;
     case ltPIPE:
       if (start)
-        TexOutput("|", TRUE);
+        TexOutput(_T("|"), TRUE);
       break;
     case ltPERCENT:
       if (start)
-        TexOutput("%", TRUE);
+        TexOutput(_T("%"), TRUE);
       break;
     case ltDOLLAR:
       if (start)
-        TexOutput("$", TRUE);
+        TexOutput(_T("$"), TRUE);
       break;
     case ltLPARENTH:
       if (start)
-        TexOutput("", TRUE);
+        TexOutput(_T(""), TRUE);
       break;
     case ltRPARENTH:
       if (start)
-        TexOutput("", TRUE);
+        TexOutput(_T(""), TRUE);
       break;
     case ltLBRACE:
       if (start)
-        TexOutput("{", TRUE);
+        TexOutput(_T("{"), TRUE);
       break;
     case ltRBRACE:
       if (start)
-        TexOutput("}", TRUE);
+        TexOutput(_T("}"), TRUE);
       break;
     case ltCOPYRIGHT:
       if (start)
-        TexOutput("(c)", TRUE);
+        TexOutput(_T("(c)"), TRUE);
       break;
     case ltREGISTERED:
       if (start)
-        TexOutput("(r)", TRUE);
+        TexOutput(_T("(r)"), TRUE);
       break;
     case ltBACKSLASH:
       if (start)    
-        TexOutput("\\", TRUE);
+        TexOutput(_T("\\"), TRUE);
       break;
     case ltLDOTS:
     case ltCDOTS:
       if (start)
-        TexOutput("...", TRUE);
+        TexOutput(_T("..."), TRUE);
       break;
     case ltVDOTS:
       if (start)
-        TexOutput("|", TRUE);
+        TexOutput(_T("|"), TRUE);
       break;
     case ltLATEX:
       if (start)
-        TexOutput("LaTeX", TRUE);
+        TexOutput(_T("LaTeX"), TRUE);
       break;
     case ltTEX:
       if (start)
-        TexOutput("TeX", TRUE);
+        TexOutput(_T("TeX"), TRUE);
       break;
     case ltPOUNDS:
       if (start)
-        TexOutput("£", TRUE);
+        TexOutput(_T("£"), TRUE);
       break;
     case ltSPECIALDOUBLEDOLLAR:  // Interpret as center
       OnMacro(ltCENTER, no_args, start);
@@ -2737,7 +2733,7 @@ void DefaultOnMacro(int macroId, int no_args, bool start)
       {
         time_t when;
         (void) time(&when);
-        TexOutput(ctime(&when), TRUE);
+        TexOutput(wxCtime(&when), TRUE);
       }
       break;
     }
@@ -2748,389 +2744,389 @@ void DefaultOnMacro(int macroId, int no_args, bool start)
 
     // Symbols
     case ltALPHA:
-      if (start) TexOutput("alpha");
+      if (start) TexOutput(_T("alpha"));
       break;
     case ltBETA:
-      if (start) TexOutput("beta");
+      if (start) TexOutput(_T("beta"));
       break;
     case ltGAMMA:
-      if (start) TexOutput("gamma");
+      if (start) TexOutput(_T("gamma"));
       break;
     case ltDELTA:
-      if (start) TexOutput("delta");
+      if (start) TexOutput(_T("delta"));
       break;
     case ltEPSILON:
     case ltVAREPSILON:
-      if (start) TexOutput("epsilon");
+      if (start) TexOutput(_T("epsilon"));
       break;
     case ltZETA:
-      if (start) TexOutput("zeta");
+      if (start) TexOutput(_T("zeta"));
       break;
     case ltETA:
-      if (start) TexOutput("eta");
+      if (start) TexOutput(_T("eta"));
       break;
     case ltTHETA:
     case ltVARTHETA:
-      if (start) TexOutput("theta");
+      if (start) TexOutput(_T("theta"));
       break;
     case ltIOTA:
-      if (start) TexOutput("iota");
+      if (start) TexOutput(_T("iota"));
       break;
     case ltKAPPA:
-      if (start) TexOutput("kappa");
+      if (start) TexOutput(_T("kappa"));
       break;
     case ltLAMBDA:
-      if (start) TexOutput("lambda");
+      if (start) TexOutput(_T("lambda"));
       break;
     case ltMU:
-      if (start) TexOutput("mu");
+      if (start) TexOutput(_T("mu"));
       break;
     case ltNU:
-      if (start) TexOutput("nu");
+      if (start) TexOutput(_T("nu"));
       break;
     case ltXI:
-      if (start) TexOutput("xi");
+      if (start) TexOutput(_T("xi"));
       break;
     case ltPI:
     case ltVARPI:
-      if (start) TexOutput("pi");
+      if (start) TexOutput(_T("pi"));
       break;
     case ltRHO:
     case ltVARRHO:
-      if (start) TexOutput("rho");
+      if (start) TexOutput(_T("rho"));
       break;
     case ltSIGMA:
     case ltVARSIGMA:
-      if (start) TexOutput("sigma");
+      if (start) TexOutput(_T("sigma"));
       break;
     case ltTAU:
-      if (start) TexOutput("tau");
+      if (start) TexOutput(_T("tau"));
       break;
     case ltUPSILON:
-      if (start) TexOutput("upsilon");
+      if (start) TexOutput(_T("upsilon"));
       break;
     case ltPHI:
     case ltVARPHI:
-      if (start) TexOutput("phi");
+      if (start) TexOutput(_T("phi"));
       break;
     case ltCHI:
-      if (start) TexOutput("chi");
+      if (start) TexOutput(_T("chi"));
       break;
     case ltPSI:
-      if (start) TexOutput("psi");
+      if (start) TexOutput(_T("psi"));
       break;
     case ltOMEGA:
-      if (start) TexOutput("omega");
+      if (start) TexOutput(_T("omega"));
       break;
     case ltCAP_GAMMA:
-      if (start) TexOutput("GAMMA");
+      if (start) TexOutput(_T("GAMMA"));
       break;
     case ltCAP_DELTA:
-      if (start) TexOutput("DELTA");
+      if (start) TexOutput(_T("DELTA"));
       break;
     case ltCAP_THETA:
-      if (start) TexOutput("THETA");
+      if (start) TexOutput(_T("THETA"));
       break;
     case ltCAP_LAMBDA:
-      if (start) TexOutput("LAMBDA");
+      if (start) TexOutput(_T("LAMBDA"));
       break;
     case ltCAP_XI:
-      if (start) TexOutput("XI");
+      if (start) TexOutput(_T("XI"));
       break;
     case ltCAP_PI:
-      if (start) TexOutput("PI");
+      if (start) TexOutput(_T("PI"));
       break;
     case ltCAP_SIGMA:
-      if (start) TexOutput("SIGMA");
+      if (start) TexOutput(_T("SIGMA"));
       break;
     case ltCAP_UPSILON:
-      if (start) TexOutput("UPSILON");
+      if (start) TexOutput(_T("UPSILON"));
       break;
     case ltCAP_PHI:
-      if (start) TexOutput("PHI");
+      if (start) TexOutput(_T("PHI"));
       break;
     case ltCAP_PSI:
-      if (start) TexOutput("PSI");
+      if (start) TexOutput(_T("PSI"));
       break;
     case ltCAP_OMEGA:
-      if (start) TexOutput("OMEGA");
+      if (start) TexOutput(_T("OMEGA"));
       break;
 
     // Binary operation symbols
     case ltLE:
     case ltLEQ:
-      if (start) TexOutput("<=");
+      if (start) TexOutput(_T("<="));
       break;
     case ltLL:
-      if (start) TexOutput("<<");
+      if (start) TexOutput(_T("<<"));
       break;
     case ltSUBSET:
-      if (start) TexOutput("SUBSET");
+      if (start) TexOutput(_T("SUBSET"));
       break;
     case ltSUBSETEQ:
-      if (start) TexOutput("SUBSETEQ");
+      if (start) TexOutput(_T("SUBSETEQ"));
       break;
     case ltIN:
-      if (start) TexOutput("IN");
+      if (start) TexOutput(_T("IN"));
       break;
     case ltVDASH:
-      if (start) TexOutput("VDASH");
+      if (start) TexOutput(_T("VDASH"));
       break;
     case ltMODELS:
-      if (start) TexOutput("MODELS");
+      if (start) TexOutput(_T("MODELS"));
       break;
     case ltGE:
     case ltGEQ:
-      if (start) TexOutput(">=");
+      if (start) TexOutput(_T(">="));
       break;
     case ltGG:
-      if (start) TexOutput(">>");
+      if (start) TexOutput(_T(">>"));
       break;
     case ltSUPSET:
-      if (start) TexOutput("SUPSET");
+      if (start) TexOutput(_T("SUPSET"));
       break;
     case ltSUPSETEQ:
-      if (start) TexOutput("SUPSETEQ");
+      if (start) TexOutput(_T("SUPSETEQ"));
       break;
     case ltNI:
-      if (start) TexOutput("NI");
+      if (start) TexOutput(_T("NI"));
       break;
     case ltDASHV:
-      if (start) TexOutput("DASHV");
+      if (start) TexOutput(_T("DASHV"));
       break;
     case ltPERP:
-      if (start) TexOutput("PERP");
+      if (start) TexOutput(_T("PERP"));
       break;
     case ltNEQ:
-      if (start) TexOutput("NEQ");
+      if (start) TexOutput(_T("NEQ"));
       break;
     case ltDOTEQ:
-      if (start) TexOutput("DOTEQ");
+      if (start) TexOutput(_T("DOTEQ"));
       break;
     case ltAPPROX:
-      if (start) TexOutput("APPROX");
+      if (start) TexOutput(_T("APPROX"));
       break;
     case ltCONG:
-      if (start) TexOutput("CONG");
+      if (start) TexOutput(_T("CONG"));
       break;
     case ltEQUIV:
-      if (start) TexOutput("EQUIV");
+      if (start) TexOutput(_T("EQUIV"));
       break;
     case ltPROPTO:
-      if (start) TexOutput("PROPTO");
+      if (start) TexOutput(_T("PROPTO"));
       break;
     case ltPREC:
-      if (start) TexOutput("PREC");
+      if (start) TexOutput(_T("PREC"));
       break;
     case ltPRECEQ:
-      if (start) TexOutput("PRECEQ");
+      if (start) TexOutput(_T("PRECEQ"));
       break;
     case ltPARALLEL:
-      if (start) TexOutput("|");
+      if (start) TexOutput(_T("|"));
       break;
     case ltSIM:
-      if (start) TexOutput("~");
+      if (start) TexOutput(_T("~"));
       break;
     case ltSIMEQ:
-      if (start) TexOutput("SIMEQ");
+      if (start) TexOutput(_T("SIMEQ"));
       break;
     case ltASYMP:
-      if (start) TexOutput("ASYMP");
+      if (start) TexOutput(_T("ASYMP"));
       break;
     case ltSMILE:
-      if (start) TexOutput(":-)");
+      if (start) TexOutput(_T(":-)"));
       break;
     case ltFROWN:
-      if (start) TexOutput(":-(");
+      if (start) TexOutput(_T(":-("));
       break;
     case ltSUCC:
-      if (start) TexOutput("SUCC");
+      if (start) TexOutput(_T("SUCC"));
       break;
     case ltSUCCEQ:
-      if (start) TexOutput("SUCCEQ");
+      if (start) TexOutput(_T("SUCCEQ"));
       break;
     case ltMID:
-      if (start) TexOutput("|");
+      if (start) TexOutput(_T("|"));
       break;
 
     // Negated relation symbols
     case ltNOTEQ:
-      if (start) TexOutput("!=");
+      if (start) TexOutput(_T("!="));
       break;
     case ltNOTIN:
-      if (start) TexOutput("NOTIN");
+      if (start) TexOutput(_T("NOTIN"));
       break;
     case ltNOTSUBSET:
-      if (start) TexOutput("NOTSUBSET");
+      if (start) TexOutput(_T("NOTSUBSET"));
       break;
 
     // Arrows
     case ltLEFTARROW:
-      if (start) TexOutput("<--");
+      if (start) TexOutput(_T("<--"));
       break;
     case ltLEFTARROW2:
-      if (start) TexOutput("<==");
+      if (start) TexOutput(_T("<=="));
       break;
     case ltRIGHTARROW:
-      if (start) TexOutput("-->");
+      if (start) TexOutput(_T("-->"));
       break;
     case ltRIGHTARROW2:
-      if (start) TexOutput("==>");
+      if (start) TexOutput(_T("==>"));
       break;
     case ltLEFTRIGHTARROW:
-      if (start) TexOutput("<-->");
+      if (start) TexOutput(_T("<-->"));
       break;
     case ltLEFTRIGHTARROW2:
-      if (start) TexOutput("<==>");
+      if (start) TexOutput(_T("<==>"));
       break;
     case ltUPARROW:
-      if (start) TexOutput("UPARROW");
+      if (start) TexOutput(_T("UPARROW"));
       break;
     case ltUPARROW2:
-      if (start) TexOutput("UPARROW2");
+      if (start) TexOutput(_T("UPARROW2"));
       break;
     case ltDOWNARROW:
-      if (start) TexOutput("DOWNARROW");
+      if (start) TexOutput(_T("DOWNARROW"));
       break;
     case ltDOWNARROW2:
-      if (start) TexOutput("DOWNARROW2");
+      if (start) TexOutput(_T("DOWNARROW2"));
       break;
     // Miscellaneous symbols
     case ltALEPH:
-      if (start) TexOutput("ALEPH");
+      if (start) TexOutput(_T("ALEPH"));
       break;
     case ltWP:
-      if (start) TexOutput("WP");
+      if (start) TexOutput(_T("WP"));
       break;
     case ltRE:
-      if (start) TexOutput("RE");
+      if (start) TexOutput(_T("RE"));
       break;
     case ltIM:
-      if (start) TexOutput("IM");
+      if (start) TexOutput(_T("IM"));
       break;
     case ltEMPTYSET:
-      if (start) TexOutput("EMPTYSET");
+      if (start) TexOutput(_T("EMPTYSET"));
       break;
     case ltNABLA:
-      if (start) TexOutput("NABLA");
+      if (start) TexOutput(_T("NABLA"));
       break;
     case ltSURD:
-      if (start) TexOutput("SURD");
+      if (start) TexOutput(_T("SURD"));
       break;
     case ltPARTIAL:
-      if (start) TexOutput("PARTIAL");
+      if (start) TexOutput(_T("PARTIAL"));
       break;
     case ltBOT:
-      if (start) TexOutput("BOT");
+      if (start) TexOutput(_T("BOT"));
       break;
     case ltFORALL:
-      if (start) TexOutput("FORALL");
+      if (start) TexOutput(_T("FORALL"));
       break;
     case ltEXISTS:
-      if (start) TexOutput("EXISTS");
+      if (start) TexOutput(_T("EXISTS"));
       break;
     case ltNEG:
-      if (start) TexOutput("NEG");
+      if (start) TexOutput(_T("NEG"));
       break;
     case ltSHARP:
-      if (start) TexOutput("SHARP");
+      if (start) TexOutput(_T("SHARP"));
       break;
     case ltANGLE:
-      if (start) TexOutput("ANGLE");
+      if (start) TexOutput(_T("ANGLE"));
       break;
     case ltTRIANGLE:
-      if (start) TexOutput("TRIANGLE");
+      if (start) TexOutput(_T("TRIANGLE"));
       break;
     case ltCLUBSUIT:
-      if (start) TexOutput("CLUBSUIT");
+      if (start) TexOutput(_T("CLUBSUIT"));
       break;
     case ltDIAMONDSUIT:
-      if (start) TexOutput("DIAMONDSUIT");
+      if (start) TexOutput(_T("DIAMONDSUIT"));
       break;
     case ltHEARTSUIT:
-      if (start) TexOutput("HEARTSUIT");
+      if (start) TexOutput(_T("HEARTSUIT"));
       break;
     case ltSPADESUIT:
-      if (start) TexOutput("SPADESUIT");
+      if (start) TexOutput(_T("SPADESUIT"));
       break;
     case ltINFTY:
-      if (start) TexOutput("INFTY");
+      if (start) TexOutput(_T("INFTY"));
       break;
     case ltPM:
-      if (start) TexOutput("PM");
+      if (start) TexOutput(_T("PM"));
       break;
     case ltMP:
-      if (start) TexOutput("MP");
+      if (start) TexOutput(_T("MP"));
       break;
     case ltTIMES:
-      if (start) TexOutput("TIMES");
+      if (start) TexOutput(_T("TIMES"));
       break;
     case ltDIV:
-      if (start) TexOutput("DIV");
+      if (start) TexOutput(_T("DIV"));
       break;
     case ltCDOT:
-      if (start) TexOutput("CDOT");
+      if (start) TexOutput(_T("CDOT"));
       break;
     case ltAST:
-      if (start) TexOutput("AST");
+      if (start) TexOutput(_T("AST"));
       break;
     case ltSTAR:
-      if (start) TexOutput("STAR");
+      if (start) TexOutput(_T("STAR"));
       break;
     case ltCAP:
-      if (start) TexOutput("CAP");
+      if (start) TexOutput(_T("CAP"));
       break;
     case ltCUP:
-      if (start) TexOutput("CUP");
+      if (start) TexOutput(_T("CUP"));
       break;
     case ltVEE:
-      if (start) TexOutput("VEE");
+      if (start) TexOutput(_T("VEE"));
       break;
     case ltWEDGE:
-      if (start) TexOutput("WEDGE");
+      if (start) TexOutput(_T("WEDGE"));
       break;
     case ltCIRC:
-      if (start) TexOutput("CIRC");
+      if (start) TexOutput(_T("CIRC"));
       break;
     case ltBULLET:
-      if (start) TexOutput("BULLET");
+      if (start) TexOutput(_T("BULLET"));
       break;
     case ltDIAMOND:
-      if (start) TexOutput("DIAMOND");
+      if (start) TexOutput(_T("DIAMOND"));
       break;
     case ltOSLASH:
-      if (start) TexOutput("OSLASH");
+      if (start) TexOutput(_T("OSLASH"));
       break;
     case ltBOX:
-      if (start) TexOutput("BOX");
+      if (start) TexOutput(_T("BOX"));
       break;
     case ltDIAMOND2:
-      if (start) TexOutput("DIAMOND2");
+      if (start) TexOutput(_T("DIAMOND2"));
       break;
     case ltBIGTRIANGLEDOWN:
-      if (start) TexOutput("BIGTRIANGLEDOWN");
+      if (start) TexOutput(_T("BIGTRIANGLEDOWN"));
       break;
     case ltOPLUS:
-      if (start) TexOutput("OPLUS");
+      if (start) TexOutput(_T("OPLUS"));
       break;
     case ltOTIMES:
-      if (start) TexOutput("OTIMES");
+      if (start) TexOutput(_T("OTIMES"));
       break;
     case ltSS:
-      if (start) TexOutput("s");
+      if (start) TexOutput(_T("s"));
       break;
     case ltBACKSLASHRAW:
-      if (start) TexOutput("\\");
+      if (start) TexOutput(_T("\\"));
       break;
     case ltLBRACERAW:
-      if (start) TexOutput("{");
+      if (start) TexOutput(_T("{"));
       break;
     case ltRBRACERAW:
-      if (start) TexOutput("}");
+      if (start) TexOutput(_T("}"));
       break;
     case ltSMALLSPACE1:
     case ltSMALLSPACE2:
-      if (start) TexOutput(" ");
+      if (start) TexOutput(_T(" "));
       break;
     default:
       break;
@@ -3146,7 +3142,7 @@ bool DefaultOnArgument(int macroId, int arg_no, bool start)
     {
     if (arg_no == 1 && start)
     {
-      char *refName = GetArgData();
+      wxChar *refName = GetArgData();
       if (refName)
       {
         TexRef *texRef = FindReference(refName);
@@ -3154,11 +3150,11 @@ bool DefaultOnArgument(int macroId, int arg_no, bool start)
         {
           // Must strip the 'section' or 'chapter' or 'figure' text
           // from a normal 'ref' reference
-          char buf[150];
-          strcpy(buf, texRef->sectionNumber);
-          int len = strlen(buf);
+          wxChar buf[150];
+          wxStrcpy(buf, texRef->sectionNumber);
+          int len = wxStrlen(buf);
           int i = 0;
-          if (strcmp(buf, "??") != 0)
+          if (wxStrcmp(buf, _T("??")) != 0)
           {
             while (i < len)
             {
@@ -3175,11 +3171,11 @@ bool DefaultOnArgument(int macroId, int arg_no, bool start)
         else
         {
            wxString informBuf;
-           informBuf.Printf("Warning: unresolved reference '%s'", refName); 
-           OnInform((char *)informBuf.c_str());
+           informBuf.Printf(_T("Warning: unresolved reference '%s'"), refName); 
+           OnInform((wxChar *)informBuf.c_str());
         }
       }
-      else TexOutput("??", TRUE);
+      else TexOutput(_T("??"), TRUE);
       return FALSE;
     }
     break;
@@ -3187,28 +3183,24 @@ bool DefaultOnArgument(int macroId, int arg_no, bool start)
     case ltLABEL:
     {
       return FALSE;
-      break;
     }
     case ltAUTHOR:
     {
       if (start && (arg_no == 1))
         DocumentAuthor = GetArgChunk();
       return FALSE;
-      break;
     }
     case ltDATE:
     {
       if (start && (arg_no == 1))
         DocumentDate = GetArgChunk();
       return FALSE;
-      break;
     }
     case ltTITLE:
     {
       if (start && (arg_no == 1))
         DocumentTitle = GetArgChunk();
       return FALSE;
-      break;
     }
   case ltDOCUMENTCLASS:
   case ltDOCUMENTSTYLE:
@@ -3216,27 +3208,27 @@ bool DefaultOnArgument(int macroId, int arg_no, bool start)
     if (start && !IsArgOptional())
     {
       DocumentStyleString = copystring(GetArgData());
-      if (strncmp(DocumentStyleString, "art", 3) == 0)
+      if (wxStrncmp(DocumentStyleString, _T("art"), 3) == 0)
         DocumentStyle = LATEX_ARTICLE;
-      else if (strncmp(DocumentStyleString, "rep", 3) == 0)
+      else if (wxStrncmp(DocumentStyleString, _T("rep"), 3) == 0)
         DocumentStyle = LATEX_REPORT;
-      else if (strncmp(DocumentStyleString, "book", 4) == 0 ||
-               strncmp(DocumentStyleString, "thesis", 6) == 0)
+      else if (wxStrncmp(DocumentStyleString, _T("book"), 4) == 0 ||
+               wxStrncmp(DocumentStyleString, _T("thesis"), 6) == 0)
         DocumentStyle = LATEX_BOOK;
-      else if (strncmp(DocumentStyleString, "letter", 6) == 0)
+      else if (wxStrncmp(DocumentStyleString, _T("letter"), 6) == 0)
         DocumentStyle = LATEX_LETTER;
-      else if (strncmp(DocumentStyleString, "slides", 6) == 0)
+      else if (wxStrncmp(DocumentStyleString, _T("slides"), 6) == 0)
         DocumentStyle = LATEX_SLIDES;
         
-      if (StringMatch("10", DocumentStyleString))
+      if (StringMatch(_T("10"), DocumentStyleString))
         SetFontSizes(10);
-      else if (StringMatch("11", DocumentStyleString))
+      else if (StringMatch(_T("11"), DocumentStyleString))
         SetFontSizes(11);
-      else if (StringMatch("12", DocumentStyleString))
+      else if (StringMatch(_T("12"), DocumentStyleString))
         SetFontSizes(12);
 
       OnMacro(ltHELPFONTSIZE, 1, TRUE);
-      sprintf(currentArgData, "%d", normalFont);
+      wxSprintf(currentArgData, _T("%d"), normalFont);
       haveArgData = TRUE;
       OnArgument(ltHELPFONTSIZE, 1, TRUE);
       OnArgument(ltHELPFONTSIZE, 1, FALSE);
@@ -3247,22 +3239,20 @@ bool DefaultOnArgument(int macroId, int arg_no, bool start)
     {
       MinorDocumentStyleString = copystring(GetArgData());
 
-      if (StringMatch("10", MinorDocumentStyleString))
+      if (StringMatch(_T("10"), MinorDocumentStyleString))
         SetFontSizes(10);
-      else if (StringMatch("11", MinorDocumentStyleString))
+      else if (StringMatch(_T("11"), MinorDocumentStyleString))
         SetFontSizes(11);
-      else if (StringMatch("12", MinorDocumentStyleString))
+      else if (StringMatch(_T("12"), MinorDocumentStyleString))
         SetFontSizes(12);
     }
     return FALSE;
-    break;
   }
   case ltBIBLIOGRAPHYSTYLE:
   {
     if (start && !IsArgOptional())
       BibliographyStyleString = copystring(GetArgData());
     return FALSE;
-    break;
   }
   case ltPAGESTYLE:
   {
@@ -3272,7 +3262,6 @@ bool DefaultOnArgument(int macroId, int arg_no, bool start)
       PageStyle = copystring(GetArgData());
     }
     return FALSE;
-    break;
   }
 /*
   case ltLHEAD:
@@ -3323,9 +3312,9 @@ bool DefaultOnArgument(int macroId, int arg_no, bool start)
   {
     if (start && !IsArgOptional())
     {
-      char *citeKeys = GetArgData();
+      wxChar *citeKeys = GetArgData();
       int pos = 0;
-      char *citeKey = ParseMultifieldString(citeKeys, &pos);
+      wxChar *citeKey = ParseMultifieldString(citeKeys, &pos);
       while (citeKey)
       {
         AddCitation(citeKey);
@@ -3333,17 +3322,17 @@ bool DefaultOnArgument(int macroId, int arg_no, bool start)
         if (ref)
         {
           TexOutput(ref->sectionNumber, TRUE);
-          if (strcmp(ref->sectionNumber, "??") == 0)
+          if (wxStrcmp(ref->sectionNumber, _T("??")) == 0)
           {
             wxString informBuf;
-            informBuf.Printf("Warning: unresolved citation %s.", citeKey);
-            OnInform((char *)informBuf.c_str());
+            informBuf.Printf(_T("Warning: unresolved citation %s."), citeKey);
+            OnInform((wxChar *)informBuf.c_str());
           }
         }
         citeKey = ParseMultifieldString(citeKeys, &pos);
         if (citeKey)
         {
-          TexOutput(", ", TRUE);
+          TexOutput(_T(", "), TRUE);
         }
       }
       return FALSE;
@@ -3354,7 +3343,7 @@ bool DefaultOnArgument(int macroId, int arg_no, bool start)
   {
     if (start && !IsArgOptional())
     {
-      char *citeKey = GetArgData();
+      wxChar *citeKey = GetArgData();
       AddCitation(citeKey);
       return FALSE;
     }
@@ -3364,12 +3353,12 @@ bool DefaultOnArgument(int macroId, int arg_no, bool start)
   {
     if (start)
     {
-      char *data = GetArgData();
-      if (strcmp(data, "10") == 0)
+      wxChar *data = GetArgData();
+      if (wxStrcmp(data, _T("10")) == 0)
         SetFontSizes(10);
-      else if (strcmp(data, "11") == 0)
+      else if (wxStrcmp(data, _T("11")) == 0)
         SetFontSizes(11);
-      else if (strcmp(data, "12") == 0)
+      else if (wxStrcmp(data, _T("12")) == 0)
         SetFontSizes(12);
       return FALSE;
     }
@@ -3379,7 +3368,7 @@ bool DefaultOnArgument(int macroId, int arg_no, bool start)
   {
     if (start)
     {
-      TexOutput(" ??", TRUE);
+      TexOutput(_T(" ??"), TRUE);
       return FALSE;
     }
     break;
@@ -3388,7 +3377,7 @@ bool DefaultOnArgument(int macroId, int arg_no, bool start)
   {
     if (start && arg_no == 1)
     {
-      char *data = GetArgData();
+      wxChar *data = GetArgData();
       ParSkip = ParseUnitArgument(data);
       return FALSE;
     }
@@ -3398,7 +3387,7 @@ bool DefaultOnArgument(int macroId, int arg_no, bool start)
   {
     if (start && arg_no == 1)
     {
-      char *data = GetArgData();
+      wxChar *data = GetArgData();
       ParIndent = ParseUnitArgument(data);
       return FALSE;
     }
@@ -3407,12 +3396,10 @@ bool DefaultOnArgument(int macroId, int arg_no, bool start)
   case ltSL:
   {
     return OnArgument(ltIT, arg_no, start);
-    break;
   }
   case ltSPECIALDOUBLEDOLLAR:
   {
     return OnArgument(ltCENTER, arg_no, start);
-    break;
   }
   case ltPARAGRAPH:
   case ltPARAGRAPHSTAR:
@@ -3420,7 +3407,6 @@ bool DefaultOnArgument(int macroId, int arg_no, bool start)
   case ltSUBPARAGRAPHSTAR:
   {
     return OnArgument(ltSUBSUBSECTION, arg_no, start);
-    break;
   }
   case ltTYPEOUT:
   {
@@ -3431,20 +3417,20 @@ bool DefaultOnArgument(int macroId, int arg_no, bool start)
   case ltFOOTNOTE:
   {
     if (start)
-      TexOutput(" (", TRUE);
+      TexOutput(_T(" ("), TRUE);
     else
-      TexOutput(")", TRUE);
+      TexOutput(_T(")"), TRUE);
     break;
   }
   case ltBIBLIOGRAPHY:
   {
     if (start)
     {
-      FILE *fd;
       int ch;
-      char smallBuf[2];
+      wxChar smallBuf[2];
       smallBuf[1] = 0;
-      if ((fd = fopen(TexBibName, "r")))
+      FILE *fd = wxFopen(TexBibName, _T("r"));
+      if (fd)
       {
         ch = getc(fd);
         smallBuf[0] = ch;
@@ -3458,37 +3444,37 @@ bool DefaultOnArgument(int macroId, int arg_no, bool start)
       }
       else
       {
-        OnInform("Run Tex2RTF again to include bibliography.");
+        OnInform(_T("Run Tex2RTF again to include bibliography."));
       }
 
       // Read in the .bib file, resolve all known references, write out the RTF.
-      char *allFiles = GetArgData();
+      wxChar *allFiles = GetArgData();
       int pos = 0;
-      char *bibFile = ParseMultifieldString(allFiles, &pos);
+      wxChar *bibFile = ParseMultifieldString(allFiles, &pos);
       while (bibFile)
       {
-        char fileBuf[300];
-        strcpy(fileBuf, bibFile);
+        wxChar fileBuf[300];
+        wxStrcpy(fileBuf, bibFile);
         wxString actualFile = TexPathList.FindValidPath(fileBuf);
-        if (actualFile == "")
+        if (actualFile == _T(""))
         {
-          strcat(fileBuf, ".bib");
+          wxStrcat(fileBuf, _T(".bib"));
           actualFile = TexPathList.FindValidPath(fileBuf);
         }
-        if (actualFile != "")
+        if (actualFile != _T(""))
         {
-          if (!ReadBib((char*) (const char*) actualFile))
+          if (!ReadBib((wxChar*) (const wxChar*) actualFile))
           {
             wxString errBuf;
-            errBuf.Printf(".bib file %s not found or malformed", (const char*) actualFile);
-            OnError((char *)errBuf.c_str());
+            errBuf.Printf(_T(".bib file %s not found or malformed"), (const wxChar*) actualFile);
+            OnError((wxChar *)errBuf.c_str());
           }
         }
         else
         {
           wxString errBuf;
-          errBuf.Printf(".bib file %s not found", fileBuf);
-          OnError((char *)errBuf.c_str());
+          errBuf.Printf(_T(".bib file %s not found"), fileBuf);
+          OnError((wxChar *)errBuf.c_str());
         }
         bibFile = ParseMultifieldString(allFiles, &pos);
       }
@@ -3498,7 +3484,7 @@ bool DefaultOnArgument(int macroId, int arg_no, bool start)
       // Write it a new bib section in the appropriate format.
       FILE *save1 = CurrentOutput1;
       FILE *save2 = CurrentOutput2;
-      FILE *Biblio = fopen(TexTmpBibName, "w");
+      FILE *Biblio = wxFopen(TexTmpBibName, _T("w"));
       SetCurrentOutput(Biblio);
       OutputBib();
       fclose(Biblio);
@@ -3513,26 +3499,20 @@ bool DefaultOnArgument(int macroId, int arg_no, bool start)
     break;
   }
   case ltMULTICOLUMN:
-  {
-    if (start && (arg_no == 3))
-      return TRUE;
-    else
-      return FALSE;
-    break;
-  }
+    return (start && (arg_no == 3));
   case ltSCSHAPE:
   case ltTEXTSC:
   case ltSC:
   {
     if (start && (arg_no == 1))
     {
-      char *s = GetArgData();
+      wxChar *s = GetArgData();
       if (s)
       {
-        char *s1 = copystring(s);
+        wxChar *s1 = copystring(s);
         int i;
-        for (i = 0; i < (int)strlen(s); i++)
-          s1[i] = toupper(s[i]);
+        for (i = 0; i < (int)wxStrlen(s); i++)
+          s1[i] = wxToupper(s[i]);
         TexOutput(s1);
         delete[] s1;
         return FALSE;
@@ -3541,19 +3521,18 @@ bool DefaultOnArgument(int macroId, int arg_no, bool start)
 
     }
     return TRUE;
-    break;
   }
   case ltLOWERCASE:
   {
     if (start && (arg_no == 1))
     {
-      char *s = GetArgData();
+      wxChar *s = GetArgData();
       if (s)
       {
-        char *s1 = copystring(s);
+        wxChar *s1 = copystring(s);
         int i;
-        for (i = 0; i < (int)strlen(s); i++)
-          s1[i] = tolower(s[i]);
+        for (i = 0; i < (int)wxStrlen(s); i++)
+          s1[i] = wxTolower(s[i]);
         TexOutput(s1);
         delete[] s1;
         return FALSE;
@@ -3562,19 +3541,18 @@ bool DefaultOnArgument(int macroId, int arg_no, bool start)
 
     }
     return TRUE;
-    break;
   }
   case ltUPPERCASE:
   {
     if (start && (arg_no == 1))
     {
-      char *s = GetArgData();
+      wxChar *s = GetArgData();
       if (s)
       {
-        char *s1 = copystring(s);
+        wxChar *s1 = copystring(s);
         int i;
-        for (i = 0; i < (int)strlen(s); i++)
-          s1[i] = toupper(s[i]);
+        for (i = 0; i < (int)wxStrlen(s); i++)
+          s1[i] = wxToupper(s[i]);
         TexOutput(s1);
         delete[] s1;
         return FALSE;
@@ -3583,49 +3561,31 @@ bool DefaultOnArgument(int macroId, int arg_no, bool start)
 
     }
     return TRUE;
-    break;
   }
   case ltPOPREF:  // Ignore second argument by default
-  {
-    if (start && (arg_no == 1))
-      return TRUE;
-    else
-      return FALSE;
-    break;
-  }
+    return (start && (arg_no == 1));
   case ltTWOCOLUMN:
     return TRUE;
-    break;
   case ltXLPIGNORE:
     return ((convertMode == TEX_XLP) ? FALSE : TRUE);
-    break;
   case ltXLPONLY:
     return ((convertMode != TEX_XLP) ? FALSE : TRUE);
-    break;
   case ltHTMLIGNORE:
     return ((convertMode == TEX_HTML) ? FALSE : TRUE);
-    break;
   case ltHTMLONLY:
     return ((convertMode != TEX_HTML) ? FALSE : TRUE);
-    break;
   case ltRTFIGNORE:
     return (((convertMode == TEX_RTF) && !winHelp) ? FALSE : TRUE);
-    break;
   case ltRTFONLY:
     return (!((convertMode == TEX_RTF) && !winHelp) ? FALSE : TRUE);
-    break;
   case ltWINHELPIGNORE:
     return (winHelp ? FALSE : TRUE);
-    break;
   case ltWINHELPONLY:
     return (!winHelp ? FALSE : TRUE);
-    break;
   case ltLATEXIGNORE:
     return TRUE;
-    break;
   case ltLATEXONLY:
     return FALSE;
-    break;
   case ltCLINE:
   case ltARABIC:
   case ltALPH1:
@@ -3696,35 +3656,19 @@ bool DefaultOnArgument(int macroId, int arg_no, bool start)
   case ltPOPREFONLY:
   case ltINSERTATLEVEL:
     return FALSE;
-    break;
   case ltTABULAR:
   case ltSUPERTABULAR:
-  {
-    if (arg_no == 2)
-      return TRUE;
-    else return FALSE;
-    break;
-  }
   case ltINDENTED:
-  {
-    if (arg_no == 2) return TRUE;
-    else return FALSE;
-    break;
-  }
   case ltSIZEDBOX:
   case ltSIZEDBOXD:
-  {
-    if (arg_no == 2) return TRUE;
-    else return FALSE;
-    break;
-  }
+    return (arg_no == 2);
   case ltDEFINECOLOUR:
   case ltDEFINECOLOR:
   {
     static int redVal = 0;
     static int greenVal = 0;
     static int blueVal = 0;
-    static char *colourName = NULL;
+    static wxChar *colourName = NULL;
     if (start)
     {
       switch (arg_no)
@@ -3737,17 +3681,17 @@ bool DefaultOnArgument(int macroId, int arg_no, bool start)
         }
         case 2:
         {
-          redVal = atoi(GetArgData());
+          redVal = wxAtoi(GetArgData());
           break;
         }
         case 3:
         {
-          greenVal = atoi(GetArgData());
+          greenVal = wxAtoi(GetArgData());
           break;
         }
         case 4:
         {
-          blueVal = atoi(GetArgData());
+          blueVal = wxAtoi(GetArgData());
           AddColour(colourName, redVal, greenVal, blueVal);
           break;
         }
@@ -3756,20 +3700,13 @@ bool DefaultOnArgument(int macroId, int arg_no, bool start)
       }
     }
     return FALSE;
-    break;
   }
   case ltFIGURE:
   case ltFIGURESTAR:
   case ltNORMALBOX:
   case ltNORMALBOXD:
   default:
-  {
-    if (IsArgOptional())
-      return FALSE;
-    else
-      return TRUE;
-    break;
-  }
+    return (!IsArgOptional());
   }
   return TRUE;
 }
index 81d7c9e8500ac10d6c526f565159ec5c3ad9c619..cd29772fc4de57e6ff2c0da700434c0b4949e61b 100644 (file)
@@ -13,6 +13,7 @@
 #include "wx/utils.h"
 #include "wx/list.h"
 #include "wx/hash.h"
+#include "wx/tokenzr.h"
 #include "wxhlpblk.h"
 
 /*
@@ -44,12 +45,12 @@ class TexMacroDef: public wxObject
 {
  public:
   int no_args;
-  char *name;
+  wxChar *name;
   bool ignore;
   int forbidden;
   int macroId;
 
-  TexMacroDef(int the_id, const char *the_name, int n, bool ig, bool forbidLevel = FORBID_OK);
+  TexMacroDef(int the_id, const wxChar *the_name, int n, bool ig, bool forbidLevel = FORBID_OK);
   ~TexMacroDef(void);
 };
 
@@ -105,7 +106,7 @@ class TexChunk
   int type;
 //  char *name;
   TexMacroDef *def;
-  char *value;
+  wxChar *value;
   int macroId;
   int no_args;
   int argn;
@@ -129,26 +130,26 @@ class TexTopic: public wxObject
   // to find there's only one page in it. We might force a book to be used if
   // a top-level topic has no children (?)
   bool hasChildren;
-  char *filename;
+  wxChar *filename;
   wxStringList *keywords;
-  TexTopic(char *f = NULL);
+  TexTopic(wxChar *f = NULL);
   ~TexTopic(void);
 };
 extern wxHashTable TopicTable;
-void AddKeyWordForTopic(char *topic, char *entry, char *filename = NULL);
+void AddKeyWordForTopic(wxChar *topic, wxChar *entry, wxChar *filename = NULL);
 void ClearKeyWordTable(void);
 
-extern char wxTex2RTFBuffer[];
+extern wxChar wxTex2RTFBuffer[];
 extern TexChunk     *TopLevel;
 extern wxHashTable  MacroDefs;
 extern wxStringList IgnorableInputFiles; // Ignorable \input files, e.g. psbox.tex
 
-bool read_a_line(char *buf);
-bool TexLoadFile(char *filename);
-int ParseArg(TexChunk *thisArg, wxList& children, char *buffer, int pos,
-           char *environment = NULL, bool parseArgToBrace = TRUE, TexChunk *customMacroArgs = NULL);
-int ParseMacroBody(const char *macro_name, TexChunk *parent, int no_args,
-           char *buffer, int pos, char *environment = NULL, bool parseArgToBrace = TRUE, TexChunk *customMacroArgs = NULL);
+bool read_a_line(wxChar *buf);
+bool TexLoadFile(wxChar *filename);
+int ParseArg(TexChunk *thisArg, wxList& children, wxChar *buffer, int pos,
+           wxChar *environment = NULL, bool parseArgToBrace = TRUE, TexChunk *customMacroArgs = NULL);
+int ParseMacroBody(const wxChar *macro_name, TexChunk *parent, int no_args,
+           wxChar *buffer, int pos, wxChar *environment = NULL, bool parseArgToBrace = TRUE, TexChunk *customMacroArgs = NULL);
 void TraverseDocument(void);
 void TraverseFromChunk(TexChunk *chunk, wxNode *thisNode = NULL, bool childrenOnly = FALSE);
 #define TraverseChildrenFromChunk(arg) TraverseFromChunk(arg, NULL, TRUE)
@@ -156,12 +157,12 @@ void SetCurrentOutput(FILE *fd);
 void SetCurrentOutputs(FILE *fd1, FILE *fd2);
 extern FILE *CurrentOutput1;
 extern FILE *CurrentOutput2;
-void AddMacroDef(int the_id, const char *name, int n, bool ignore = FALSE, bool forbidden = FALSE);
+void AddMacroDef(int the_id, const wxChar *name, int n, bool ignore = FALSE, bool forbidden = FALSE);
 void TexInitialize(int bufSize);
 void TexCleanUp(void);
-void TexOutput(const char *s, bool ordinaryText = FALSE);
-char *GetArgData(TexChunk *chunk);
-char *GetArgData(void);             // Get the string for the current argument
+void TexOutput(const wxChar *s, bool ordinaryText = FALSE);
+wxChar *GetArgData(TexChunk *chunk);
+wxChar *GetArgData(void);             // Get the string for the current argument
 int GetNoArgs(void);                // Get the number of arguments for the current macro
 TexChunk *GetArgChunk(void);        // Get the chunk for the current argument
 TexChunk *GetTopLevelChunk(void);   // Get the chunk for the top level
@@ -169,7 +170,7 @@ TexChunk *GetNextChunk(void);       // Look ahead to the next chunk
 bool IsArgOptional(void);           // Is this argument an optional argument?
 void DefineDefaultMacros(void);     // Optional set of default macros
 int GetCurrentColumn(void);         // number of characters on current line
-char *ConvertCase(char *s);         // Convert case, according to upperCaseNames setting.
+wxChar *ConvertCase(wxChar *s);         // Convert case, according to upperCaseNames setting.
 extern wxPathList TexPathList;      // Path list, can be used for file searching.
 
 #if !WXWIN_COMPATIBILITY_2
@@ -177,7 +178,7 @@ extern bool StringMatch(const wxChar *one, const wxChar *two, bool subString = T
 #endif
 
 // Define a variable value from the .ini file
-char *RegisterSetting(char *settingName, char *settingValue, bool interactive = TRUE);
+wxChar *RegisterSetting(wxChar *settingName, wxChar *settingValue, bool interactive = TRUE);
 
 // Major document styles
 #define LATEX_REPORT    1
@@ -191,9 +192,9 @@ extern TexChunk *DocumentAuthor;
 extern TexChunk *DocumentDate;
 extern int DocumentStyle;
 extern int MinorDocumentStyle;
-extern char *BibliographyStyleString;
-extern char *DocumentStyleString;
-extern char *MinorDocumentStyleString;
+extern wxChar *BibliographyStyleString;
+extern wxChar *DocumentStyleString;
+extern wxChar *MinorDocumentStyleString;
 
 extern int normalFont;
 extern int smallFont;
@@ -235,42 +236,42 @@ extern bool useWord; // Insert Word table of contents, etc. etc.
 extern bool indexSubsections; // put subsections in index
 extern bool compatibilityMode;
 extern bool generateHPJ;      // Generate WinHelp HPJ file
-extern char *winHelpTitle;    // Title for Windows Help file
+extern wxChar *winHelpTitle;    // Title for Windows Help file
 extern int defaultTableColumnWidth;
-extern char *bitmapMethod;
+extern wxChar *bitmapMethod;
 extern bool truncateFilenames; // Truncate for DOS
 extern int  winHelpVersion;    // Version e.g. 4 for Win95
 extern bool winHelpContents;   // Generate .cnt file
 extern bool htmlIndex;         // Generate .htx HTML index file
 extern bool htmlFrameContents; // Use frames for HTML contents page
-extern char *htmlStylesheet;   // Use this CSS stylesheet for HTML pages
+extern wxChar *htmlStylesheet; // Use this CSS stylesheet for HTML pages
 extern int  contentsDepth;     // Depth of contents for linear RTF files
 extern bool upperCaseNames;    // Filenames; default is lower case
-extern char *backgroundImageString; // HTML background image
-extern char *backgroundColourString; // HTML background colour
-extern char *textColourString; // HTML text colour
-extern char *linkColourString; // HTML link colour
-extern char *followedLinkColourString; // HTML followed link colour
+extern wxChar *backgroundImageString; // HTML background image
+extern wxChar *backgroundColourString; // HTML background colour
+extern wxChar *textColourString; // HTML text colour
+extern wxChar *linkColourString; // HTML link colour
+extern wxChar *followedLinkColourString; // HTML followed link colour
 extern bool combineSubSections; // Stop splitting files below section
 extern bool htmlWorkshopFiles;  // generate HTML Help Workshop project files
 extern bool ignoreBadRefs;      // Don't insert (REF NOT FOUND)
-extern char *htmlFaceName;      // HTML face name
+extern wxChar *htmlFaceName;      // HTML face name
 
 // Names to help with internationalisation
-extern char *ContentsNameString;
-extern char *AbstractNameString;
-extern char *GlossaryNameString;
-extern char *ReferencesNameString;
-extern char *FiguresNameString;
-extern char *TablesNameString;
-extern char *FigureNameString;
-extern char *TableNameString;
-extern char *IndexNameString;
-extern char *ChapterNameString;
-extern char *SectionNameString;
-extern char *SubsectionNameString;
-extern char *SubsubsectionNameString;
-extern char *UpNameString;
+extern wxChar *ContentsNameString;
+extern wxChar *AbstractNameString;
+extern wxChar *GlossaryNameString;
+extern wxChar *ReferencesNameString;
+extern wxChar *FiguresNameString;
+extern wxChar *TablesNameString;
+extern wxChar *FigureNameString;
+extern wxChar *TableNameString;
+extern wxChar *IndexNameString;
+extern wxChar *ChapterNameString;
+extern wxChar *SectionNameString;
+extern wxChar *SubsectionNameString;
+extern wxChar *SubsubsectionNameString;
+extern wxChar *UpNameString;
 
 /*
  * HTML button identifiers: what kind of browse buttons
@@ -315,26 +316,24 @@ extern TexChunk *      CentreHeaderEven;
 extern TexChunk *      CentreFooterEven;
 extern TexChunk *      RightHeaderEven;
 extern TexChunk *      RightFooterEven;
-extern char *          PageStyle;
+extern wxChar *        PageStyle;
 
 // Repeat the currentSection, either real (Chapter) or simulated (References)
 extern void OutputCurrentSection(void);
-extern void OutputCurrentSectionToString(char *buf);
-extern void OutputChunkToString(TexChunk *chunk, char *buf);
-
-extern char *fakeCurrentSection;
+extern void OutputCurrentSectionToString(wxChar *buf);
+extern void OutputChunkToString(TexChunk *chunk, wxChar *buf);
 
 // Called by Tex2Any to simulate a section
-extern void FakeCurrentSection(char *fakeSection, bool addToContents = TRUE);
+extern void FakeCurrentSection(wxChar *fakeSection, bool addToContents = TRUE);
 
 /*
  * Local to Tex2Any library
  *
  */
  
-extern char *currentArgData;
+extern wxChar *currentArgData;
 extern bool haveArgData; // If TRUE, we're simulating the data.
-void StartSimulateArgument(char *data);
+void StartSimulateArgument(wxChar *data);
 void EndSimulateArgument(void);
 
 /*
@@ -357,10 +356,10 @@ void DefaultOnMacro(int macroId, int no_args, bool start);
 bool DefaultOnArgument(int macroId, int arg_no, bool start);
 
 // Called on error
-void OnError(const char *msg);
+void OnError(const wxChar *msg);
 
 // Called for information
-void OnInform(const char *msg);
+void OnInform(const wxChar *msg);
 
 // Special yield wrapper
 void Tex2RTFYield(bool force = FALSE);
@@ -372,13 +371,13 @@ void Tex2RTFYield(bool force = FALSE);
 
 // Look for \label macro, use this ref name if found or
 // make up a topic name otherwise.
-char *FindTopicName(TexChunk *chunk);
+wxChar *FindTopicName(TexChunk *chunk);
 // Force the current topic to be this (e.g. force 'references' label).
-void ForceTopicName(const char *name);
+void ForceTopicName(const wxChar *name);
 void ResetTopicCounter(void);
 
 // Parse unit eg. 14, 12pt, 34cm and return value in points.
-int ParseUnitArgument(char *unitArg);
+int ParseUnitArgument(wxChar *unitArg);
 
 // Set small, large, normal etc. point sizes for reference size
 void SetFontSizes(int pointSize);
@@ -389,7 +388,7 @@ void SetFontSizes(int pointSize);
  *
  */
  
-void StripExtension(char *buffer);
+void StripExtension(wxChar *buffer);
 
 /*
  * Reference structure
@@ -399,11 +398,11 @@ void StripExtension(char *buffer);
 class TexRef: public wxObject
 {
  public:
-  char *refLabel;      // Reference label
-  char *refFile;       // Reference filename (can be NULL)
-  char *sectionNumber; // Section or figure number (as a string)
-  char *sectionName; // name e.g. 'section'
-  TexRef(const char *label, const char *file, const char *section, const char *sectionN = NULL);
+  wxChar *refLabel;      // Reference label
+  wxChar *refFile;       // Reference filename (can be NULL)
+  wxChar *sectionNumber; // Section or figure number (as a string)
+  wxChar *sectionName; // name e.g. 'section'
+  TexRef(const wxChar *label, const wxChar *file, const wxChar *section, const wxChar *sectionN = NULL);
   ~TexRef(void);
 };
 
@@ -412,15 +411,15 @@ class TexRef: public wxObject
  *
  */
  
-void AddTexRef(char *name, char *file = NULL, char *sectionName = NULL,
+void AddTexRef(wxChar *name, wxChar *file = NULL, wxChar *sectionName = NULL,
          int chapter = 0, int section = 0, int subsection = 0, int subsubsection = 0);
 
 /*
  * Read and write reference file (.ref), to resolve refs for second pass.
  *
  */
-void WriteTexReferences(char *filename);
-void ReadTexReferences(char *filename);
+void WriteTexReferences(wxChar *filename);
+void ReadTexReferences(wxChar *filename);
 
 /*
  * Bibliography stuff
@@ -430,33 +429,33 @@ void ReadTexReferences(char *filename);
 class BibEntry: public wxObject
 {
  public:
-  char *key;
+  wxChar *key;
 
   /*
    * book, inbook, article, phdthesis, inproceedings, techreport
    */
-  char *type;
+  wxChar *type;
 
   /*
    * Possible fields
    *
    */
-  char *editor;
-  char *title;
-  char *booktitle;
-  char *author;
-  char *journal;
-  char *volume;
-  char *number;
-  char *year;
-  char *month;
-  char *pages;
-  char *chapter;
-  char *publisher;
-  char *address;
-  char *institution;
-  char *organization;
-  char *comment;
+  wxChar *editor;
+  wxChar *title;
+  wxChar *booktitle;
+  wxChar *author;
+  wxChar *journal;
+  wxChar *volume;
+  wxChar *number;
+  wxChar *year;
+  wxChar *month;
+  wxChar *pages;
+  wxChar *chapter;
+  wxChar *publisher;
+  wxChar *address;
+  wxChar *institution;
+  wxChar *organization;
+  wxChar *comment;
 
   inline BibEntry(void)
   {
@@ -484,11 +483,11 @@ class BibEntry: public wxObject
 extern wxList BibList;
 extern wxStringList CitationList;
 
-bool ReadBib(char *filename);
+bool ReadBib(wxChar *filename);
 void OutputBib(void);
 void ResolveBibReferences(void);
-void AddCitation(char *citeKey);
-TexRef *FindReference(char *key);
+void AddCitation(wxChar *citeKey);
+TexRef *FindReference(wxChar *key);
 
 /*
  * Ability to customize, or at least suppress unknown macro errors
@@ -504,25 +503,25 @@ extern wxList CustomMacroList;
 class CustomMacro: public wxObject
 {
  public:
-  char *macroName;
-  char *macroBody;
+  wxChar *macroName;
+  wxChar *macroBody;
   int noArgs;
-  inline CustomMacro(char *name, int args, char *body)
+  inline CustomMacro(wxChar *name, int args, wxChar *body)
   {
     noArgs = args;
-    macroName = strcpy(new char[strlen(name) + 1], name);
+    macroName = wxStrcpy(new wxChar[wxStrlen(name) + 1], name);
     if (body)
-      macroBody = strcpy(new char[strlen(body) + 1], body);
+      macroBody = wxStrcpy(new wxChar[wxStrlen(body) + 1], body);
     else
       macroBody = NULL;
   }
   ~CustomMacro();
 };
 
-bool ReadCustomMacros(char *filename);
+bool ReadCustomMacros(wxChar *filename);
 void ShowCustomMacros(void);
-CustomMacro *FindCustomMacro(char *name);
-char *ParseMultifieldString(char *s, int *pos);
+CustomMacro *FindCustomMacro(wxChar *name);
+wxChar *ParseMultifieldString(wxChar *s, int *pos);
 
 /*
  * Colour table stuff
@@ -532,20 +531,20 @@ char *ParseMultifieldString(char *s, int *pos);
 class ColourTableEntry: public wxObject
 {
  public:
-  char *name;
+  wxChar *name;
   unsigned int red;
   unsigned int green;
   unsigned int blue;
 
-  ColourTableEntry(const char *theName, unsigned int r,  unsigned int g,  unsigned int b);
+  ColourTableEntry(const wxChar *theName, unsigned int r,  unsigned int g,  unsigned int b);
   ~ColourTableEntry(void);
 };
 
 extern wxList ColourTable;
-extern void AddColour(const char *theName, unsigned int r,  unsigned int g,  unsigned int b);
-extern int FindColourPosition(char *theName);
+extern void AddColour(const wxChar *theName, unsigned int r,  unsigned int g,  unsigned int b);
+extern int FindColourPosition(wxChar *theName);
 // Converts e.g. "red" -> "#FF0000"
-extern bool FindColourHTMLString(char *theName, char *buf);
+extern bool FindColourHTMLString(wxChar *theName, wxChar *buf);
 extern void InitialiseColourTable(void);
 
 #define ltABSTRACT          1
index 52294e31a3b5776da265daa89aff413ee2e51fa9..f3f655fb19b7260ca7216705c4a978385ece63a4 100644 (file)
@@ -64,7 +64,7 @@ const float versionNo = TEX2RTF_VERSION_NUMBER;
 
 TexChunk *currentMember = NULL;
 bool startedSections = FALSE;
-char *contentsString = NULL;
+wxChar *contentsString = NULL;
 bool suppressNameDecoration = FALSE;
 bool OkToClose = TRUE;
 int passNumber = 1;
@@ -72,31 +72,12 @@ unsigned long errorCount = 0;
 
 #ifndef NO_GUI
 
-extern char *BigBuffer;
-extern char *TexFileRoot;
-extern char *TexBibName;         // Bibliography output file name
-extern char *TexTmpBibName;      // Temporary bibliography output file name
+extern wxChar *BigBuffer;
+extern wxChar *TexFileRoot;
+extern wxChar *TexBibName;         // Bibliography output file name
+extern wxChar *TexTmpBibName;      // Temporary bibliography output file name
 extern wxList ColourTable;
 extern TexChunk *TopLevel;
-extern char *PageStyle;
-extern char *BibliographyStyleString;
-extern char *DocumentStyleString;
-extern char *bitmapMethod;
-extern char *backgroundColourString;
-extern char *ContentsNameString;
-extern char *AbstractNameString;
-extern char *GlossaryNameString;
-extern char *ReferencesNameString;
-extern char *FiguresNameString;
-extern char *TablesNameString;
-extern char *FigureNameString;
-extern char *TableNameString;
-extern char *IndexNameString;
-extern char *ChapterNameString;
-extern char *SectionNameString;
-extern char *SubsectionNameString;
-extern char *SubsubsectionNameString;
-extern char *UpNameString;
 
 
 
@@ -105,13 +86,13 @@ wxHelpController *HelpInstance = NULL;
 #endif // wxUSE_HELP
 
 #ifdef __WXMSW__
-static char *ipc_buffer = NULL;
-static char Tex2RTFLastStatus[100];
+static wxChar *ipc_buffer = NULL;
+static wxChar Tex2RTFLastStatus[100];
 Tex2RTFServer *TheTex2RTFServer = NULL;
 #endif
 #endif
 
-char *bulletFile = NULL;
+wxChar *bulletFile = NULL;
 
 FILE *Contents = NULL;   // Contents page
 FILE *Chapters = NULL;   // Chapters (WinHelp RTF) or rest of file (linear RTF)
@@ -121,18 +102,18 @@ FILE *Subsubsections = NULL;
 FILE *Popups = NULL;
 FILE *WinHelpContentsFile = NULL;
 
-char *InputFile = NULL;
-char *OutputFile = NULL;
-char *MacroFile = copystring("tex2rtf.ini");
+wxChar *InputFile = NULL;
+wxChar *OutputFile = NULL;
+wxChar *MacroFile = copystring(_T("tex2rtf.ini"));
 
-char *FileRoot = NULL;
-char *ContentsName = NULL;    // Contents page from last time around
-char *TmpContentsName = NULL; // Current contents page
-char *TmpFrameContentsName = NULL; // Current frame contents page
-char *WinHelpContentsFileName = NULL; // WinHelp .cnt file
-char *RefFileName = NULL;         // Reference file name
+wxChar *FileRoot = NULL;
+wxChar *ContentsName = NULL;    // Contents page from last time around
+wxChar *TmpContentsName = NULL; // Current contents page
+wxChar *TmpFrameContentsName = NULL; // Current frame contents page
+wxChar *WinHelpContentsFileName = NULL; // WinHelp .cnt file
+wxChar *RefFileName = NULL;         // Reference file name
 
-char *RTFCharset = copystring("ansi");
+wxChar *RTFCharset = copystring(_T("ansi"));
 
 #ifdef __WXMSW__
 int BufSize = 100;             // Size of buffer in K
@@ -143,7 +124,7 @@ int BufSize = 500;
 bool Go(void);
 void ShowOptions(void);
 
-char wxTex2RTFBuffer[1500];
+wxChar wxTex2RTFBuffer[1500];
 
 #ifdef NO_GUI
 
@@ -161,14 +142,14 @@ bool MyApp::OnInit()
 {
   // Use default list of macros defined in tex2any.cc
   DefineDefaultMacros();
-  AddMacroDef(ltHARDY, "hardy", 0);
+  AddMacroDef(ltHARDY, _T("hardy"), 0);
 
-  FileRoot = new char[300];
-  ContentsName = new char[300];
-  TmpContentsName = new char[300];
-  TmpFrameContentsName = new char[300];
-  WinHelpContentsFileName = new char[300];
-  RefFileName = new char[300];
+  FileRoot = new wxChar[300];
+  ContentsName = new wxChar[300];
+  TmpContentsName = new wxChar[300];
+  TmpFrameContentsName = new wxChar[300];
+  WinHelpContentsFileName = new wxChar[300];
+  RefFileName = new wxChar[300];
 
   ColourTable.DeleteContents(TRUE);
 
@@ -212,45 +193,45 @@ bool MyApp::OnInit()
   int i;
   for (i = n; i < argc;)
   {
-    if (strcmp(argv[i], "-winhelp") == 0)
+    if (wxStrcmp(argv[i], _T("-winhelp")) == 0)
     {
       i ++;
       convertMode = TEX_RTF;
       winHelp = TRUE;
     }
 #ifndef NO_GUI
-    else if (strcmp(argv[i], "-interactive") == 0)
+    else if (wxStrcmp(argv[i], _T("-interactive")) == 0)
     {
       i ++;
       isInteractive = TRUE;
     }
 #endif
-    else if (strcmp(argv[i], "-sync") == 0)  // Don't yield
+    else if (wxStrcmp(argv[i], _T("-sync")) == 0)  // Don't yield
     {
       i ++;
       isSync = TRUE;
     }
-    else if (strcmp(argv[i], "-rtf") == 0)
+    else if (wxStrcmp(argv[i], _T("-rtf")) == 0)
     {
       i ++;
       convertMode = TEX_RTF;
     }
-    else if (strcmp(argv[i], "-html") == 0)
+    else if (wxStrcmp(argv[i], _T("-html")) == 0)
     {
       i ++;
       convertMode = TEX_HTML;
     }
-    else if (strcmp(argv[i], "-xlp") == 0)
+    else if (wxStrcmp(argv[i], _T("-xlp")) == 0)
     {
       i ++;
       convertMode = TEX_XLP;
     }
-    else if (strcmp(argv[i], "-twice") == 0)
+    else if (wxStrcmp(argv[i], _T("-twice")) == 0)
     {
       i ++;
       runTwice = TRUE;
     }
-    else if (strcmp(argv[i], "-macros") == 0)
+    else if (wxStrcmp(argv[i], _T("-macros")) == 0)
     {
       i ++;
       if (i < argc)
@@ -259,38 +240,38 @@ bool MyApp::OnInit()
         i ++;
       }
     }
-    else if (strcmp(argv[i], "-bufsize") == 0)
+    else if (wxStrcmp(argv[i], _T("-bufsize")) == 0)
     {
       i ++;
       if (i < argc)
       {
-        BufSize = atoi(argv[i]);
+        BufSize = wxAtoi(argv[i]);
         i ++;
       }
     }
-    else if (strcmp(argv[i], "-charset") == 0)
+    else if (wxStrcmp(argv[i], _T("-charset")) == 0)
     {
       i ++;
       if (i < argc)
       {
-        char *s = argv[i];
+        wxChar *s = argv[i];
         i ++;
-        if (strcmp(s, "ansi") == 0 || strcmp(s, "pc") == 0 || strcmp(s, "mac") == 0 ||
-            strcmp(s, "pca") == 0)
+        if (wxStrcmp(s, _T("ansi")) == 0 || wxStrcmp(s, _T("pc")) == 0 || wxStrcmp(s, _T("mac")) == 0 ||
+            wxStrcmp(s, _T("pca")) == 0)
           RTFCharset = copystring(s);
         else
         {
-          OnError("Incorrect argument for -charset");
+          OnError(_T("Incorrect argument for -charset"));
           return FALSE;
         }
       }
     }
-    else if (strcmp(argv[i], "-checkcurleybraces") == 0)
+    else if (wxStrcmp(argv[i], _T("-checkcurleybraces")) == 0)
     {
       i ++;
       checkCurleyBraces = TRUE;
     }
-    else if (strcmp(argv[i], "-checksyntax") == 0)
+    else if (wxStrcmp(argv[i], _T("-checksyntax")) == 0)
     {
       i ++;
       checkSyntax = TRUE;
@@ -298,9 +279,8 @@ bool MyApp::OnInit()
     else
     {
       wxString buf;
-      buf.Printf("Invalid switch %s.\n", argv[i]);
-      OnError((char *)buf.c_str());
-      i++;
+      buf.Printf(_T("Invalid switch %s.\n"), argv[i]);
+      OnError((wxChar *)buf.c_str());
 #ifdef NO_GUI
       ShowOptions();
       exit(1);
@@ -313,7 +293,7 @@ bool MyApp::OnInit()
   wxDDEInitialize();
   Tex2RTFLastStatus[0] = 0; // DDE connection return value
   TheTex2RTFServer = new Tex2RTFServer;
-  TheTex2RTFServer->Create("TEX2RTF");
+  TheTex2RTFServer->Create(_T("TEX2RTF"));
 #endif
 
 #if defined(__WXMSW__) && defined(__WIN16__)
@@ -328,10 +308,10 @@ bool MyApp::OnInit()
 
   if (isInteractive)
   {
-    char buf[100];
+    wxChar buf[100];
 
     // Create the main frame window
-    frame = new MyFrame(NULL, -1, "Tex2RTF", wxPoint(-1, -1), wxSize(400, 300));
+    frame = new MyFrame(NULL, -1, _T("Tex2RTF"), wxPoint(-1, -1), wxSize(400, 300));
     frame->CreateStatusBar(2);
 
     // Give it an icon
@@ -340,63 +320,63 @@ bool MyApp::OnInit()
 
     if (InputFile)
     {
-      sprintf(buf, "Tex2RTF [%s]", wxFileNameFromPath(InputFile));
+      wxSprintf(buf, _T("Tex2RTF [%s]"), wxFileNameFromPath(InputFile));
       frame->SetTitle(buf);
     }
 
     // Make a menubar
     wxMenu *file_menu = new wxMenu;
-    file_menu->Append(TEX_GO, "&Go",                        "Run converter");
-    file_menu->Append(TEX_SET_INPUT, "Set &Input File",     "Set the LaTeX input file");
-    file_menu->Append(TEX_SET_OUTPUT, "Set &Output File",   "Set the output file");
+    file_menu->Append(TEX_GO, _T("&Go"), _T("Run converter"));
+    file_menu->Append(TEX_SET_INPUT, _T("Set &Input File"), _T("Set the LaTeX input file"));
+    file_menu->Append(TEX_SET_OUTPUT, _T("Set &Output File"), _T("Set the output file"));
     file_menu->AppendSeparator();
-    file_menu->Append(TEX_VIEW_LATEX, "View &LaTeX File",   "View the LaTeX input file");
-    file_menu->Append(TEX_VIEW_OUTPUT, "View Output &File", "View output file");
-    file_menu->Append(TEX_SAVE_FILE, "&Save log file", "Save displayed text into file");
+    file_menu->Append(TEX_VIEW_LATEX, _T("View &LaTeX File"), _T("View the LaTeX input file"));
+    file_menu->Append(TEX_VIEW_OUTPUT, _T("View Output &File"), _T("View output file"));
+    file_menu->Append(TEX_SAVE_FILE, _T("&Save log file"), _T("Save displayed text into file"));
     file_menu->AppendSeparator();
-    file_menu->Append(TEX_QUIT, "E&xit",                    "Exit Tex2RTF");
+    file_menu->Append(TEX_QUIT, _T("E&xit"), _T("Exit Tex2RTF"));
 
     wxMenu *macro_menu = new wxMenu;
 
-    macro_menu->Append(TEX_LOAD_CUSTOM_MACROS, "&Load Custom Macros", "Load custom LaTeX macro file");
-    macro_menu->Append(TEX_VIEW_CUSTOM_MACROS, "View &Custom Macros", "View custom LaTeX macros");
+    macro_menu->Append(TEX_LOAD_CUSTOM_MACROS, _T("&Load Custom Macros"), _T("Load custom LaTeX macro file"));
+    macro_menu->Append(TEX_VIEW_CUSTOM_MACROS, _T("View &Custom Macros"), _T("View custom LaTeX macros"));
 
     wxMenu *mode_menu = new wxMenu;
 
-    mode_menu->Append(TEX_MODE_RTF, "Output linear &RTF",   "Wordprocessor-compatible RTF");
-    mode_menu->Append(TEX_MODE_WINHELP, "Output &WinHelp RTF", "WinHelp-compatible RTF");
-    mode_menu->Append(TEX_MODE_HTML, "Output &HTML",        "HTML World Wide Web hypertext file");
-    mode_menu->Append(TEX_MODE_XLP, "Output &XLP",          "wxHelp hypertext help file");
+    mode_menu->Append(TEX_MODE_RTF, _T("Output linear &RTF"), _T("Wordprocessor-compatible RTF"));
+    mode_menu->Append(TEX_MODE_WINHELP, _T("Output &WinHelp RTF"), _T("WinHelp-compatible RTF"));
+    mode_menu->Append(TEX_MODE_HTML, _T("Output &HTML"), _T("HTML World Wide Web hypertext file"));
+    mode_menu->Append(TEX_MODE_XLP, _T("Output &XLP"), _T("wxHelp hypertext help file"));
 
     wxMenu *options_menu = new wxMenu;
 
-    options_menu->Append(TEX_OPTIONS_CURELY_BRACE, "Curley brace matching",   "Checks for mismatched curley braces",TRUE);
-    options_menu->Append(TEX_OPTIONS_SYNTAX_CHECKING, "Syntax checking", "Syntax checking for common errors",TRUE);
+    options_menu->Append(TEX_OPTIONS_CURELY_BRACE, _T("Curley brace matching"), _T("Checks for mismatched curley braces"),TRUE);
+    options_menu->Append(TEX_OPTIONS_SYNTAX_CHECKING, _T("Syntax checking"), _T("Syntax checking for common errors"),TRUE);
 
     options_menu->Check(TEX_OPTIONS_CURELY_BRACE, checkCurleyBraces);
     options_menu->Check(TEX_OPTIONS_SYNTAX_CHECKING, checkSyntax);
 
     wxMenu *help_menu = new wxMenu;
 
-    help_menu->Append(TEX_HELP, "&Help", "Tex2RTF Contents Page");
-    help_menu->Append(TEX_ABOUT, "&About Tex2RTF", "About Tex2RTF");
+    help_menu->Append(TEX_HELP, _T("&Help"), _T("Tex2RTF Contents Page"));
+    help_menu->Append(TEX_ABOUT, _T("&About Tex2RTF"), _T("About Tex2RTF"));
 
     menuBar = new wxMenuBar;
-    menuBar->Append(file_menu, "&File");
-    menuBar->Append(macro_menu, "&Macros");
-    menuBar->Append(mode_menu, "&Conversion Mode");
-    menuBar->Append(options_menu, "&Options");
-    menuBar->Append(help_menu, "&Help");
+    menuBar->Append(file_menu, _T("&File"));
+    menuBar->Append(macro_menu, _T("&Macros"));
+    menuBar->Append(mode_menu, _T("&Conversion Mode"));
+    menuBar->Append(options_menu, _T("&Options"));
+    menuBar->Append(help_menu, _T("&Help"));
 
     frame->SetMenuBar(menuBar);
-    frame->textWindow = new wxTextCtrl(frame, -1, "", wxPoint(-1, -1), wxSize(-1, -1), wxTE_READONLY|wxTE_MULTILINE);
+    frame->textWindow = new wxTextCtrl(frame, -1, _T(""), wxPoint(-1, -1), wxSize(-1, -1), wxTE_READONLY|wxTE_MULTILINE);
 
-    (*frame->textWindow) << "Welcome to Tex2RTF.\n";
+    (*frame->textWindow) << _T("Welcome to Tex2RTF.\n");
 //    ShowOptions();
 
 #if wxUSE_HELP
     HelpInstance = new wxHelpController();
-    HelpInstance->Initialize("tex2rtf");
+    HelpInstance->Initialize(_T("tex2rtf"));
 #endif // wxUSE_HELP
 
     /*
@@ -404,19 +384,19 @@ bool MyApp::OnInit()
      *
      */
 
-    wxString path;
-    if ((path = TexPathList.FindValidPath(MacroFile)) != "")
-      ReadCustomMacros((char*) (const char*) path);
+    wxString path = TexPathList.FindValidPath(MacroFile);
+    if (path != _T(""))
+      ReadCustomMacros((wxChar *)path.c_str());
 
-    strcpy(buf, "In ");
+    wxStrcpy(buf, _T("In "));
 
     if (winHelp && (convertMode == TEX_RTF))
-      strcat(buf, "WinHelp RTF");
+      wxStrcat(buf, _T("WinHelp RTF"));
     else if (!winHelp && (convertMode == TEX_RTF))
-      strcat(buf, "linear RTF");
-    else if (convertMode == TEX_HTML) strcat(buf, "HTML");
-    else if (convertMode == TEX_XLP) strcat(buf, "XLP");
-      strcat(buf, " mode.");
+      wxStrcat(buf, _T("linear RTF"));
+    else if (convertMode == TEX_HTML) wxStrcat(buf, _T("HTML"));
+    else if (convertMode == TEX_XLP) wxStrcat(buf, _T("XLP"));
+      wxStrcat(buf, _T(" mode."));
     frame->SetStatusText(buf, 1);
 
     frame->Show(TRUE);
@@ -430,9 +410,9 @@ bool MyApp::OnInit()
      *
      */
 
-    wxString path;
-    if ((path = TexPathList.FindValidPath(MacroFile)) != "")
-      ReadCustomMacros((char*) (const char*) path);
+    wxString path = TexPathList.FindValidPath(MacroFile);
+    if (path != _T(""))
+      ReadCustomMacros((wxChar*)path.c_str());
 
     Go();
     if (runTwice) 
@@ -446,12 +426,15 @@ bool MyApp::OnInit()
 #endif
   }
 
+#if 0
+  // it already returned something, no need to cause warning
 #ifndef NO_GUI
   // Return the main frame window
   return TRUE;
 #else
   return 0;
 #endif
+#endif
 }
 
 #ifndef NO_GUI
@@ -589,25 +572,25 @@ int MyApp::OnExit()
 #endif
 void ShowOptions(void)
 {
-    char buf[100];
-    sprintf(buf, "Tex2RTF version %.2f", versionNo);
+    wxChar buf[100];
+    wxSprintf(buf, _T("Tex2RTF version %.2f"), versionNo);
     OnInform(buf);
-    OnInform("Usage: tex2rtf [input] [output] [switches]\n");
-    OnInform("where valid switches are");
+    OnInform(_T("Usage: tex2rtf [input] [output] [switches]\n"));
+    OnInform(_T("where valid switches are"));
 #ifndef NO_GUI
-    OnInform("    -interactive");
+    OnInform(_T("    -interactive"));
 #endif
-    OnInform("    -bufsize <size in K>");
-    OnInform("    -charset <pc | pca | ansi | mac> (default ansi)");
-    OnInform("    -twice");
-    OnInform("    -sync");
-    OnInform("    -checkcurleybraces");
-    OnInform("    -checksyntax");
-    OnInform("    -macros <filename>");
-    OnInform("    -winhelp");
-    OnInform("    -rtf");
-    OnInform("    -html");
-    OnInform("    -xlp\n");
+    OnInform(_T("    -bufsize <size in K>"));
+    OnInform(_T("    -charset <pc | pca | ansi | mac> (default ansi)"));
+    OnInform(_T("    -twice"));
+    OnInform(_T("    -sync"));
+    OnInform(_T("    -checkcurleybraces"));
+    OnInform(_T("    -checksyntax"));
+    OnInform(_T("    -macros <filename>"));
+    OnInform(_T("    -winhelp"));
+    OnInform(_T("    -rtf"));
+    OnInform(_T("    -html"));
+    OnInform(_T("    -xlp\n"));
 }
 
 #ifndef NO_GUI
@@ -638,7 +621,7 @@ MyFrame::MyFrame(wxFrame *frame, wxWindowID id, const wxString& title, const wxP
   wxFrame(frame, id, title, pos, size)
 {}
 
-void MyFrame::OnCloseWindow(wxCloseEvent& event)
+void MyFrame::OnCloseWindow(wxCloseEvent& WXUNUSED(event))
 {
   if (!stopRunning && !OkToClose)
   {
@@ -652,13 +635,13 @@ void MyFrame::OnCloseWindow(wxCloseEvent& event)
   }
 }
 
-void MyFrame::OnExit(wxCommandEvent& event)
+void MyFrame::OnExit(wxCommandEvent& WXUNUSED(event))
 {
   Close();
 //    this->Destroy();
 }
 
-void MyFrame::OnGo(wxCommandEvent& event)
+void MyFrame::OnGo(wxCommandEvent& WXUNUSED(event))
 {
       passNumber = 1;
       errorCount = 0;
@@ -672,10 +655,10 @@ void MyFrame::OnGo(wxCommandEvent& event)
 
       if (stopRunning)
       {
-        SetStatusText("Build aborted!");
+        SetStatusText(_T("Build aborted!"));
         wxString errBuf;
-        errBuf.Printf("\nErrors encountered during this pass: %lu\n", errorCount);
-        OnInform((char *)errBuf.c_str());
+        errBuf.Printf(_T("\nErrors encountered during this pass: %lu\n"), errorCount);
+        OnInform((wxChar *)errBuf.c_str());
       }
 
 
@@ -690,137 +673,137 @@ void MyFrame::OnGo(wxCommandEvent& event)
       menuBar->EnableTop(3, TRUE);
 }
 
-void MyFrame::OnSetInput(wxCommandEvent& event)
+void MyFrame::OnSetInput(wxCommandEvent& WXUNUSED(event))
 {
       ChooseInputFile(TRUE);
 }
 
-void MyFrame::OnSetOutput(wxCommandEvent& event)
+void MyFrame::OnSetOutput(wxCommandEvent& WXUNUSED(event))
 {
       ChooseOutputFile(TRUE);
 }
 
-void MyFrame::OnSaveFile(wxCommandEvent& event)
+void MyFrame::OnSaveFile(wxCommandEvent& WXUNUSED(event))
 {
-      wxString s = wxFileSelector("Save text to file", "", "", "txt", "*.txt");
-      if (s != "")
+      wxString s = wxFileSelector(_T("Save text to file"), _T(""), _T(""), _T("txt"), _T("*.txt"));
+      if (s != _T(""))
       {
         textWindow->SaveFile(s);
-        char buf[350];
-        sprintf(buf, "Saved text to %s", (const char*) s);
+        wxChar buf[350];
+        wxSprintf(buf, _T("Saved text to %s"), (const wxChar*) s.c_str());
         frame->SetStatusText(buf, 0);
       }
 }
 
-void MyFrame::OnViewOutput(wxCommandEvent& event)
+void MyFrame::OnViewOutput(wxCommandEvent& WXUNUSED(event))
 {
       ChooseOutputFile();
       if (OutputFile && wxFileExists(OutputFile))
       {
         textWindow->LoadFile(OutputFile);
-        char buf[300];
+        wxChar buf[300];
         wxString str(wxFileNameFromPath(OutputFile));
-        sprintf(buf, "Tex2RTF [%s]", (const char*) str);
+        wxSprintf(buf, _T("Tex2RTF [%s]"), (const wxChar*) str.c_str());
         frame->SetTitle(buf);
       }
 }
 
-void MyFrame::OnViewLatex(wxCommandEvent& event)
+void MyFrame::OnViewLatex(wxCommandEvent& WXUNUSED(event))
 {
       ChooseInputFile();
       if (InputFile && wxFileExists(InputFile))
       {
         textWindow->LoadFile(InputFile);
-        char buf[300];
+        wxChar buf[300];
         wxString str(wxFileNameFromPath(OutputFile));
-        sprintf(buf, "Tex2RTF [%s]", (const char*) str);
+        wxSprintf(buf, _T("Tex2RTF [%s]"), (const wxChar*) str.c_str());
         frame->SetTitle(buf);
       }
 }
 
-void MyFrame::OnLoadMacros(wxCommandEvent& event)
+void MyFrame::OnLoadMacros(wxCommandEvent& WXUNUSED(event))
 {
       textWindow->Clear();
-      wxString s = wxFileSelector("Choose custom macro file", wxPathOnly(MacroFile), wxFileNameFromPath(MacroFile), "ini", "*.ini");
-      if (s != "" && wxFileExists(s))
+      wxString s = wxFileSelector(_T("Choose custom macro file"), wxPathOnly(MacroFile), wxFileNameFromPath(MacroFile), _T("ini"), _T("*.ini"));
+      if (s != _T("") && wxFileExists(s))
       {
         MacroFile = copystring(s);
-        ReadCustomMacros((char*) (const char*) s);
+        ReadCustomMacros((wxChar *)s.c_str());
         ShowCustomMacros();
       }
 }
 
-void MyFrame::OnShowMacros(wxCommandEvent& event)
+void MyFrame::OnShowMacros(wxCommandEvent& WXUNUSED(event))
 {
       textWindow->Clear();
       Tex2RTFYield(TRUE);
       ShowCustomMacros();
 }
 
-void MyFrame::OnModeRTF(wxCommandEvent& event)
+void MyFrame::OnModeRTF(wxCommandEvent& WXUNUSED(event))
 {
       convertMode = TEX_RTF;
       winHelp = FALSE;
       InputFile = NULL;
       OutputFile = NULL;
-      SetStatusText("In linear RTF mode.", 1);
+      SetStatusText(_T("In linear RTF mode."), 1);
 }
 
-void MyFrame::OnModeWinHelp(wxCommandEvent& event)
+void MyFrame::OnModeWinHelp(wxCommandEvent& WXUNUSED(event))
 {
       convertMode = TEX_RTF;
       winHelp = TRUE;
       InputFile = NULL;
       OutputFile = NULL;
-      SetStatusText("In WinHelp RTF mode.", 1);
+      SetStatusText(_T("In WinHelp RTF mode."), 1);
 }
 
-void MyFrame::OnModeHTML(wxCommandEvent& event)
+void MyFrame::OnModeHTML(wxCommandEvent& WXUNUSED(event))
 {
       convertMode = TEX_HTML;
       winHelp = FALSE;
       InputFile = NULL;
       OutputFile = NULL;
-      SetStatusText("In HTML mode.", 1);
+      SetStatusText(_T("In HTML mode."), 1);
 }
 
-void MyFrame::OnModeXLP(wxCommandEvent& event)
+void MyFrame::OnModeXLP(wxCommandEvent& WXUNUSED(event))
 {
       convertMode = TEX_XLP;
       InputFile = NULL;
       OutputFile = NULL;
-      SetStatusText("In XLP mode.", 1);
+      SetStatusText(_T("In XLP mode."), 1);
 }
 
-void MyFrame::OnOptionsCurleyBrace(wxCommandEvent& event)
+void MyFrame::OnOptionsCurleyBrace(wxCommandEvent& WXUNUSED(event))
 {
     checkCurleyBraces = !checkCurleyBraces;
     if (checkCurleyBraces)
     {
-        SetStatusText("Checking curley braces: YES", 1);
+        SetStatusText(_T("Checking curley braces: YES"), 1);
     }
     else
     {
-        SetStatusText("Checking curley braces: NO", 1);
+        SetStatusText(_T("Checking curley braces: NO"), 1);
     }
 }
 
 
-void MyFrame::OnOptionsSyntaxChecking(wxCommandEvent& event)
+void MyFrame::OnOptionsSyntaxChecking(wxCommandEvent& WXUNUSED(event))
 {
     checkSyntax = !checkSyntax;
     if (checkSyntax)
     {
-        SetStatusText("Checking syntax: YES", 1);
+        SetStatusText(_T("Checking syntax: YES"), 1);
     }
     else
     {
-        SetStatusText("Checking syntax: NO", 1);
+        SetStatusText(_T("Checking syntax: NO"), 1);
     }
 }
 
 
-void MyFrame::OnHelp(wxCommandEvent& event)
+void MyFrame::OnHelp(wxCommandEvent& WXUNUSED(event))
 {
 #if wxUSE_HELP
       HelpInstance->LoadFile();
@@ -828,28 +811,28 @@ void MyFrame::OnHelp(wxCommandEvent& event)
 #endif // wxUSE_HELP
 }
 
-void MyFrame::OnAbout(wxCommandEvent& event)
+void MyFrame::OnAbout(wxCommandEvent& WXUNUSED(event))
 {
-      char buf[300];
+      wxChar buf[300];
 #ifdef __WIN32__
-      char *platform = " (32-bit)";
+      wxChar *platform = _T(" (32-bit)");
 #else
 #ifdef __WXMSW__
-      char *platform = " (16-bit)";
+      wxChar *platform = _T(" (16-bit)");
 #else
-      char *platform = "";
+      wxChar *platform = _T("");
 #endif
 #endif
-      sprintf(buf, "Tex2RTF Version %.2f%s\nLaTeX to RTF, WinHelp, and HTML Conversion\n\n(c) Julian Smart, George Tasker and others, 1999-2002", versionNo, platform);
-      wxMessageBox(buf, "About Tex2RTF");
+      wxSprintf(buf, _T("Tex2RTF Version %.2f%s\nLaTeX to RTF, WinHelp, and HTML Conversion\n\n(c) Julian Smart, George Tasker and others, 1999-2002"), versionNo, platform);
+      wxMessageBox(buf, _T("About Tex2RTF"));
 }
 
 void ChooseInputFile(bool force)
 {
   if (force || !InputFile)
   {
-    wxString s = wxFileSelector("Choose LaTeX input file", wxPathOnly(InputFile), wxFileNameFromPath(InputFile), "tex", "*.tex");
-    if (s != "")
+    wxString s = wxFileSelector(_T("Choose LaTeX input file"), wxPathOnly(InputFile), wxFileNameFromPath(InputFile), _T("tex"), _T("*.tex"));
+    if (s != _T(""))
     {
       // Different file, so clear index entries.
       ClearKeyWordTable();
@@ -860,8 +843,8 @@ void ChooseInputFile(bool force)
       InputFile = copystring(s);
       wxString str = wxFileNameFromPath(InputFile);
       wxString buf;
-      buf.Printf("Tex2RTF [%s]", str.c_str());
-      frame->SetTitle((char *)buf.c_str());
+      buf.Printf(_T("Tex2RTF [%s]"), str.c_str());
+      frame->SetTitle((wxChar *)buf.c_str());
       OutputFile = NULL;
     }
   }
@@ -869,9 +852,9 @@ void ChooseInputFile(bool force)
 
 void ChooseOutputFile(bool force)
 {
-  char extensionBuf[10];
-  char wildBuf[10];
-  strcpy(wildBuf, "*.");
+  wxChar extensionBuf[10];
+  wxChar wildBuf[10];
+  wxStrcpy(wildBuf, _T("*."));
   wxString path;
   if (OutputFile)
     path = wxPathOnly(OutputFile);
@@ -882,33 +865,33 @@ void ChooseOutputFile(bool force)
   {
     case TEX_RTF:
     {
-      strcpy(extensionBuf, "rtf");
-      strcat(wildBuf, "rtf");
+      wxStrcpy(extensionBuf, _T("rtf"));
+      wxStrcat(wildBuf, _T("rtf"));
       break;
     }
     case TEX_XLP:
     {
-      strcpy(extensionBuf, "xlp");
-      strcat(wildBuf, "xlp");
+      wxStrcpy(extensionBuf, _T("xlp"));
+      wxStrcat(wildBuf, _T("xlp"));
       break;
     }
     case TEX_HTML:
     {
 #if defined(__WXMSW__) && defined(__WIN16__)
-      strcpy(extensionBuf, "htm");
-      strcat(wildBuf, "htm");
+      wxStrcpy(extensionBuf, _T("htm"));
+      wxStrcat(wildBuf, _T("htm"));
 #else
-      strcpy(extensionBuf, "html");
-      strcat(wildBuf, "html");
+      wxStrcpy(extensionBuf, _T("html"));
+      wxStrcat(wildBuf, _T("html"));
 #endif
       break;
     }
   }
   if (force || !OutputFile)
   {
-    wxString s = wxFileSelector("Choose output file", path, wxFileNameFromPath(OutputFile),
+    wxString s = wxFileSelector(_T("Choose output file"), path, wxFileNameFromPath(OutputFile),
                    extensionBuf, wildBuf);
-    if (s != "")
+    if (s != _T(""))
       OutputFile = copystring(s);
   }
 }
@@ -927,10 +910,10 @@ bool Go(void)
 #ifndef NO_GUI
   if (isInteractive)
   {
-    char buf[300];
+    wxChar buf[300];
     wxString str = wxFileNameFromPath(InputFile);
 
-    sprintf(buf, "Tex2RTF [%s]", (const char*) str);
+    wxSprintf(buf, _T("Tex2RTF [%s]"), (const wxChar*) str);
     frame->SetTitle(buf);
   }
 
@@ -938,7 +921,7 @@ bool Go(void)
 #endif
 
   // Find extension-less filename
-  strcpy(FileRoot, OutputFile);
+  wxStrcpy(FileRoot, OutputFile);
   StripExtension(FileRoot);
 
   if (truncateFilenames && convertMode == TEX_HTML)
@@ -946,24 +929,24 @@ bool Go(void)
     // Truncate to five characters. This ensures that
     // we can generate DOS filenames such as thing999. But 1000 files
     // may not be enough, of course...
-    char* sName = wxFileNameFromPath( FileRoot);  // this Julian's method is non-destructive reference
+    wxChar* sName = wxFileNameFromPath( FileRoot);  // this Julian's method is non-destructive reference
 
     if(sName)
-      if(strlen( sName) > 5)
+      if(wxStrlen( sName) > 5)
         sName[5] = '\0';  // that should do!
   }
 
-  sprintf(ContentsName, "%s.con", FileRoot);
-  sprintf(TmpContentsName, "%s.cn1", FileRoot);
-  sprintf(TmpFrameContentsName, "%s.frc", FileRoot);
-  sprintf(WinHelpContentsFileName, "%s.cnt", FileRoot);
-  sprintf(RefFileName, "%s.ref", FileRoot);
+  wxSprintf(ContentsName, _T("%s.con"), FileRoot);
+  wxSprintf(TmpContentsName, _T("%s.cn1"), FileRoot);
+  wxSprintf(TmpFrameContentsName, _T("%s.frc"), FileRoot);
+  wxSprintf(WinHelpContentsFileName, _T("%s.cnt"), FileRoot);
+  wxSprintf(RefFileName, _T("%s.ref"), FileRoot);
 
   TexPathList.EnsureFileAccessible(InputFile);
   if (!bulletFile)
   {
-    wxString s = TexPathList.FindValidPath("bullet.bmp");
-    if (s != "")
+    wxString s = TexPathList.FindValidPath(_T("bullet.bmp"));
+    if (s != _T(""))
     {
       wxString str = wxFileNameFromPath(s);
       bulletFile = copystring(str);
@@ -979,7 +962,7 @@ bool Go(void)
   {
     if (!wxFileExists(InputFile))
     {
-      OnError("Cannot open input file!");
+      OnError(_T("Cannot open input file!"));
       TexCleanUp();
       return FALSE;
     }
@@ -987,12 +970,12 @@ bool Go(void)
     if (isInteractive)
     {
       wxString buf;
-      buf.Printf("Working, pass %d...Click CLOSE to abort", passNumber);
-      frame->SetStatusText((char *)buf.c_str());
+      buf.Printf(_T("Working, pass %d...Click CLOSE to abort"), passNumber);
+      frame->SetStatusText((wxChar *)buf.c_str());
     }
 #endif
     OkToClose = FALSE;
-    OnInform("Reading LaTeX file...");
+    OnInform(_T("Reading LaTeX file..."));
     TexLoadFile(InputFile);
 
     if (stopRunning)
@@ -1022,7 +1005,7 @@ bool Go(void)
   }
   if (stopRunning)
   {
-    OnInform("*** Aborted by user.");
+    OnInform(_T("*** Aborted by user."));
     success = FALSE;
     stopRunning = FALSE;
     OkToClose = TRUE;
@@ -1037,27 +1020,27 @@ bool Go(void)
     wxString buf;
 #ifndef NO_GUI
     long tim = wxGetElapsedTime();
-    buf.Printf("Finished PASS #%d in %ld seconds.\n", passNumber, (long)(tim/1000.0));
-    OnInform((char *)buf.c_str());
+    buf.Printf(_T("Finished PASS #%d in %ld seconds.\n"), passNumber, (long)(tim/1000.0));
+    OnInform((wxChar *)buf.c_str());
 
     if (errorCount)
     {
-        buf.Printf("Errors encountered during this pass: %lu\n", errorCount);
-        OnInform((char *)buf.c_str());
+        buf.Printf(_T("Errors encountered during this pass: %lu\n"), errorCount);
+        OnInform((wxChar *)buf.c_str());
     }
 
     if (isInteractive)
     {
-      buf.Printf("Done, %d %s.", passNumber, (passNumber > 1) ? "passes" : "pass");
-      frame->SetStatusText((char *)buf.c_str());
+      buf.Printf(_T("Done, %d %s."), passNumber, (passNumber > 1) ? _T("passes") : _T("pass"));
+      frame->SetStatusText((wxChar *)buf.c_str());
     }
 #else
-    buf.Printf("Done, %d %s.", passNumber, (passNumber > 1) ? "passes" : "pass");
-    OnInform((char *)buf.c_str());
+    buf.Printf(_T("Done, %d %s."), passNumber, (passNumber > 1) ? _T("passes") : _T("pass"));
+    OnInform((wxChar *)buf.c_str());
     if (errorCount)
     {
-        buf.Printf("Errors encountered during this pass: %lu\n", errorCount);
-        OnInform((char *)buf.c_str());
+        buf.Printf(_T("Errors encountered during this pass: %lu\n"), errorCount);
+        OnInform((wxChar *)buf.c_str());
     }
 #endif
     passNumber ++;
@@ -1070,15 +1053,15 @@ bool Go(void)
   startedSections = FALSE;
 
 #ifndef NO_GUI
-  frame->SetStatusText("Aborted by user.");
+  frame->SetStatusText(_T("Aborted by user."));
 #endif // GUI
 
-  OnInform("Sorry, unsuccessful.");
+  OnInform(_T("Sorry, unsuccessful."));
   OkToClose = TRUE;
   return FALSE;
 }
 
-void OnError(const char *msg)
+void OnError(const wxChar *msg)
 {
   errorCount++;
 
@@ -1087,7 +1070,7 @@ void OnError(const char *msg)
   wxSTD cerr.flush();
 #else
   if (isInteractive && frame)
-    (*frame->textWindow) << "Error: " << msg << "\n";
+    (*frame->textWindow) << _T("Error: ") << msg << _T("\n");
   else
 #ifdef __UNIX__
   {
@@ -1103,14 +1086,14 @@ void OnError(const char *msg)
 #endif // NO_GUI
 }
 
-void OnInform(const char *msg)
+void OnInform(const wxChar *msg)
 {
 #ifdef NO_GUI
   wxSTD cout << msg << "\n";
   wxSTD cout.flush();
 #else
   if (isInteractive && frame)
-    (*frame->textWindow) << msg << "\n";
+    (*frame->textWindow) << msg << _T("\n");
 /* This whole block of code is just wrong I think.  It would behave
    completely wrong under anything other than MSW due to the ELSE
        with no statement, and the cout calls would fail under MSW, as
@@ -1163,17 +1146,17 @@ bool OnArgument(int macroId, int arg_no, bool start)
     case TEX_RTF:
     {
       return RTFOnArgument(macroId, arg_no, start);
-      break;
+      // break;
     }
     case TEX_XLP:
     {
       return XLPOnArgument(macroId, arg_no, start);
-      break;
+      // break;
     }
     case TEX_HTML:
     {
       return HTMLOnArgument(macroId, arg_no, start);
-      break;
+      // break;
     }
   }
   return TRUE;
@@ -1190,10 +1173,10 @@ bool OnArgument(int macroId, int arg_no, bool start)
 
 wxConnectionBase *Tex2RTFServer::OnAcceptConnection(const wxString& topic)
 {
-  if (topic == "TEX2RTF")
+  if (topic == _T("TEX2RTF"))
   {
     if (!ipc_buffer)
-      ipc_buffer = new char[1000];
+      ipc_buffer = new wxChar[1000];
 
     return new Tex2RTFConnection(ipc_buffer, 4000);
   }
@@ -1205,7 +1188,7 @@ wxConnectionBase *Tex2RTFServer::OnAcceptConnection(const wxString& topic)
   * Connection
   */
 
-Tex2RTFConnection::Tex2RTFConnection(char *buf, int size):wxDDEConnection(buf, size)
+Tex2RTFConnection::Tex2RTFConnection(wxChar *buf, int size):wxDDEConnection(buf, size)
 {
 }
 
@@ -1213,7 +1196,7 @@ Tex2RTFConnection::~Tex2RTFConnection(void)
 {
 }
 
-bool SplitCommand(char *data, char *firstArg, char *secondArg)
+bool SplitCommand(wxChar *data, wxChar *firstArg, wxChar *secondArg)
 {
   firstArg[0] = 0;
   secondArg[0] = 0;
@@ -1247,50 +1230,50 @@ bool SplitCommand(char *data, char *firstArg, char *secondArg)
   return TRUE;
 }
 
-bool Tex2RTFConnection::OnExecute(const wxString& topic, char *data, int size, int format)
+bool Tex2RTFConnection::OnExecute(const wxString& WXUNUSED(topic), wxChar *data, int WXUNUSED(size), wxIPCFormat WXUNUSED(format))
 {
-  strcpy(Tex2RTFLastStatus, "OK");
+  wxStrcpy(Tex2RTFLastStatus, _T("OK"));
 
-  char firstArg[50];
-  char secondArg[300];
+  wxChar firstArg[50];
+  wxChar secondArg[300];
   if (SplitCommand(data, firstArg, secondArg))
   {
-    bool hasArg = (strlen(secondArg) > 0);
-    if (strcmp(firstArg, "INPUT") == 0 && hasArg)
+    bool hasArg = (wxStrlen(secondArg) > 0);
+    if (wxStrcmp(firstArg, _T("INPUT")) == 0 && hasArg)
     {
       if (InputFile) delete[] InputFile;
       InputFile = copystring(secondArg);
       if (frame)
       {
-        char buf[100];
+        wxChar buf[100];
         wxString str = wxFileNameFromPath(InputFile);
-        sprintf(buf, "Tex2RTF [%s]", (const char*) str);
+        wxSprintf(buf, _T("Tex2RTF [%s]"), (const wxChar*) str);
         frame->SetTitle(buf);
       }
     }
-    else if (strcmp(firstArg, "OUTPUT") == 0 && hasArg)
+    else if (wxStrcmp(firstArg, _T("OUTPUT")) == 0 && hasArg)
     {
       if (OutputFile) delete[] OutputFile;
       OutputFile = copystring(secondArg);
     }
-    else if (strcmp(firstArg, "GO") == 0)
+    else if (wxStrcmp(firstArg, _T("GO")) == 0)
     {
-      strcpy(Tex2RTFLastStatus, "WORKING");
+      wxStrcpy(Tex2RTFLastStatus, _T("WORKING"));
       if (!Go())
-        strcpy(Tex2RTFLastStatus, "CONVERSION ERROR");
+        wxStrcpy(Tex2RTFLastStatus, _T("CONVERSION ERROR"));
       else
-        strcpy(Tex2RTFLastStatus, "OK");
+        wxStrcpy(Tex2RTFLastStatus, _T("OK"));
     }
-    else if (strcmp(firstArg, "EXIT") == 0)
+    else if (wxStrcmp(firstArg, _T("EXIT")) == 0)
     {
       if (frame) frame->Close();
     }
-    else if (strcmp(firstArg, "MINIMIZE") == 0 || strcmp(firstArg, "ICONIZE") == 0)
+    else if (wxStrcmp(firstArg, _T("MINIMIZE")) == 0 || wxStrcmp(firstArg, _T("ICONIZE")) == 0)
     {
       if (frame)
         frame->Iconize(TRUE);
     }
-    else if (strcmp(firstArg, "SHOW") == 0 || strcmp(firstArg, "RESTORE") == 0)
+    else if (wxStrcmp(firstArg, _T("SHOW")) == 0 || wxStrcmp(firstArg, _T("RESTORE")) == 0)
     {
       if (frame)
       {
@@ -1301,20 +1284,20 @@ bool Tex2RTFConnection::OnExecute(const wxString& topic, char *data, int size, i
     else
     {
       // Try for a setting
-      strcpy(Tex2RTFLastStatus, RegisterSetting(firstArg, secondArg, FALSE));
+      wxStrcpy(Tex2RTFLastStatus, RegisterSetting(firstArg, secondArg, FALSE));
 #ifndef NO_GUI
-      if (frame && strcmp(firstArg, "conversionMode") == 0)
+      if (frame && wxStrcmp(firstArg, _T("conversionMode")) == 0)
       {
-        char buf[100];
-        strcpy(buf, "In ");
+        wxChar buf[100];
+        wxStrcpy(buf, _T("In "));
 
         if (winHelp && (convertMode == TEX_RTF))
-          strcat(buf, "WinHelp RTF");
+          wxStrcat(buf, _T("WinHelp RTF"));
         else if (!winHelp && (convertMode == TEX_RTF))
-          strcat(buf, "linear RTF");
-        else if (convertMode == TEX_HTML) strcat(buf, "HTML");
-        else if (convertMode == TEX_XLP) strcat(buf, "XLP");
-          strcat(buf, " mode.");
+          wxStrcat(buf, _T("linear RTF"));
+        else if (convertMode == TEX_HTML) wxStrcat(buf, _T("HTML"));
+        else if (convertMode == TEX_XLP) wxStrcat(buf, _T("XLP"));
+          wxStrcat(buf, _T(" mode."));
         frame->SetStatusText(buf, 1);
       }
 #endif
@@ -1323,7 +1306,7 @@ bool Tex2RTFConnection::OnExecute(const wxString& topic, char *data, int size, i
   return TRUE;
 }
 
-char *Tex2RTFConnection::OnRequest(const wxString& topic, const wxString& item, int *size, int format)
+wxChar *Tex2RTFConnection::OnRequest(const wxString& WXUNUSED(topic), const wxString& WXUNUSED(item), int *WXUNUSED(size), wxIPCFormat WXUNUSED(format))
 {
   return Tex2RTFLastStatus;
 }
index 6ef32e33027909c2f20e45ff24480d58527d604a..84f361cc029b40e90b1485ce98797b9a316dcdcd 100644 (file)
@@ -57,10 +57,10 @@ DECLARE_EVENT_TABLE()
 class Tex2RTFConnection: public wxDDEConnection
 {
  public:
-  Tex2RTFConnection(char *buf, int size);
+  Tex2RTFConnection(wxChar *buf, int size);
   ~Tex2RTFConnection(void);
-  bool OnExecute(const wxString& topic, char *data, int size, int format);
-  char *OnRequest(const wxString& topic, const wxString& item, int *size, int format);
+  bool OnExecute(const wxString& topic, wxChar *data, int size, wxIPCFormat format);
+  wxChar *OnRequest(const wxString& topic, const wxString& item, int *size, wxIPCFormat format);
 };
 
 class Tex2RTFServer: public wxDDEServer
@@ -124,7 +124,7 @@ class ItemizeStruc: public wxObject
 
 extern TexChunk *currentMember;
 extern bool startedSections;
-extern char *contentsString;
+extern wxChar *contentsString;
 extern bool suppressNameDecoration;
 extern wxList itemizeStack;
 
@@ -134,17 +134,17 @@ extern FILE *Sections;
 extern FILE *Subsections;
 extern FILE *Subsubsections;
 
-extern char *InputFile;
-extern char *OutputFile;
-extern char *MacroFile;
-
-extern char *FileRoot;
-extern char *ContentsName;    // Contents page from last time around
-extern char *TmpContentsName; // Current contents page
-extern char *TmpFrameContentsName; // Current frame contents page
-extern char *WinHelpContentsFileName; // WinHelp .cnt file
-extern char *RefName;         // Reference file name
-extern char *bulletFile;
+extern wxChar *InputFile;
+extern wxChar *OutputFile;
+extern wxChar *MacroFile;
+
+extern wxChar *FileRoot;
+extern wxChar *ContentsName;    // Contents page from last time around
+extern wxChar *TmpContentsName; // Current contents page
+extern wxChar *TmpFrameContentsName; // Current frame contents page
+extern wxChar *WinHelpContentsFileName; // WinHelp .cnt file
+extern wxChar *RefName;         // Reference file name
+extern wxChar *bulletFile;
 
 #ifndef NO_GUI
 void ChooseOutputFile(bool force = FALSE);
index e1ae599b5970f8152c21a25785b306cf62fefd4c..3812ba7e40182f41b8d332acafcb7d1da9c0ad9a 100644 (file)
@@ -60,7 +60,7 @@ wxList ColourTable(wxKEY_STRING);
 wxHashTable BibStringTable(wxKEY_STRING);
 wxList CustomMacroList(wxKEY_STRING);
 TexChunk *currentSection = NULL;
-char *fakeCurrentSection = NULL;
+wxChar *fakeCurrentSection = NULL;
 
 static long BibLine = 1;
 
@@ -74,17 +74,17 @@ void OutputCurrentSection(void)
 
 // Nasty but the way things are done now, necessary,
 // in order to output a chunk properly to a string (macros and all).
-void OutputCurrentSectionToString(char *buf)
+void OutputCurrentSectionToString(wxChar *buf)
 {
     if (fakeCurrentSection)
-        strcpy(buf, fakeCurrentSection);
+        wxStrcpy(buf, fakeCurrentSection);
     else
         OutputChunkToString(currentSection, buf);
 }
 
-void OutputChunkToString(TexChunk *chunk, char *buf)
+void OutputChunkToString(TexChunk *chunk, wxChar *buf)
 {
-  FILE *tempfd = fopen("tmp.tmp", "w");
+  FILE *tempfd = wxFopen(_T("tmp.tmp"), _T("w"));
   if (!tempfd)
     return;
     
@@ -102,7 +102,7 @@ void OutputChunkToString(TexChunk *chunk, char *buf)
   fclose(tempfd);
   
   // Read from file into string
-  tempfd = fopen("tmp.tmp", "r");
+  tempfd = wxFopen(_T("tmp.tmp"), _T("r"));
   if (!tempfd)
     return;
 
@@ -121,11 +121,11 @@ void OutputChunkToString(TexChunk *chunk, char *buf)
     }
   }
   fclose(tempfd);
-  wxRemoveFile("tmp.tmp");
+  wxRemoveFile(_T("tmp.tmp"));
 }
 
 // Called by Tex2Any to simulate a section
-void FakeCurrentSection(char *fakeSection, bool addToContents)
+void FakeCurrentSection(wxChar *fakeSection, bool addToContents)
 {
   currentSection = NULL;
   if (fakeCurrentSection) delete[] fakeCurrentSection;
@@ -160,9 +160,9 @@ void ResetTopicCounter(void)
   topicCounter = 0;
 }
 
-static char *forceTopicName = NULL;
+static wxChar *forceTopicName = NULL;
 
-void ForceTopicName(const char *name)
+void ForceTopicName(const wxChar *name)
 {
   if (forceTopicName)
     delete[] forceTopicName;
@@ -172,13 +172,13 @@ void ForceTopicName(const char *name)
     forceTopicName = NULL;
 }
 
-char *FindTopicName(TexChunk *chunk)
+wxChar *FindTopicName(TexChunk *chunk)
 {
   if (forceTopicName)
     return forceTopicName;
     
-  char *topicName = NULL;
-  static char topicBuf[100];
+  wxChar *topicName = NULL;
+  static wxChar topicBuf[100];
 
   if (chunk && (chunk->type == CHUNK_TYPE_MACRO) &&
       (chunk->macroId == ltLABEL))
@@ -203,7 +203,7 @@ char *FindTopicName(TexChunk *chunk)
     return topicName;
   else
   {
-    sprintf(topicBuf, "topic%ld", topicCounter);
+    wxSprintf(topicBuf, _T("topic%ld"), topicCounter);
     topicCounter ++;
     return topicBuf;
   }
@@ -216,9 +216,9 @@ char *FindTopicName(TexChunk *chunk)
  *
  */
  
-void StartSimulateArgument(char *data)
+void StartSimulateArgument(wxChar *data)
 {
-  strcpy(currentArgData, data);
+  wxStrcpy(currentArgData, data);
   haveArgData = TRUE;
 }
 
@@ -232,33 +232,33 @@ void EndSimulateArgument(void)
  *
  */
 
-int ParseUnitArgument(char *unitArg)
+int ParseUnitArgument(wxChar *unitArg)
 {
   float conversionFactor = 1.0;
   float unitValue = 0.0;
-  int len = strlen(unitArg);
+  int len = wxStrlen(unitArg);
   // Get rid of any accidentally embedded commands
   for (int i = 0; i < len; i++)
     if (unitArg[i] == '\\')
       unitArg[i] = 0;
-  len = strlen(unitArg);
+  len = wxStrlen(unitArg);
       
   if (unitArg && (len > 0) && (isdigit(unitArg[0]) || unitArg[0] == '-'))
   {
-    sscanf(unitArg, "%f", &unitValue);
+    wxSscanf(unitArg, _T("%f"), &unitValue);
     if (len > 1)
     {
-      char units[3]; 
+      wxChar units[3]; 
       units[0] = unitArg[len-2];
       units[1] = unitArg[len-1];
       units[2] = 0;
-      if (strcmp(units, "in") == 0)
+      if (wxStrcmp(units, _T("in")) == 0)
         conversionFactor = 72.0;
-      else if (strcmp(units, "cm") == 0)
+      else if (wxStrcmp(units, _T("cm")) == 0)
         conversionFactor = (float)72.0/(float)2.51;
-      else if (strcmp(units, "mm") == 0)
+      else if (wxStrcmp(units, _T("mm")) == 0)
         conversionFactor = (float)72.0/(float)25.1;
-      else if (strcmp(units, "pt") == 0)
+      else if (wxStrcmp(units, _T("pt")) == 0)
         conversionFactor = 1;
     }
     return (int)(unitValue*conversionFactor);
@@ -272,9 +272,9 @@ int ParseUnitArgument(char *unitArg)
  *
  */
  
-void StripExtension(char *buffer)
+void StripExtension(wxChar *buffer)
 {
-  int len = strlen(buffer);
+  int len = wxStrlen(buffer);
   int i = len-1;
   while (i > 0)
   {
@@ -344,59 +344,59 @@ void SetFontSizes(int pointSize)
  *
  */
  
-void AddTexRef(char *name, char *file, char *sectionName,
+void AddTexRef(wxChar *name, wxChar *file, wxChar *sectionName,
                int chapter, int section, int subsection, int subsubsection)
 {
   TexRef *texRef = (TexRef *)TexReferences.Get(name);
   if (texRef) TexReferences.Delete(name);
   
-  char buf[100];
+  wxChar buf[100];
   buf[0] = 0;
 /*
   if (sectionName)
   {
-    strcat(buf, sectionName);
-    strcat(buf, " ");
+    wxStrcat(buf, sectionName);
+    wxStrcat(buf, " ");
   }
 */
   if (chapter)
   {
-    char buf2[10];
-    sprintf(buf2, "%d", chapter);
-    strcat(buf, buf2);
+    wxChar buf2[10];
+    wxSprintf(buf2, _T("%d"), chapter);
+    wxStrcat(buf, buf2);
   }
   if (section)
   {
-    char buf2[10];
+    wxChar buf2[10];
     if (chapter)
-      strcat(buf, ".");
+      wxStrcat(buf, _T("."));
 
-    sprintf(buf2, "%d", section);
-    strcat(buf, buf2);
+    wxSprintf(buf2, _T("%d"), section);
+    wxStrcat(buf, buf2);
   }
   if (subsection)
   {
-    char buf2[10];
-    strcat(buf, ".");
-    sprintf(buf2, "%d", subsection);
-    strcat(buf, buf2);
+    wxChar buf2[10];
+    wxStrcat(buf, _T("."));
+    wxSprintf(buf2, _T("%d"), subsection);
+    wxStrcat(buf, buf2);
   }
   if (subsubsection)
   {
-    char buf2[10];
-    strcat(buf, ".");
-    sprintf(buf2, "%d", subsubsection);
-    strcat(buf, buf2);
+    wxChar buf2[10];
+    wxStrcat(buf, _T("."));
+    wxSprintf(buf2, _T("%d"), subsubsection);
+    wxStrcat(buf, buf2);
   }
-  char *tmp = ((strlen(buf) > 0) ? buf : (char *)NULL);
+  wxChar *tmp = ((wxStrlen(buf) > 0) ? buf : (wxChar *)NULL);
   TexReferences.Put(name, new TexRef(name, file, tmp, sectionName));
 }
 
-void WriteTexReferences(char *filename)
+void WriteTexReferences(wxChar *filename)
 {
   wxSTD ofstream ostr(filename);
   if (ostr.bad()) return;
-  char buf[200];
+  wxChar buf[200];
   
   TexReferences.BeginFind();
   wxNode *node = TexReferences.Next();
@@ -404,19 +404,19 @@ void WriteTexReferences(char *filename)
   {
     Tex2RTFYield();
     TexRef *ref = (TexRef *)node->GetData();
-    ostr << ref->refLabel << " " << (ref->refFile ? ref->refFile : "??") << " ";
-    ostr << (ref->sectionName ? ref->sectionName : "??") << " ";
-    ostr << (ref->sectionNumber ? ref->sectionNumber : "??") << "\n";
-    if (!ref->sectionNumber || (strcmp(ref->sectionNumber, "??") == 0 && strcmp(ref->sectionName, "??") == 0))
+    ostr << ref->refLabel << _T(" ") << (ref->refFile ? ref->refFile : _T("??")) << _T(" ");
+    ostr << (ref->sectionName ? ref->sectionName : _T("??")) << _T(" ");
+    ostr << (ref->sectionNumber ? ref->sectionNumber : _T("??")) << _T("\n");
+    if (!ref->sectionNumber || (wxStrcmp(ref->sectionNumber, _T("??")) == 0 && wxStrcmp(ref->sectionName, _T("??")) == 0))
     {
-      sprintf(buf, "Warning: reference %s not resolved.", ref->refLabel);
+      wxSprintf(buf, _T("Warning: reference %s not resolved."), ref->refLabel);
       OnInform(buf);
     }
     node = TexReferences.Next();
   }
 }
 
-void ReadTexReferences(char *filename)
+void ReadTexReferences(wxChar *filename)
 {
   if (!wxFileExists(filename))
       return;
@@ -425,10 +425,10 @@ void ReadTexReferences(char *filename)
 
   if (istr.bad()) return;
 
-  char label[100];
-  char file[400];
-  char section[100];
-  char sectionName[100];
+  wxChar label[100];
+  wxChar file[400];
+  wxChar section[100];
+  wxChar sectionName[100];
 
   while (!istr.eof())
   {
@@ -494,7 +494,7 @@ void BibEatWhiteSpace(wxSTD istream& str)
 }
 
 // Read word up to { or , or space
-void BibReadWord(wxSTD istream& istr, char *buffer)
+void BibReadWord(wxSTD istream& istr, wxChar *buffer)
 {
   int i = 0;
   buffer[i] = 0;
@@ -511,13 +511,13 @@ void BibReadWord(wxSTD istream& istr, char *buffer)
 }
 
 // Read string (double-quoted or not) to end quote or EOL
-void BibReadToEOL(wxSTD istream& istr, char *buffer)
+void BibReadToEOL(wxSTD istream& istr, wxChar *buffer)
 {
   int i = 0;
   buffer[i] = 0;
-  char ch = istr.peek();
+  wxChar ch = istr.peek();
   bool inQuotes = FALSE;
-  if (ch == '"')
+  if (ch == _T('"'))
   {
     istr.get(ch);
     ch = istr.peek();
@@ -525,9 +525,9 @@ void BibReadToEOL(wxSTD istream& istr, char *buffer)
   }
   // If in quotes, read white space too. If not,
   // stop at white space or comment.
-  while (!istr.eof() && ch != 13 && ch != 10 && ch != '"' &&
-         (inQuotes || ((ch != ' ') && (ch != 9) &&
-                        (ch != ';') && (ch != '%') && (ch != '#'))))
+  while (!istr.eof() && ch != 13 && ch != 10 && ch != _T('"') &&
+         (inQuotes || ((ch != _T(' ')) && (ch != 9) &&
+                        (ch != _T(';')) && (ch != _T('%')) && (ch != _T('#')))))
   {
     istr.get(ch);
     buffer[i] = ch;
@@ -540,7 +540,7 @@ void BibReadToEOL(wxSTD istream& istr, char *buffer)
 }
 
 // Read }-terminated value, taking nested braces into account.
-void BibReadValue(wxSTD istream& istr, char *buffer, bool ignoreBraces = TRUE,
+void BibReadValue(wxSTD istream& istr, wxChar *buffer, bool ignoreBraces = TRUE,
                   bool quotesMayTerminate = TRUE)
 {
   int braceCount = 1;
@@ -553,8 +553,8 @@ void BibReadValue(wxSTD istream& istr, char *buffer, bool ignoreBraces = TRUE,
 //    i ++;
     if (i >= 4000)
     {
-      char buf[100];
-      sprintf(buf, "Sorry, value > 4000 chars in bib file at line %ld.", BibLine);
+      wxChar buf[100];
+      wxSprintf(buf, _T("Sorry, value > 4000 chars in bib file at line %ld."), BibLine);
       wxLogError(buf, "Tex2RTF Fatal Error");
       return;
     }
@@ -589,26 +589,27 @@ void BibReadValue(wxSTD istream& istr, char *buffer, bool ignoreBraces = TRUE,
       BibLine ++;
   }
   buffer[i] = 0;
+  wxUnusedVar(stopping);
 }
  
-bool ReadBib(char *filename)
+bool ReadBib(wxChar *filename)
 {
   if (!wxFileExists(filename))
       return FALSE;
 
-  char buf[300];
+  wxChar buf[300];
   wxSTD ifstream istr(filename, wxSTD ios::in);
   if (istr.bad()) return FALSE;
 
   BibLine = 1;
 
-  OnInform("Reading .bib file...");
+  OnInform(_T("Reading .bib file..."));
 
   char ch;
-  char fieldValue[4000];
-  char recordType[100];
-  char recordKey[100];
-  char recordField[100];
+  wxChar fieldValue[4000];
+  wxChar recordType[100];
+  wxChar recordKey[100];
+  wxChar recordField[100];
   while (!istr.eof())
   {
     Tex2RTFYield();
@@ -617,7 +618,7 @@ bool ReadBib(char *filename)
     istr.get(ch);
     if (ch != '@')
     {
-      sprintf(buf, "Expected @: malformed bib file at line %ld (%s)", BibLine, filename);
+      wxSprintf(buf, _T("Expected @: malformed bib file at line %ld (%s)"), BibLine, filename);
       OnError(buf);
       return FALSE;
     }
@@ -626,19 +627,19 @@ bool ReadBib(char *filename)
     istr.get(ch);
     if (ch != '{' && ch != '(')
     {
-      sprintf(buf, "Expected { or ( after record type: malformed .bib file at line %ld (%s)", BibLine, filename);
+      wxSprintf(buf, _T("Expected { or ( after record type: malformed .bib file at line %ld (%s)"), BibLine, filename);
       OnError(buf);
       return FALSE;
     }
     BibEatWhiteSpace(istr);
-    if (StringMatch(recordType, "string", FALSE, TRUE))
+    if (StringMatch(recordType, _T("string"), FALSE, TRUE))
     {
       BibReadWord(istr, recordType);
       BibEatWhiteSpace(istr);
       istr.get(ch);
       if (ch != '=')
       {
-        sprintf(buf, "Expected = after string key: malformed .bib file at line %ld (%s)", BibLine, filename);
+        wxSprintf(buf, _T("Expected = after string key: malformed .bib file at line %ld (%s)"), BibLine, filename);
         OnError(buf);
         return FALSE;
       }
@@ -646,7 +647,7 @@ bool ReadBib(char *filename)
       istr.get(ch);
       if (ch != '"' && ch != '{')
       {
-        sprintf(buf, "Expected = after string key: malformed .bib file at line %ld (%s)", BibLine, filename);
+        wxSprintf(buf, _T("Expected = after string key: malformed .bib file at line %ld (%s)"), BibLine, filename);
         OnError(buf);
         return FALSE;
       }
@@ -686,7 +687,7 @@ bool ReadBib(char *filename)
           istr.get(ch);
           if (ch != '=')
           {
-            sprintf(buf, "Expected = after field type: malformed .bib file at line %ld (%s)", BibLine, filename);
+            wxSprintf(buf, _T("Expected = after field type: malformed .bib file at line %ld (%s)"), BibLine, filename);
             OnError(buf);
             return FALSE;
           }
@@ -698,71 +699,71 @@ bool ReadBib(char *filename)
             BibReadWord(istr, fieldValue+1);
 
             // If in the table of strings, replace with string from table.
-            char *s = (char *)BibStringTable.Get(fieldValue);
+            wxChar *s = (wxChar *)BibStringTable.Get(fieldValue);
             if (s)
             {
-              strcpy(fieldValue, s);
+              wxStrcpy(fieldValue, s);
             }
           }
           else
-            BibReadValue(istr, fieldValue, TRUE, (ch == '"' ? TRUE : FALSE));
+            BibReadValue(istr, fieldValue, TRUE, (ch == _T('"') ? TRUE : FALSE));
 
           // Now we can add a field
-          if (StringMatch(recordField, "author", FALSE, TRUE))
+          if (StringMatch(recordField, _T("author"), FALSE, TRUE))
             bibEntry->author = copystring(fieldValue);
-          else if (StringMatch(recordField, "key", FALSE, TRUE))
+          else if (StringMatch(recordField, _T("key"), FALSE, TRUE))
             {}
-          else if (StringMatch(recordField, "annotate", FALSE, TRUE))
+          else if (StringMatch(recordField, _T("annotate"), FALSE, TRUE))
             {}
-          else if (StringMatch(recordField, "abstract", FALSE, TRUE))
+          else if (StringMatch(recordField, _T("abstract"), FALSE, TRUE))
             {}
-          else if (StringMatch(recordField, "edition", FALSE, TRUE))
+          else if (StringMatch(recordField, _T("edition"), FALSE, TRUE))
             {}
-          else if (StringMatch(recordField, "howpublished", FALSE, TRUE))
+          else if (StringMatch(recordField, _T("howpublished"), FALSE, TRUE))
             {}
-          else if (StringMatch(recordField, "note", FALSE, TRUE) || StringMatch(recordField, "notes", FALSE, TRUE))
+          else if (StringMatch(recordField, _T("note"), FALSE, TRUE) || StringMatch(recordField, _T("notes"), FALSE, TRUE))
             {}
-          else if (StringMatch(recordField, "series", FALSE, TRUE))
+          else if (StringMatch(recordField, _T("series"), FALSE, TRUE))
             {}
-          else if (StringMatch(recordField, "type", FALSE, TRUE))
+          else if (StringMatch(recordField, _T("type"), FALSE, TRUE))
             {}
-          else if (StringMatch(recordField, "keywords", FALSE, TRUE))
+          else if (StringMatch(recordField, _T("keywords"), FALSE, TRUE))
             {}
-          else if (StringMatch(recordField, "editor", FALSE, TRUE) || StringMatch(recordField, "editors", FALSE, TRUE))
+          else if (StringMatch(recordField, _T("editor"), FALSE, TRUE) || StringMatch(recordField, _T("editors"), FALSE, TRUE))
             bibEntry->editor= copystring(fieldValue);
-          else if (StringMatch(recordField, "title", FALSE, TRUE))
+          else if (StringMatch(recordField, _T("title"), FALSE, TRUE))
             bibEntry->title= copystring(fieldValue);
-          else if (StringMatch(recordField, "booktitle", FALSE, TRUE))
+          else if (StringMatch(recordField, _T("booktitle"), FALSE, TRUE))
             bibEntry->booktitle= copystring(fieldValue);
-          else if (StringMatch(recordField, "journal", FALSE, TRUE))
+          else if (StringMatch(recordField, _T("journal"), FALSE, TRUE))
             bibEntry->journal= copystring(fieldValue);
-          else if (StringMatch(recordField, "volume", FALSE, TRUE))
+          else if (StringMatch(recordField, _T("volume"), FALSE, TRUE))
             bibEntry->volume= copystring(fieldValue);
-          else if (StringMatch(recordField, "number", FALSE, TRUE))
+          else if (StringMatch(recordField, _T("number"), FALSE, TRUE))
             bibEntry->number= copystring(fieldValue);
-          else if (StringMatch(recordField, "year", FALSE, TRUE))
+          else if (StringMatch(recordField, _T("year"), FALSE, TRUE))
             bibEntry->year= copystring(fieldValue);
-          else if (StringMatch(recordField, "month", FALSE, TRUE))
+          else if (StringMatch(recordField, _T("month"), FALSE, TRUE))
             bibEntry->month= copystring(fieldValue);
-          else if (StringMatch(recordField, "pages", FALSE, TRUE))
+          else if (StringMatch(recordField, _T("pages"), FALSE, TRUE))
             bibEntry->pages= copystring(fieldValue);
-          else if (StringMatch(recordField, "publisher", FALSE, TRUE))
+          else if (StringMatch(recordField, _T("publisher"), FALSE, TRUE))
             bibEntry->publisher= copystring(fieldValue);
-          else if (StringMatch(recordField, "address", FALSE, TRUE))
+          else if (StringMatch(recordField, _T("address"), FALSE, TRUE))
             bibEntry->address= copystring(fieldValue);
-          else if (StringMatch(recordField, "institution", FALSE, TRUE) || StringMatch(recordField, "school", FALSE, TRUE))
+          else if (StringMatch(recordField, _T("institution"), FALSE, TRUE) || StringMatch(recordField, _T("school"), FALSE, TRUE))
             bibEntry->institution= copystring(fieldValue);
-          else if (StringMatch(recordField, "organization", FALSE, TRUE) || StringMatch(recordField, "organisation", FALSE, TRUE))
+          else if (StringMatch(recordField, _T("organization"), FALSE, TRUE) || StringMatch(recordField, _T("organisation"), FALSE, TRUE))
             bibEntry->organization= copystring(fieldValue);
-          else if (StringMatch(recordField, "comment", FALSE, TRUE) || StringMatch(recordField, "comments", FALSE, TRUE))
+          else if (StringMatch(recordField, _T("comment"), FALSE, TRUE) || StringMatch(recordField, _T("comments"), FALSE, TRUE))
             bibEntry->comment= copystring(fieldValue);
-          else if (StringMatch(recordField, "annote", FALSE, TRUE))
+          else if (StringMatch(recordField, _T("annote"), FALSE, TRUE))
             bibEntry->comment= copystring(fieldValue);
-          else if (StringMatch(recordField, "chapter", FALSE, TRUE))
+          else if (StringMatch(recordField, _T("chapter"), FALSE, TRUE))
             bibEntry->chapter= copystring(fieldValue);
           else
           {
-            sprintf(buf, "Unrecognised bib field type %s at line %ld (%s)", recordField, BibLine, filename);
+            wxSprintf(buf, _T("Unrecognised bib field type %s at line %ld (%s)"), recordField, BibLine, filename);
             OnError(buf);
           }
         }
@@ -784,17 +785,17 @@ void OutputBibItem(TexRef *ref, BibEntry *bib)
   OnArgument(ltNUMBEREDBIBITEM, 1, FALSE);
   OnArgument(ltNUMBEREDBIBITEM, 2, TRUE);
 
-  TexOutput(" ");
+  TexOutput(_T(" "));
   OnMacro(ltBF, 1, TRUE);
   OnArgument(ltBF, 1, TRUE);
   if (bib->author)
     TexOutput(bib->author);
   OnArgument(ltBF, 1, FALSE);
   OnMacro(ltBF, 1, FALSE);
-  if (bib->author && (strlen(bib->author) > 0) && (bib->author[strlen(bib->author) - 1] != '.'))
-    TexOutput(". ");
+  if (bib->author && (wxStrlen(bib->author) > 0) && (bib->author[wxStrlen(bib->author) - 1] != '.'))
+    TexOutput(_T(". "));
   else
-    TexOutput(" ");
+    TexOutput(_T(" "));
 
   if (bib->year)
   {
@@ -802,19 +803,19 @@ void OutputBibItem(TexRef *ref, BibEntry *bib)
   }
   if (bib->month)
   {
-    TexOutput(" (");
+    TexOutput(_T(" ("));
     TexOutput(bib->month);
-    TexOutput(")");
+    TexOutput(_T(")"));
   }
   if (bib->year || bib->month)
-    TexOutput(". ");
+    TexOutput(_T(". "));
 
-  if (StringMatch(bib->type, "article", FALSE, TRUE))
+  if (StringMatch(bib->type, _T("article"), FALSE, TRUE))
   {
     if (bib->title)
     {
       TexOutput(bib->title);
-      TexOutput(". ");
+      TexOutput(_T(". "));
     }
     if (bib->journal)
     {
@@ -826,7 +827,7 @@ void OutputBibItem(TexRef *ref, BibEntry *bib)
     }
     if (bib->volume)
     {
-      TexOutput(", ");
+      TexOutput(_T(", "));
       OnMacro(ltBF, 1, TRUE);
       OnArgument(ltBF, 1, TRUE);
       TexOutput(bib->volume);
@@ -835,70 +836,70 @@ void OutputBibItem(TexRef *ref, BibEntry *bib)
     }
     if (bib->number)
     {
-      TexOutput("(");
+      TexOutput(_T("("));
       TexOutput(bib->number);
-      TexOutput(")");
+      TexOutput(_T(")"));
     }
     if (bib->pages)
     {
-      TexOutput(", pages ");
+      TexOutput(_T(", pages "));
       TexOutput(bib->pages);
     }
-    TexOutput(".");
+    TexOutput(_T("."));
   }
-  else if (StringMatch(bib->type, "book", FALSE, TRUE) ||
-           StringMatch(bib->type, "unpublished", FALSE, TRUE) ||
-           StringMatch(bib->type, "manual", FALSE, TRUE) ||
-           StringMatch(bib->type, "phdthesis", FALSE, TRUE) ||
-           StringMatch(bib->type, "mastersthesis", FALSE, TRUE) ||
-           StringMatch(bib->type, "misc", FALSE, TRUE) ||
-           StringMatch(bib->type, "techreport", FALSE, TRUE) ||
-           StringMatch(bib->type, "booklet", FALSE, TRUE))
+  else if (StringMatch(bib->type, _T("book"), FALSE, TRUE) ||
+           StringMatch(bib->type, _T("unpublished"), FALSE, TRUE) ||
+           StringMatch(bib->type, _T("manual"), FALSE, TRUE) ||
+           StringMatch(bib->type, _T("phdthesis"), FALSE, TRUE) ||
+           StringMatch(bib->type, _T("mastersthesis"), FALSE, TRUE) ||
+           StringMatch(bib->type, _T("misc"), FALSE, TRUE) ||
+           StringMatch(bib->type, _T("techreport"), FALSE, TRUE) ||
+           StringMatch(bib->type, _T("booklet"), FALSE, TRUE))
   {
     if (bib->title || bib->booktitle)
     {
       OnMacro(ltIT, 1, TRUE);
       OnArgument(ltIT, 1, TRUE);
       TexOutput(bib->title ? bib->title : bib->booktitle);
-      TexOutput(". ");
+      TexOutput(_T(". "));
       OnArgument(ltIT, 1, FALSE);
       OnMacro(ltIT, 1, FALSE);
     }
-    if (StringMatch(bib->type, "phdthesis", FALSE, TRUE))
-      TexOutput("PhD thesis. ");
-    if (StringMatch(bib->type, "techreport", FALSE, TRUE))
-      TexOutput("Technical report. ");
+    if (StringMatch(bib->type, _T("phdthesis"), FALSE, TRUE))
+      TexOutput(_T("PhD thesis. "));
+    if (StringMatch(bib->type, _T("techreport"), FALSE, TRUE))
+      TexOutput(_T("Technical report. "));
     if (bib->editor)
     {
-      TexOutput("Ed. ");
+      TexOutput(_T("Ed. "));
       TexOutput(bib->editor);
-      TexOutput(". ");
+      TexOutput(_T(". "));
     }
     if (bib->institution)
     {
       TexOutput(bib->institution);
-      TexOutput(". ");
+      TexOutput(_T(". "));
     }
     if (bib->organization)
     {
       TexOutput(bib->organization);
-      TexOutput(". ");
+      TexOutput(_T(". "));
     }
     if (bib->publisher)
     {
       TexOutput(bib->publisher);
-      TexOutput(". ");
+      TexOutput(_T(". "));
     }
     if (bib->address)
     {
       TexOutput(bib->address);
-      TexOutput(". ");
+      TexOutput(_T(". "));
     }
   }
-  else if (StringMatch(bib->type, "inbook", FALSE, TRUE) ||
-           StringMatch(bib->type, "inproceedings", FALSE, TRUE) ||
-           StringMatch(bib->type, "incollection", FALSE, TRUE) ||
-           StringMatch(bib->type, "conference", FALSE, TRUE))
+  else if (StringMatch(bib->type, _T("inbook"), FALSE, TRUE) ||
+           StringMatch(bib->type, _T("inproceedings"), FALSE, TRUE) ||
+           StringMatch(bib->type, _T("incollection"), FALSE, TRUE) ||
+           StringMatch(bib->type, _T("conference"), FALSE, TRUE))
   {
     if (bib->title)
     {
@@ -906,36 +907,36 @@ void OutputBibItem(TexRef *ref, BibEntry *bib)
     }
     if (bib->booktitle)
     {
-      TexOutput(", from ");
+      TexOutput(_T(", from "));
       OnMacro(ltIT, 1, TRUE);
       OnArgument(ltIT, 1, TRUE);
       TexOutput(bib->booktitle);
-      TexOutput(".");
+      TexOutput(_T("."));
       OnArgument(ltIT, 1, FALSE);
       OnMacro(ltIT, 1, FALSE);
     }
     if (bib->editor)
     {
-      TexOutput(", ed. ");
+      TexOutput(_T(", ed. "));
       TexOutput(bib->editor);
     }
     if (bib->publisher)
     {
-      TexOutput(" ");
+      TexOutput(_T(" "));
       TexOutput(bib->publisher);
     }
     if (bib->address)
     {
-      if (bib->publisher) TexOutput(", ");
-      else TexOutput(" ");
+      if (bib->publisher) TexOutput(_T(", "));
+      else TexOutput(_T(" "));
       TexOutput(bib->address);
     }
     if (bib->publisher || bib->address)
-      TexOutput(".");
+      TexOutput(_T("."));
 
     if (bib->volume)
     {
-      TexOutput(" ");
+      TexOutput(_T(" "));
       OnMacro(ltBF, 1, TRUE);
       OnArgument(ltBF, 1, TRUE);
       TexOutput(bib->volume);
@@ -946,27 +947,28 @@ void OutputBibItem(TexRef *ref, BibEntry *bib)
     {
       if (bib->volume)
       {
-        TexOutput("(");
+        TexOutput(_T("("));
         TexOutput(bib->number);
-        TexOutput(").");
+        TexOutput(_T(")."));
       }
       else
       {
-        TexOutput(" Number ");
+        TexOutput(_T(" Number "));
         TexOutput(bib->number);
-        TexOutput(".");
+        TexOutput(_T("."));
       }
     }
     if (bib->chapter)
     {
-      TexOutput(" Chap. "); TexOutput(bib->chapter);
+      TexOutput(_T(" Chap. "));
+      TexOutput(bib->chapter);
     }
     if (bib->pages)
     {
-      if (bib->chapter) TexOutput(", pages ");
-      else TexOutput(" Pages ");
+      if (bib->chapter) TexOutput(_T(", pages "));
+      else TexOutput(_T(" Pages "));
       TexOutput(bib->pages);
-      TexOutput(".");
+      TexOutput(_T("."));
     }
   }
   OnArgument(ltNUMBEREDBIBITEM, 2, FALSE);
@@ -976,7 +978,7 @@ void OutputBibItem(TexRef *ref, BibEntry *bib)
 void OutputBib(void)
 {
   // Write the heading
-  ForceTopicName("bibliography");
+  ForceTopicName(_T("bibliography"));
   FakeCurrentSection(ReferencesNameString);
   ForceTopicName(NULL);
 
@@ -992,7 +994,7 @@ void OutputBib(void)
   wxStringListNode *node = CitationList.GetFirst();
   while (node)
   {
-    char *citeKey = (char *)node->GetData();
+    wxChar *citeKey = (wxChar *)node->GetData();
 //    wxNode *texNode = TexReferences.Find(citeKey);
     TexRef *ref = (TexRef *)TexReferences.Get(citeKey);
     wxNode *bibNode = BibList.Find(citeKey);
@@ -1010,15 +1012,15 @@ static int citeCount = 1;
 void ResolveBibReferences(void)
 {
   if (CitationList.GetCount() > 0)
-    OnInform("Resolving bibliographic references...");
+    OnInform(_T("Resolving bibliographic references..."));
 
   citeCount = 1;
-  char buf[200];
+  wxChar buf[200];
   wxStringListNode *node = CitationList.GetFirst();
   while (node)
   {
     Tex2RTFYield();
-    char *citeKey = (char *)node->GetData();
+    wxChar *citeKey = (wxChar *)node->GetData();
 //    wxNode *texNode = TexReferences.Find(citeKey);
     TexRef *ref = (TexRef *)TexReferences.Get(citeKey);
     wxNode *bibNode = BibList.Find(citeKey);
@@ -1027,13 +1029,13 @@ void ResolveBibReferences(void)
       // Unused Variable
       //BibEntry *entry = (BibEntry *)bibNode->GetData();
       if (ref->sectionNumber) delete[] ref->sectionNumber;
-      sprintf(buf, "[%d]", citeCount);
+      wxSprintf(buf, _T("[%d]"), citeCount);
       ref->sectionNumber = copystring(buf);
       citeCount ++;
     }
     else
     {
-      sprintf(buf, "Warning: bib ref %s not resolved.", citeKey);
+      wxSprintf(buf, _T("Warning: bib ref %s not resolved."), citeKey);
       OnInform(buf);
     }
     node = node->GetNext();
@@ -1041,18 +1043,18 @@ void ResolveBibReferences(void)
 }
 
 // Remember we need to resolve this citation
-void AddCitation(char *citeKey)
+void AddCitation(wxChar *citeKey)
 {
   if (!CitationList.Member(citeKey))
     CitationList.Add(citeKey);
 
   if (!TexReferences.Get(citeKey))
   {
-    TexReferences.Put(citeKey, new TexRef(citeKey, "??", NULL));
+    TexReferences.Put(citeKey, new TexRef(citeKey, _T("??"), NULL));
   }
 }
 
-TexRef *FindReference(char *key)
+TexRef *FindReference(wxChar *key)
 {
   return (TexRef *)TexReferences.Get(key);
 }
@@ -1062,175 +1064,175 @@ TexRef *FindReference(char *key)
  *
  */
 
-bool StringTobool(char *val)
+bool StringTobool(wxChar *val)
 {
-  if (strncmp(val, "yes", 3) == 0 || strncmp(val, "YES", 3) == 0 ||
-      strncmp(val, "on", 2) == 0 || strncmp(val, "ON", 2) == 0 ||
-      strncmp(val, "true", 4) == 0 || strncmp(val, "TRUE", 4) == 0 ||
-      strncmp(val, "ok", 2) == 0 || strncmp(val, "OK", 2) == 0 ||
-      strncmp(val, "1", 1) == 0)
+  if (wxStrncmp(val, _T("yes"), 3) == 0 || wxStrncmp(val, _T("YES"), 3) == 0 ||
+      wxStrncmp(val, _T("on"), 2) == 0 || wxStrncmp(val, _T("ON"), 2) == 0 ||
+      wxStrncmp(val, _T("true"), 4) == 0 || wxStrncmp(val, _T("TRUE"), 4) == 0 ||
+      wxStrncmp(val, _T("ok"), 2) == 0 || wxStrncmp(val, _T("OK"), 2) == 0 ||
+      wxStrncmp(val, _T("1"), 1) == 0)
     return TRUE;
   else
     return FALSE;
 }
 
 // Define a variable value from the .ini file
-char *RegisterSetting(char *settingName, char *settingValue, bool interactive)
+wxChar *RegisterSetting(wxChar *settingName, wxChar *settingValue, bool interactive)
 {
-  static char errorCode[100];
-  strcpy(errorCode, "OK");
-  if (StringMatch(settingName, "chapterName", FALSE, TRUE))
+  static wxChar errorCode[100];
+  wxStrcpy(errorCode, _T("OK"));
+  if (StringMatch(settingName, _T("chapterName"), FALSE, TRUE))
   {
     delete[] ChapterNameString;
     ChapterNameString = copystring(settingValue);
   }
-  else if (StringMatch(settingName, "sectionName", FALSE, TRUE))
+  else if (StringMatch(settingName, _T("sectionName"), FALSE, TRUE))
   {
     delete[] SectionNameString;
     SectionNameString = copystring(settingValue);
   }
-  else if (StringMatch(settingName, "subsectionName", FALSE, TRUE))
+  else if (StringMatch(settingName, _T("subsectionName"), FALSE, TRUE))
   {
     delete[] SubsectionNameString;
     SubsectionNameString = copystring(settingValue);
   }
-  else if (StringMatch(settingName, "subsubsectionName", FALSE, TRUE))
+  else if (StringMatch(settingName, _T("subsubsectionName"), FALSE, TRUE))
   {
     delete[] SubsubsectionNameString;
     SubsubsectionNameString = copystring(settingValue);
   }
-  else if (StringMatch(settingName, "indexName", FALSE, TRUE))
+  else if (StringMatch(settingName, _T("indexName"), FALSE, TRUE))
   {
     delete[] IndexNameString;
     IndexNameString = copystring(settingValue);
   }
-  else if (StringMatch(settingName, "contentsName", FALSE, TRUE))
+  else if (StringMatch(settingName, _T("contentsName"), FALSE, TRUE))
   {
     delete[] ContentsNameString;
     ContentsNameString = copystring(settingValue);
   }
-  else if (StringMatch(settingName, "glossaryName", FALSE, TRUE))
+  else if (StringMatch(settingName, _T("glossaryName"), FALSE, TRUE))
   {
     delete[] GlossaryNameString;
     GlossaryNameString = copystring(settingValue);
   }
-  else if (StringMatch(settingName, "referencesName", FALSE, TRUE))
+  else if (StringMatch(settingName, _T("referencesName"), FALSE, TRUE))
   {
     delete[] ReferencesNameString;
     ReferencesNameString = copystring(settingValue);
   }
-  else if (StringMatch(settingName, "tablesName", FALSE, TRUE))
+  else if (StringMatch(settingName, _T("tablesName"), FALSE, TRUE))
   {
     delete[] TablesNameString;
     TablesNameString = copystring(settingValue);
   }
-  else if (StringMatch(settingName, "figuresName", FALSE, TRUE))
+  else if (StringMatch(settingName, _T("figuresName"), FALSE, TRUE))
   {
     delete[] FiguresNameString;
     FiguresNameString = copystring(settingValue);
   }
-  else if (StringMatch(settingName, "tableName", FALSE, TRUE))
+  else if (StringMatch(settingName, _T("tableName"), FALSE, TRUE))
   {
     delete[] TableNameString;
     TableNameString = copystring(settingValue);
   }
-  else if (StringMatch(settingName, "figureName", FALSE, TRUE))
+  else if (StringMatch(settingName, _T("figureName"), FALSE, TRUE))
   {
     delete[] FigureNameString;
     FigureNameString = copystring(settingValue);
   }
-  else if (StringMatch(settingName, "abstractName", FALSE, TRUE))
+  else if (StringMatch(settingName, _T("abstractName"), FALSE, TRUE))
   {
     delete[] AbstractNameString;
     AbstractNameString = copystring(settingValue);
   }
-  else if (StringMatch(settingName, "chapterFontSize", FALSE, TRUE))
+  else if (StringMatch(settingName, _T("chapterFontSize"), FALSE, TRUE))
     StringToInt(settingValue, &chapterFont);
-  else if (StringMatch(settingName, "sectionFontSize", FALSE, TRUE))
+  else if (StringMatch(settingName, _T("sectionFontSize"), FALSE, TRUE))
     StringToInt(settingValue, &sectionFont);
-  else if (StringMatch(settingName, "subsectionFontSize", FALSE, TRUE))
+  else if (StringMatch(settingName, _T("subsectionFontSize"), FALSE, TRUE))
     StringToInt(settingValue, &subsectionFont);
-  else if (StringMatch(settingName, "titleFontSize", FALSE, TRUE))
+  else if (StringMatch(settingName, _T("titleFontSize"), FALSE, TRUE))
     StringToInt(settingValue, &titleFont);
-  else if (StringMatch(settingName, "authorFontSize", FALSE, TRUE))
+  else if (StringMatch(settingName, _T("authorFontSize"), FALSE, TRUE))
     StringToInt(settingValue, &authorFont);
-  else if (StringMatch(settingName, "ignoreInput", FALSE, TRUE))
+  else if (StringMatch(settingName, _T("ignoreInput"), FALSE, TRUE))
     IgnorableInputFiles.Add(wxFileNameFromPath(settingValue));
-  else if (StringMatch(settingName, "mirrorMargins", FALSE, TRUE))
+  else if (StringMatch(settingName, _T("mirrorMargins"), FALSE, TRUE))
     mirrorMargins = StringTobool(settingValue);
-  else if (StringMatch(settingName, "runTwice", FALSE, TRUE))
+  else if (StringMatch(settingName, _T("runTwice"), FALSE, TRUE))
     runTwice = StringTobool(settingValue);
-  else if (StringMatch(settingName, "isInteractive", FALSE, TRUE))
+  else if (StringMatch(settingName, _T("isInteractive"), FALSE, TRUE))
     isInteractive = StringTobool(settingValue);
-  else if (StringMatch(settingName, "headerRule", FALSE, TRUE))
+  else if (StringMatch(settingName, _T("headerRule"), FALSE, TRUE))
     headerRule = StringTobool(settingValue);
-  else if (StringMatch(settingName, "footerRule", FALSE, TRUE))
+  else if (StringMatch(settingName, _T("footerRule"), FALSE, TRUE))
     footerRule = StringTobool(settingValue);
-  else if (StringMatch(settingName, "combineSubSections", FALSE, TRUE))
+  else if (StringMatch(settingName, _T("combineSubSections"), FALSE, TRUE))
     combineSubSections = StringTobool(settingValue);
-  else if (StringMatch(settingName, "listLabelIndent", FALSE, TRUE))
+  else if (StringMatch(settingName, _T("listLabelIndent"), FALSE, TRUE))
     StringToInt(settingValue, &labelIndentTab);
-  else if (StringMatch(settingName, "listItemIndent", FALSE, TRUE))
+  else if (StringMatch(settingName, _T("listItemIndent"), FALSE, TRUE))
     StringToInt(settingValue, &itemIndentTab);
-  else if (StringMatch(settingName, "useUpButton", FALSE, TRUE))
+  else if (StringMatch(settingName, _T("useUpButton"), FALSE, TRUE))
     useUpButton = StringTobool(settingValue);
-  else if (StringMatch(settingName, "useHeadingStyles", FALSE, TRUE))
+  else if (StringMatch(settingName, _T("useHeadingStyles"), FALSE, TRUE))
     useHeadingStyles = StringTobool(settingValue);
-  else if (StringMatch(settingName, "useWord", FALSE, TRUE))
+  else if (StringMatch(settingName, _T("useWord"), FALSE, TRUE))
     useWord = StringTobool(settingValue);
-  else if (StringMatch(settingName, "contentsDepth", FALSE, TRUE))
+  else if (StringMatch(settingName, _T("contentsDepth"), FALSE, TRUE))
     StringToInt(settingValue, &contentsDepth);
-  else if (StringMatch(settingName, "generateHPJ", FALSE, TRUE))
+  else if (StringMatch(settingName, _T("generateHPJ"), FALSE, TRUE))
     generateHPJ = StringTobool(settingValue);
-  else if (StringMatch(settingName, "truncateFilenames", FALSE, TRUE))
+  else if (StringMatch(settingName, _T("truncateFilenames"), FALSE, TRUE))
     truncateFilenames = StringTobool(settingValue);
-  else if (StringMatch(settingName, "winHelpVersion", FALSE, TRUE))
+  else if (StringMatch(settingName, _T("winHelpVersion"), FALSE, TRUE))
     StringToInt(settingValue, &winHelpVersion);
-  else if (StringMatch(settingName, "winHelpContents", FALSE, TRUE))
+  else if (StringMatch(settingName, _T("winHelpContents"), FALSE, TRUE))
     winHelpContents = StringTobool(settingValue);
-  else if (StringMatch(settingName, "htmlIndex", FALSE, TRUE))
+  else if (StringMatch(settingName, _T("htmlIndex"), FALSE, TRUE))
     htmlIndex = StringTobool(settingValue);
-  else if (StringMatch(settingName, "htmlWorkshopFiles", FALSE, TRUE))
+  else if (StringMatch(settingName, _T("htmlWorkshopFiles"), FALSE, TRUE))
     htmlWorkshopFiles = StringTobool(settingValue);
-  else if (StringMatch(settingName, "htmlFrameContents", FALSE, TRUE))
+  else if (StringMatch(settingName, _T("htmlFrameContents"), FALSE, TRUE))
     htmlFrameContents = StringTobool(settingValue);
-  else if (StringMatch(settingName, "htmlStylesheet", FALSE, TRUE))
+  else if (StringMatch(settingName, _T("htmlStylesheet"), FALSE, TRUE))
     {
       if (htmlStylesheet) delete[] htmlStylesheet;
       htmlStylesheet = copystring(settingValue);
     }
-  else if (StringMatch(settingName, "upperCaseNames", FALSE, TRUE))
+  else if (StringMatch(settingName, _T("upperCaseNames"), FALSE, TRUE))
     upperCaseNames = StringTobool(settingValue);
-  else if (StringMatch(settingName, "ignoreBadRefs", FALSE, TRUE))
+  else if (StringMatch(settingName, _T("ignoreBadRefs"), FALSE, TRUE))
     ignoreBadRefs = StringTobool(settingValue);
-  else if (StringMatch(settingName, "htmlFaceName", FALSE, TRUE))
+  else if (StringMatch(settingName, _T("htmlFaceName"), FALSE, TRUE))
   {
     delete[] htmlFaceName;
     htmlFaceName = copystring(settingValue);
   }
-  else if (StringMatch(settingName, "winHelpTitle", FALSE, TRUE))
+  else if (StringMatch(settingName, _T("winHelpTitle"), FALSE, TRUE))
   {
     if (winHelpTitle)
       delete[] winHelpTitle;
     winHelpTitle = copystring(settingValue);
   }
-  else if (StringMatch(settingName, "indexSubsections", FALSE, TRUE))
+  else if (StringMatch(settingName, _T("indexSubsections"), FALSE, TRUE))
     indexSubsections = StringTobool(settingValue);
-  else if (StringMatch(settingName, "compatibility", FALSE, TRUE))
+  else if (StringMatch(settingName, _T("compatibility"), FALSE, TRUE))
     compatibilityMode = StringTobool(settingValue);
-  else if (StringMatch(settingName, "defaultColumnWidth", FALSE, TRUE))
+  else if (StringMatch(settingName, _T("defaultColumnWidth"), FALSE, TRUE))
   {
     StringToInt(settingValue, &defaultTableColumnWidth);
     defaultTableColumnWidth = 20*defaultTableColumnWidth;
   }
-  else if (StringMatch(settingName, "bitmapMethod", FALSE, TRUE))
+  else if (StringMatch(settingName, _T("bitmapMethod"), FALSE, TRUE))
   {
-    if ((strcmp(settingValue, "includepicture") != 0) && (strcmp(settingValue, "hex") != 0) &&
-        (strcmp(settingValue, "import") != 0))
+    if ((wxStrcmp(settingValue, _T("includepicture")) != 0) && (wxStrcmp(settingValue, _T("hex")) != 0) &&
+        (wxStrcmp(settingValue, _T("import")) != 0))
     {
       if (interactive)
-        OnError("Unknown bitmapMethod");
-      strcpy(errorCode, "Unknown bitmapMethod");
+        OnError(_T("Unknown bitmapMethod"));
+      wxStrcpy(errorCode, _T("Unknown bitmapMethod"));
     }
     else
     {
@@ -1238,69 +1240,69 @@ char *RegisterSetting(char *settingName, char *settingValue, bool interactive)
       bitmapMethod = copystring(settingValue);
     }
   }
-  else if (StringMatch(settingName, "htmlBrowseButtons", FALSE, TRUE))
+  else if (StringMatch(settingName, _T("htmlBrowseButtons"), FALSE, TRUE))
   {
-    if (strcmp(settingValue, "none") == 0)
+    if (wxStrcmp(settingValue, _T("none")) == 0)
       htmlBrowseButtons = HTML_BUTTONS_NONE;
-    else if (strcmp(settingValue, "bitmap") == 0)
+    else if (wxStrcmp(settingValue, _T("bitmap")) == 0)
       htmlBrowseButtons = HTML_BUTTONS_BITMAP;
-    else if (strcmp(settingValue, "text") == 0)
+    else if (wxStrcmp(settingValue, _T("text")) == 0)
       htmlBrowseButtons = HTML_BUTTONS_TEXT;
     else
     {
       if (interactive)
-        OnInform("Initialisation file error: htmlBrowseButtons must be one of none, bitmap, or text.");
-      strcpy(errorCode, "Initialisation file error: htmlBrowseButtons must be one of none, bitmap, or text.");
+        OnInform(_T("Initialisation file error: htmlBrowseButtons must be one of none, bitmap, or text."));
+      wxStrcpy(errorCode, _T("Initialisation file error: htmlBrowseButtons must be one of none, bitmap, or text."));
     }
   }
-  else if (StringMatch(settingName, "backgroundImage", FALSE, TRUE))
+  else if (StringMatch(settingName, _T("backgroundImage"), FALSE, TRUE))
   {
     backgroundImageString = copystring(settingValue);
   }
-  else if (StringMatch(settingName, "backgroundColour", FALSE, TRUE))
+  else if (StringMatch(settingName, _T("backgroundColour"), FALSE, TRUE))
   {
     delete[] backgroundColourString;
     backgroundColourString = copystring(settingValue);
   }
-  else if (StringMatch(settingName, "textColour", FALSE, TRUE))
+  else if (StringMatch(settingName, _T("textColour"), FALSE, TRUE))
   {
     textColourString = copystring(settingValue);
   }
-  else if (StringMatch(settingName, "linkColour", FALSE, TRUE))
+  else if (StringMatch(settingName, _T("linkColour"), FALSE, TRUE))
   {
     linkColourString = copystring(settingValue);
   }
-  else if (StringMatch(settingName, "followedLinkColour", FALSE, TRUE))
+  else if (StringMatch(settingName, _T("followedLinkColour"), FALSE, TRUE))
   {
     followedLinkColourString = copystring(settingValue);
   }
-  else if (StringMatch(settingName, "conversionMode", FALSE, TRUE))
+  else if (StringMatch(settingName, _T("conversionMode"), FALSE, TRUE))
   {
-    if (StringMatch(settingValue, "RTF", FALSE, TRUE))
+    if (StringMatch(settingValue, _T("RTF"), FALSE, TRUE))
     {
       winHelp = FALSE; convertMode = TEX_RTF;
     }
-    else if (StringMatch(settingValue, "WinHelp", FALSE, TRUE))
+    else if (StringMatch(settingValue, _T("WinHelp"), FALSE, TRUE))
     {
       winHelp = TRUE; convertMode = TEX_RTF;
     }
-    else if (StringMatch(settingValue, "XLP", FALSE, TRUE) ||
-             StringMatch(settingValue, "wxHelp", FALSE, TRUE))
+    else if (StringMatch(settingValue, _T("XLP"), FALSE, TRUE) ||
+             StringMatch(settingValue, _T("wxHelp"), FALSE, TRUE))
     {
       convertMode = TEX_XLP;
     }
-    else if (StringMatch(settingValue, "HTML", FALSE, TRUE))
+    else if (StringMatch(settingValue, _T("HTML"), FALSE, TRUE))
     {
       convertMode = TEX_HTML;
     }
     else
     {
       if (interactive)
-        OnInform("Initialisation file error: conversionMode must be one of\nRTF, WinHelp, XLP (or wxHelp), HTML.");
-      strcpy(errorCode, "Initialisation file error: conversionMode must be one of\nRTF, WinHelp, XLP (or wxHelp), HTML.");
+        OnInform(_T("Initialisation file error: conversionMode must be one of\nRTF, WinHelp, XLP (or wxHelp), HTML."));
+      wxStrcpy(errorCode, _T("Initialisation file error: conversionMode must be one of\nRTF, WinHelp, XLP (or wxHelp), HTML."));
     }
   }
-  else if (StringMatch(settingName, "documentFontSize", FALSE, TRUE))
+  else if (StringMatch(settingName, _T("documentFontSize"), FALSE, TRUE))
   {
     int n;
     StringToInt(settingValue, &n);
@@ -1308,25 +1310,25 @@ char *RegisterSetting(char *settingName, char *settingValue, bool interactive)
       SetFontSizes(n);
     else
     {
-      char buf[200];
-      sprintf(buf, "Initialisation file error: nonstandard document font size %d.", n);
+      wxChar buf[200];
+      wxSprintf(buf, _T("Initialisation file error: nonstandard document font size %d."), n);
       if (interactive)
         OnInform(buf);
-      strcpy(errorCode, buf);
+      wxStrcpy(errorCode, buf);
     }
   }
   else
   {
-    char buf[200];
-    sprintf(buf, "Initialisation file error: unrecognised setting %s.", settingName);
+    wxChar buf[200];
+    wxSprintf(buf, _T("Initialisation file error: unrecognised setting %s."), settingName);
     if (interactive)
       OnInform(buf);
-    strcpy(errorCode, buf);
+    wxStrcpy(errorCode, buf);
   }
   return errorCode;
 }
 
-bool ReadCustomMacros(char *filename)
+bool ReadCustomMacros(wxChar *filename)
 {
   if (!wxFileExists(filename))
       return FALSE;
@@ -1337,8 +1339,8 @@ bool ReadCustomMacros(char *filename)
 
   CustomMacroList.Clear();
   char ch;
-  char macroName[100];
-  char macroBody[1000];
+  wxChar macroName[100];
+  wxChar macroBody[1000];
   int noArgs;
 
   while (!istr.eof())
@@ -1350,19 +1352,19 @@ bool ReadCustomMacros(char *filename)
       
     if (ch != '\\') // Not a macro definition, so must be NAME=VALUE
     {
-      char settingName[100];
+      wxChar settingName[100];
       settingName[0] = ch;
       BibReadWord(istr, (settingName+1));
       BibEatWhiteSpace(istr);
       istr.get(ch);
       if (ch != '=')
       {
-        OnError("Expected = following name: malformed tex2rtf.ini file.");
+        OnError(_T("Expected = following name: malformed tex2rtf.ini file."));
         return FALSE;
       }
       else
       {
-        char settingValue[200];
+        wxChar settingValue[200];
         BibEatWhiteSpace(istr);
         BibReadToEOL(istr, settingValue);
         RegisterSetting(settingName, settingValue);
@@ -1375,26 +1377,26 @@ bool ReadCustomMacros(char *filename)
       istr.get(ch);
       if (ch != '[')
       {
-        OnError("Expected [ followed by number of arguments: malformed tex2rtf.ini file.");
+        OnError(_T("Expected [ followed by number of arguments: malformed tex2rtf.ini file."));
         return FALSE;
       }
       istr >> noArgs;
       istr.get(ch);
       if (ch != ']')
       {
-        OnError("Expected ] following number of arguments: malformed tex2rtf.ini file.");
+        OnError(_T("Expected ] following number of arguments: malformed tex2rtf.ini file."));
         return FALSE;
       }
       BibEatWhiteSpace(istr);
       istr.get(ch);
       if (ch != '{')
       {
-        OnError("Expected { followed by macro body: malformed tex2rtf.ini file.");
+        OnError(_T("Expected { followed by macro body: malformed tex2rtf.ini file."));
         return FALSE;
       }
       CustomMacro *macro = new CustomMacro(macroName, noArgs, NULL);
       BibReadValue(istr, macroBody, FALSE, FALSE); // Don't ignore extra braces
-      if (strlen(macroBody) > 0)
+      if (wxStrlen(macroBody) > 0)
         macro->macroBody = copystring(macroBody);
     
       BibEatWhiteSpace(istr);
@@ -1402,13 +1404,13 @@ bool ReadCustomMacros(char *filename)
       AddMacroDef(ltCUSTOM_MACRO, macroName, noArgs);
     }
   }
-  char mbuf[200];
-  sprintf(mbuf, "Read initialization file %s.", filename);
+  wxChar mbuf[200];
+  wxSprintf(mbuf, _T("Read initialization file %s."), filename);
   OnInform(mbuf);
   return TRUE;
 }
  
-CustomMacro *FindCustomMacro(char *name)
+CustomMacro *FindCustomMacro(wxChar *name)
 {
   wxNode *node = CustomMacroList.Find(name);
   if (node)
@@ -1425,38 +1427,38 @@ void ShowCustomMacros(void)
   wxNode *node = CustomMacroList.GetFirst();
   if (!node)
   {
-    OnInform("No custom macros loaded.\n");
+    OnInform(_T("No custom macros loaded.\n"));
     return;
   }
   
-  char buf[400];
+  wxChar buf[400];
   while (node)
   {
     CustomMacro *macro = (CustomMacro *)node->GetData();
-    sprintf(buf, "\\%s[%d]\n    {%s}", macro->macroName, macro->noArgs,
-     macro->macroBody ? macro->macroBody : "");
+    wxSprintf(buf, _T("\\%s[%d]\n    {%s}"), macro->macroName, macro->noArgs,
+     macro->macroBody ? macro->macroBody : _T(""));
     OnInform(buf);
     node = node->GetNext();
   }
 }
 
 // Parse a string into several comma-separated fields
-char *ParseMultifieldString(char *allFields, int *pos)
+wxChar *ParseMultifieldString(wxChar *allFields, int *pos)
 {
-  static char buffer[300];
+  static wxChar buffer[300];
   int i = 0;
   int fieldIndex = *pos;
-  int len = strlen(allFields);
+  int len = wxStrlen(allFields);
   int oldPos = *pos;
   bool keepGoing = TRUE;
   while ((fieldIndex <= len) && keepGoing)
   {
-    if (allFields[fieldIndex] == ' ')
+    if (allFields[fieldIndex] == _T(' '))
     {
       // Skip
       fieldIndex ++;
     }
-    else if (allFields[fieldIndex] == ',')
+    else if (allFields[fieldIndex] == _T(','))
     {
       *pos = fieldIndex + 1;
       keepGoing = FALSE;
@@ -1488,7 +1490,7 @@ char *ParseMultifieldString(char *allFields, int *pos)
  *
  */
  
-ColourTableEntry::ColourTableEntry(const char *theName, unsigned int r,  unsigned int g,  unsigned int b)
+ColourTableEntry::ColourTableEntry(const wxChar *theName, unsigned int r,  unsigned int g,  unsigned int b)
 {
   name = copystring(theName);
   red = r;
@@ -1501,7 +1503,7 @@ ColourTableEntry::~ColourTableEntry(void)
   delete[] name;
 }
 
-void AddColour(const char *theName, unsigned int r,  unsigned int g,  unsigned int b)
+void AddColour(const wxChar *theName, unsigned int r,  unsigned int g,  unsigned int b)
 {
   wxNode *node = ColourTable.Find(theName);
   if (node)
@@ -1519,14 +1521,14 @@ void AddColour(const char *theName, unsigned int r,  unsigned int g,  unsigned i
   ColourTable.Append(theName, entry);
 }
 
-int FindColourPosition(char *theName)
+int FindColourPosition(wxChar *theName)
 {
   int i = 0;
   wxNode *node = ColourTable.GetFirst();
   while (node)
   {
     ColourTableEntry *entry = (ColourTableEntry *)node->GetData();
-    if (strcmp(theName, entry->name) == 0)
+    if (wxStrcmp(theName, entry->name) == 0)
       return i;
     i ++;
     node = node->GetNext();
@@ -1535,29 +1537,27 @@ int FindColourPosition(char *theName)
 }
 
 // Converts e.g. "red" -> "#FF0000"
-extern void DecToHex(int, char *);
-bool FindColourHTMLString(char *theName, char *buf)
+extern void DecToHex(int, wxChar *);
+bool FindColourHTMLString(wxChar *theName, wxChar *buf)
 {
-  int i = 0;
   wxNode *node = ColourTable.GetFirst();
   while (node)
   {
     ColourTableEntry *entry = (ColourTableEntry *)node->GetData();
-    if (strcmp(theName, entry->name) == 0)
+    if (wxStrcmp(theName, entry->name) == 0)
     {
-        strcpy(buf, "#");
+        wxStrcpy(buf, _T("#"));
         
-        char buf2[3];
+        wxChar buf2[3];
         DecToHex(entry->red, buf2);
-        strcat(buf, buf2);
+        wxStrcat(buf, buf2);
         DecToHex(entry->green, buf2);
-        strcat(buf, buf2);
+        wxStrcat(buf, buf2);
         DecToHex(entry->blue, buf2);
-        strcat(buf, buf2);
+        wxStrcat(buf, buf2);
 
         return TRUE;
     }
-    i ++;
     node = node->GetNext();
   }
   return FALSE;
@@ -1567,25 +1567,25 @@ bool FindColourHTMLString(char *theName, char *buf)
 void InitialiseColourTable(void)
 {
   // \\red0\\green0\\blue0;
-  AddColour("black", 0,0,0);
+  AddColour(_T("black"), 0,0,0);
 
   // \\red0\\green0\\blue255;\\red0\\green255\\blue255;\n");
-  AddColour("cyan", 0,255,255);
+  AddColour(_T("cyan"), 0,255,255);
 
   // \\red0\\green255\\blue0;
-  AddColour("green", 0,255,0);
+  AddColour(_T("green"), 0,255,0);
   
   // \\red255\\green0\\blue255;
-  AddColour("magenta", 255,0,255);
+  AddColour(_T("magenta"), 255,0,255);
 
   // \\red255\\green0\\blue0;
-  AddColour("red", 255,0,0);
+  AddColour(_T("red"), 255,0,0);
   
   // \\red255\\green255\\blue0;
-  AddColour("yellow", 255,255,0);
+  AddColour(_T("yellow"), 255,255,0);
   
   // \\red255\\green255\\blue255;}");
-  AddColour("white", 255,255,255);
+  AddColour(_T("white"), 255,255,255);
 }
 
 /*
@@ -1618,7 +1618,7 @@ void Tex2RTFYield(bool force)
 
 // Hash table for lists of keywords for topics (WinHelp).
 wxHashTable TopicTable(wxKEY_STRING);
-void AddKeyWordForTopic(char *topic, char *entry, char *filename)
+void AddKeyWordForTopic(wxChar *topic, wxChar *entry, wxChar *filename)
 {
   TexTopic *texTopic = (TexTopic *)TopicTable.Get(topic);
   if (!texTopic)
@@ -1650,7 +1650,7 @@ void ClearKeyWordTable(void)
  * TexTopic structure
  */
  
-TexTopic::TexTopic(char *f)
+TexTopic::TexTopic(wxChar *f)
 {
   if (f)
     filename = copystring(f);
@@ -1669,17 +1669,17 @@ TexTopic::~TexTopic(void)
 }
 
 // Convert case, according to upperCaseNames setting.
-char *ConvertCase(char *s)
+wxChar *ConvertCase(wxChar *s)
 {
-  static char buf[256];
-  int len = strlen(s);
+  static wxChar buf[256];
+  int len = wxStrlen(s);
   int i;
   if (upperCaseNames)
     for (i = 0; i < len; i ++)
-      buf[i] = toupper(s[i]);
+      buf[i] = wxToupper(s[i]);
   else
     for (i = 0; i < len; i ++)
-      buf[i] = tolower(s[i]);
+      buf[i] = wxTolower(s[i]);
   buf[i] = 0;
   return buf;  
 }
index 148f877dd9b1b974d8aac739606009e72cb1cac4..527bac8b5ee9719281196ab9a3973ae0ec767c15 100644 (file)
@@ -53,7 +53,7 @@ void PadToTab(int tabPos)
 {
   int currentCol = GetCurrentColumn();
   for (int i = currentCol; i < tabPos; i++)
-    TexOutput(" ", TRUE);
+    TexOutput(_T(" "), TRUE);
 }
 
 static long xlpBlockId = 0;
@@ -65,7 +65,7 @@ long NewBlockId(void)
 // Called on start/end of macro examination
 void XLPOnMacro(int macroId, int no_args, bool start)
 {
-  char buf[100];
+  wxChar buf[100];
   switch (macroId)
   {
   case ltCHAPTER:
@@ -86,16 +86,16 @@ void XLPOnMacro(int macroId, int no_args, bool start)
       currentBlockId = NewBlockId();
 
       startedSections = TRUE;
-      fprintf(Contents, "\\hy-%d{%ld}{", hyBLOCK_SMALL_HEADING, id1);
-      fprintf(Chapters, "\n\\hy-%d{%ld}{", hyBLOCK_LARGE_VISIBLE_SECTION, currentBlockId);
-      fprintf(Index, "%ld %ld\n", id1, currentBlockId);
+      wxFprintf(Contents, _T("\\hy-%d{%ld}{"), hyBLOCK_SMALL_HEADING, id1);
+      wxFprintf(Chapters, _T("\n\\hy-%d{%ld}{"), hyBLOCK_LARGE_VISIBLE_SECTION, currentBlockId);
+      wxFprintf(Index, _T("%ld %ld\n"), id1, currentBlockId);
 
       OutputCurrentSection(); // Repeat section header
 
-      fprintf(Contents, "}\n\n");
-      fprintf(Chapters, "}\n\n");
+      wxFprintf(Contents, _T("}\n\n"));
+      wxFprintf(Chapters, _T("}\n\n"));
       SetCurrentOutput(Chapters);
-      char *topicName = FindTopicName(GetNextChunk());
+      wxChar *topicName = FindTopicName(GetNextChunk());
       hyperLabels.Append(topicName, (wxObject *)currentBlockId);
     }
     break;
@@ -120,21 +120,21 @@ void XLPOnMacro(int macroId, int no_args, bool start)
       startedSections = TRUE;
 
       if (DocumentStyle == LATEX_ARTICLE)
-        fprintf(Contents, "\\hy-%d{%ld}{", hyBLOCK_LARGE_HEADING, id1);
+        wxFprintf(Contents, _T("\\hy-%d{%ld}{"), hyBLOCK_LARGE_HEADING, id1);
       else
-        fprintf(Chapters, "\\hy-%d{%ld}{", hyBLOCK_BOLD, id1);
-      fprintf(Sections, "\n\\hy-%d{%ld}{", hyBLOCK_LARGE_VISIBLE_SECTION, currentBlockId);
-      fprintf(Index, "%ld %ld\n", id1, currentBlockId);
+        wxFprintf(Chapters, _T("\\hy-%d{%ld}{"), hyBLOCK_BOLD, id1);
+      wxFprintf(Sections, _T("\n\\hy-%d{%ld}{"), hyBLOCK_LARGE_VISIBLE_SECTION, currentBlockId);
+      wxFprintf(Index, _T("%ld %ld\n"), id1, currentBlockId);
 
       OutputCurrentSection(); // Repeat section header
 
       if (DocumentStyle == LATEX_ARTICLE)
-        fprintf(Contents, "}\n\n");
+        wxFprintf(Contents, _T("}\n\n"));
       else
-        fprintf(Chapters, "}\n\n");
-      fprintf(Sections, "}\n\n");
+        wxFprintf(Chapters, _T("}\n\n"));
+      wxFprintf(Sections, _T("}\n\n"));
       SetCurrentOutput(Sections);
-      char *topicName = FindTopicName(GetNextChunk());
+      wxChar *topicName = FindTopicName(GetNextChunk());
       hyperLabels.Append(topicName, (wxObject *)currentBlockId);
     }
     break;
@@ -154,16 +154,16 @@ void XLPOnMacro(int macroId, int no_args, bool start)
       SetCurrentOutputs(Sections, Subsections);
       long id1 = NewBlockId();
       currentBlockId = NewBlockId();
-      fprintf(Sections, "\\hy-%d{%ld}{", hyBLOCK_BOLD, id1);
-      fprintf(Subsections, "\n\\hy-%d{%ld}{", hyBLOCK_LARGE_VISIBLE_SECTION, currentBlockId);
-      fprintf(Index, "%ld %ld\n", id1, currentBlockId);
+      wxFprintf(Sections, _T("\\hy-%d{%ld}{"), hyBLOCK_BOLD, id1);
+      wxFprintf(Subsections, _T("\n\\hy-%d{%ld}{"), hyBLOCK_LARGE_VISIBLE_SECTION, currentBlockId);
+      wxFprintf(Index, _T("%ld %ld\n"), id1, currentBlockId);
 
       OutputCurrentSection(); // Repeat section header
 
-      fprintf(Sections, "}\n\n");
-      fprintf(Subsections, "}\n\n");
+      wxFprintf(Sections, _T("}\n\n"));
+      wxFprintf(Subsections, _T("}\n\n"));
       SetCurrentOutput(Subsections);
-      char *topicName = FindTopicName(GetNextChunk());
+      wxChar *topicName = FindTopicName(GetNextChunk());
       hyperLabels.Append(topicName, (wxObject *)currentBlockId);
     }
     break;
@@ -179,16 +179,16 @@ void XLPOnMacro(int macroId, int no_args, bool start)
       SetCurrentOutputs(Subsections, Subsubsections);
       long id1 = NewBlockId();
       currentBlockId = NewBlockId();
-      fprintf(Subsections, "\\hy-%d{%ld}{", hyBLOCK_BOLD, id1);
-      fprintf(Subsubsections, "\n\\hy-%d{%ld}{", hyBLOCK_LARGE_VISIBLE_SECTION, currentBlockId);
-      fprintf(Index, "%ld %ld\n", id1, currentBlockId);
+      wxFprintf(Subsections, _T("\\hy-%d{%ld}{"), hyBLOCK_BOLD, id1);
+      wxFprintf(Subsubsections, _T("\n\\hy-%d{%ld}{"), hyBLOCK_LARGE_VISIBLE_SECTION, currentBlockId);
+      wxFprintf(Index, _T("%ld %ld\n"), id1, currentBlockId);
 
       OutputCurrentSection(); // Repeat section header
 
-      fprintf(Subsections, "}\n\n");
-      fprintf(Subsubsections, "}\n\n");
+      wxFprintf(Subsections, _T("}\n\n"));
+      wxFprintf(Subsubsections, _T("}\n\n"));
       SetCurrentOutput(Subsubsections);
-      char *topicName = FindTopicName(GetNextChunk());
+      wxChar *topicName = FindTopicName(GetNextChunk());
       hyperLabels.Append(topicName, (wxObject *)currentBlockId);
     }
     break;
@@ -201,27 +201,27 @@ void XLPOnMacro(int macroId, int no_args, bool start)
     if (start)
     {
       long id = NewBlockId();
-      fprintf(Subsections, "\\hy-%d{%ld}{", hyBLOCK_BOLD, id);
+      wxFprintf(Subsections, _T("\\hy-%d{%ld}{"), hyBLOCK_BOLD, id);
     }
     else
-      fprintf(Subsections, "}");
+      wxFprintf(Subsections, _T("}"));
     break;
   }
   case ltVOID:
 //    if (start)
-//      TexOutput("void", TRUE);
+//      TexOutput(_T("void"), TRUE);
     break;
   case ltBACKSLASHCHAR:
     if (start)
-      TexOutput("\n", TRUE);
+      TexOutput(_T("\n"), TRUE);
     break;
   case ltPAR:
   {
     if (start)
     {
       if (ParSkip > 0)
-        TexOutput("\n", TRUE);
-      TexOutput("\n", TRUE);
+        TexOutput(_T("\n"), TRUE);
+      TexOutput(_T("\n"), TRUE);
     }
     break;
   }
@@ -237,12 +237,12 @@ void XLPOnMacro(int macroId, int no_args, bool start)
   {
     if (start)
     {
-      char buf[100];
+      wxChar buf[100];
       long id = NewBlockId();
-      sprintf(buf, "\\hy-%d{%ld}{", hyBLOCK_BOLD, id);
+      wxSprintf(buf, _T("\\hy-%d{%ld}{"), hyBLOCK_BOLD, id);
       TexOutput(buf);
     }
-    else TexOutput("}");
+    else TexOutput(_T("}"));
     break;
   }
   case ltTEXTIT:
@@ -251,12 +251,12 @@ void XLPOnMacro(int macroId, int no_args, bool start)
   {
     if (start)
     {
-      char buf[100];
+      wxChar buf[100];
       long id = NewBlockId();
-      sprintf(buf, "\\hy-%d{%ld}{", hyBLOCK_ITALIC, id);
+      wxSprintf(buf, _T("\\hy-%d{%ld}{"), hyBLOCK_ITALIC, id);
       TexOutput(buf);
     }
-    else TexOutput("}");
+    else TexOutput(_T("}"));
     break;
   }
   case ltTTFAMILY:
@@ -266,60 +266,60 @@ void XLPOnMacro(int macroId, int no_args, bool start)
     if (start)
     {
       long id = NewBlockId();
-      sprintf(buf, "\\hy-%d{%ld}{", hyBLOCK_TELETYPE, id);
+      wxSprintf(buf, _T("\\hy-%d{%ld}{"), hyBLOCK_TELETYPE, id);
       TexOutput(buf);
     }
-    else TexOutput("}");
+    else TexOutput(_T("}"));
     break;
   }
   case ltSMALL:
   {
     if (start)
     {
-      sprintf(buf, "\\hy-%d{%ld}{", hyBLOCK_SMALL_TEXT, NewBlockId());
+      wxSprintf(buf, _T("\\hy-%d{%ld}{"), hyBLOCK_SMALL_TEXT, NewBlockId());
       TexOutput(buf);
     }
-    else TexOutput("}");
+    else TexOutput(_T("}"));
     break;
   }
   case ltTINY:
   {
     if (start)
     {
-      sprintf(buf, "\\hy-%d{%ld}{", hyBLOCK_SMALL_TEXT, NewBlockId());
+      wxSprintf(buf, _T("\\hy-%d{%ld}{"), hyBLOCK_SMALL_TEXT, NewBlockId());
       TexOutput(buf);
     }
-    else TexOutput("}");
+    else TexOutput(_T("}"));
     break;
   }
   case ltNORMALSIZE:
   {
     if (start)
     {
-      sprintf(buf, "\\hy-%d{%ld}{", hyBLOCK_NORMAL, NewBlockId());
+      wxSprintf(buf, _T("\\hy-%d{%ld}{"), hyBLOCK_NORMAL, NewBlockId());
       TexOutput(buf);
     }
-    else TexOutput("}");
+    else TexOutput(_T("}"));
     break;
   }
   case ltlarge:
   {
     if (start)
     {
-      sprintf(buf, "\\hy-%d{%ld}{", hyBLOCK_SMALL_HEADING, NewBlockId());
+      wxSprintf(buf, _T("\\hy-%d{%ld}{"), hyBLOCK_SMALL_HEADING, NewBlockId());
       TexOutput(buf);
     }
-    else TexOutput("}\n");
+    else TexOutput(_T("}\n"));
     break;
   }
   case ltLARGE:
   {
     if (start)
     {
-      sprintf(buf, "\\hy-%d{%ld}{", hyBLOCK_LARGE_HEADING, NewBlockId());
+      wxSprintf(buf, _T("\\hy-%d{%ld}{"), hyBLOCK_LARGE_HEADING, NewBlockId());
       TexOutput(buf);
     }
-    else TexOutput("}\n");
+    else TexOutput(_T("}\n"));
     break;
   }
   case ltITEMIZE:
@@ -332,7 +332,7 @@ void XLPOnMacro(int macroId, int no_args, bool start)
 //      tabCount ++;
 
 //      if (indentLevel > 0)
-//        TexOutput("\\par\\par\n");
+//        TexOutput(_T("\\par\\par\n"));
       indentLevel ++;
       int listType;
       if (macroId == ltENUMERATE)
@@ -366,20 +366,20 @@ void XLPOnMacro(int macroId, int no_args, bool start)
       if (!start)
       {
         struc->currentItem += 1;
-        char indentBuf[30];
+        wxChar indentBuf[30];
 
         switch (struc->listType)
         {
           case LATEX_ENUMERATE:
           {
-            sprintf(indentBuf, "\\hy-%d{%ld}{%d.} ",
+            wxSprintf(indentBuf, _T("\\hy-%d{%ld}{%d.} "),
               hyBLOCK_BOLD, NewBlockId(), struc->currentItem);
             TexOutput(indentBuf);
             break;
           }
           case LATEX_ITEMIZE:
           {
-            sprintf(indentBuf, "\\hy-%d{%ld}{o} ",
+            wxSprintf(indentBuf, _T("\\hy-%d{%ld}{o} "),
               hyBLOCK_BOLD, NewBlockId());
             TexOutput(indentBuf);
             break;
@@ -389,11 +389,11 @@ void XLPOnMacro(int macroId, int no_args, bool start)
           {
             if (descriptionItemArg)
             {
-              sprintf(indentBuf, "\\hy-%d{%ld}{",
+              wxSprintf(indentBuf, _T("\\hy-%d{%ld}{"),
                  hyBLOCK_BOLD, NewBlockId());
               TexOutput(indentBuf);
               TraverseChildrenFromChunk(descriptionItemArg);
-              TexOutput("} ");
+              TexOutput(_T("} "));
               descriptionItemArg = NULL;
             }
             break;
@@ -407,18 +407,18 @@ void XLPOnMacro(int macroId, int no_args, bool start)
   {
     if (start && DocumentTitle && DocumentAuthor)
     {
-      sprintf(buf, "\\hy-%d{%ld}{", hyBLOCK_LARGE_HEADING, NewBlockId());
+      wxSprintf(buf, _T("\\hy-%d{%ld}{"), hyBLOCK_LARGE_HEADING, NewBlockId());
       TexOutput(buf);
       TraverseChildrenFromChunk(DocumentTitle);
-      TexOutput("}\n\n");
-      sprintf(buf, "\\hy-%d{%ld}{", hyBLOCK_SMALL_HEADING, NewBlockId());
+      TexOutput(_T("}\n\n"));
+      wxSprintf(buf, _T("\\hy-%d{%ld}{"), hyBLOCK_SMALL_HEADING, NewBlockId());
       TexOutput(buf);
       TraverseChildrenFromChunk(DocumentAuthor);
-      TexOutput("}\n\n");
+      TexOutput(_T("}\n\n"));
       if (DocumentDate)
       {
         TraverseChildrenFromChunk(DocumentDate);
-        TexOutput("\n");
+        TexOutput(_T("\n"));
       }
     }
     break;
@@ -427,7 +427,7 @@ void XLPOnMacro(int macroId, int no_args, bool start)
   {
     if (start)
     {
-      FILE *fd = fopen(ContentsName, "r");
+      FILE *fd = wxFopen(ContentsName, _T("r"));
       if (fd)
       {
         int ch = getc(fd);
@@ -440,8 +440,8 @@ void XLPOnMacro(int macroId, int no_args, bool start)
       }
       else
       {
-        TexOutput("RUN TEX2RTF AGAIN FOR CONTENTS PAGE\n");
-        OnInform("Run Tex2RTF again to include contents page.");
+        TexOutput(_T("RUN TEX2RTF AGAIN FOR CONTENTS PAGE\n"));
+        OnInform(_T("Run Tex2RTF again to include contents page."));
       }
     }
     break;
@@ -449,32 +449,32 @@ void XLPOnMacro(int macroId, int no_args, bool start)
   case ltHARDY:
   {
     if (start)
-      TexOutput("HARDY", TRUE);
+      TexOutput(_T("HARDY"), TRUE);
     break;
   }
   case ltWXCLIPS:
   {
     if (start)
-      TexOutput("wxCLIPS", TRUE);
+      TexOutput(_T("wxCLIPS"), TRUE);
     break;
   }
   case ltVERBATIM:
   {
     if (start)
     {
-      char buf[100];
+      wxChar buf[100];
       long id = NewBlockId();
-      sprintf(buf, "\\hy-%d{%ld}{", hyBLOCK_TELETYPE, id);
+      wxSprintf(buf, _T("\\hy-%d{%ld}{"), hyBLOCK_TELETYPE, id);
       TexOutput(buf);
     }
-    else TexOutput("}");
+    else TexOutput(_T("}"));
     break;
   }
   case ltHRULE:
   {
     if (start)
     {
-      TexOutput("\n------------------------------------------------------------------", TRUE);
+      TexOutput(_T("\n------------------------------------------------------------------"), TRUE);
     }
     break;
   }
@@ -482,7 +482,7 @@ void XLPOnMacro(int macroId, int no_args, bool start)
   {
     if (start)
     {
-      TexOutput("--------------------------------------------------------------------------------", TRUE);
+      TexOutput(_T("--------------------------------------------------------------------------------"), TRUE);
     }
     break;
   }
@@ -501,17 +501,17 @@ void XLPOnMacro(int macroId, int no_args, bool start)
   {
     if (start)
     {
-      sprintf(buf, "\\hy-%d{%ld}{", hyBLOCK_TELETYPE, NewBlockId());
+      wxSprintf(buf, _T("\\hy-%d{%ld}{"), hyBLOCK_TELETYPE, NewBlockId());
       TexOutput(buf);
     }
     else
-      TexOutput("}");
+      TexOutput(_T("}"));
     break;
   }
   case ltNUMBEREDBIBITEM:
   {
     if (!start)
-      TexOutput("\n\n", TRUE);
+      TexOutput(_T("\n\n"), TRUE);
     break;
   }
   case ltCAPTION:
@@ -521,17 +521,17 @@ void XLPOnMacro(int macroId, int no_args, bool start)
     {
       figureNo ++;
 
-      char figBuf[40];
+      wxChar figBuf[40];
       if (DocumentStyle != LATEX_ARTICLE)
-        sprintf(figBuf, "Figure %d.%d: ", chapterNo, figureNo);
+        wxSprintf(figBuf, _T("Figure %d.%d: "), chapterNo, figureNo);
       else
-        sprintf(figBuf, "Figure %d: ", figureNo);
+        wxSprintf(figBuf, _T("Figure %d: "), figureNo);
 
       TexOutput(figBuf);
     }
     else
     {
-      char *topicName = FindTopicName(GetNextChunk());
+      wxChar *topicName = FindTopicName(GetNextChunk());
 
       AddTexRef(topicName, NULL, NULL,
            ((DocumentStyle != LATEX_ARTICLE) ? chapterNo : figureNo),
@@ -549,7 +549,7 @@ void XLPOnMacro(int macroId, int no_args, bool start)
 
 bool XLPOnArgument(int macroId, int arg_no, bool start)
 {
-  char buf[300];
+  wxChar buf[300];
   switch (macroId)
   {
   case ltCHAPTER:
@@ -569,51 +569,50 @@ bool XLPOnArgument(int macroId, int arg_no, bool start)
     if (!start && (arg_no == 1))
       currentSection = GetArgChunk();
     return FALSE;
-    break;
   }
   case ltFUNC:
   {
     if (!start && (arg_no == 1))
-      TexOutput(" ", TRUE);
+      TexOutput(_T(" "), TRUE);
     if (start && (arg_no == 3))
-      TexOutput("(", TRUE);
+      TexOutput(_T("("), TRUE);
     if (!start && (arg_no == 3))
-     TexOutput(")", TRUE);
+     TexOutput(_T(")"), TRUE);
     break;
   }
   case ltPFUNC:
   {
     if (!start && (arg_no == 1))
-      TexOutput(" ", TRUE);
+      TexOutput(_T(" "), TRUE);
 
     if (start && (arg_no == 2))
-      TexOutput("(*", TRUE);
+      TexOutput(_T("(*"), TRUE);
     if (!start && (arg_no == 2))
-      TexOutput(")", TRUE);
+      TexOutput(_T(")"), TRUE);
 
     if (start && (arg_no == 3))
-      TexOutput("(", TRUE);
+      TexOutput(_T("("), TRUE);
     if (!start && (arg_no == 3))
-      TexOutput(")", TRUE);
+      TexOutput(_T(")"), TRUE);
     break;
   }
   case ltCLIPSFUNC:
   {
     if (!start && (arg_no == 1))
-      TexOutput(" ", TRUE);
+      TexOutput(_T(" "), TRUE);
     if (start && (arg_no == 2))
     {
-      TexOutput("(", TRUE);
+      TexOutput(_T("("), TRUE);
       long id = NewBlockId();
-      sprintf(buf, "\\hy-%d{%ld}{", hyBLOCK_BOLD, id);
+      wxSprintf(buf, _T("\\hy-%d{%ld}{"), hyBLOCK_BOLD, id);
       TexOutput(buf);
     }
     if (!start && (arg_no == 2))
     {
-      TexOutput("}");
+      TexOutput(_T("}"));
     }
     if (!start && (arg_no == 3))
-     TexOutput(")", TRUE);
+     TexOutput(_T(")"), TRUE);
     break;
   }
   case ltPARAM:
@@ -621,12 +620,12 @@ bool XLPOnArgument(int macroId, int arg_no, bool start)
     if (start && (arg_no == 2))
     {
       long id = NewBlockId();
-      sprintf(buf, " \\hy-%d{%ld}{", hyBLOCK_BOLD, id);
+      wxSprintf(buf, _T(" \\hy-%d{%ld}{"), hyBLOCK_BOLD, id);
       TexOutput(buf);
     }
     if (!start && (arg_no == 2))
     {
-      TexOutput("}");
+      TexOutput(_T("}"));
     }
     break;
   }
@@ -635,33 +634,32 @@ bool XLPOnArgument(int macroId, int arg_no, bool start)
     if (start && (arg_no == 2))
     {
       long id = NewBlockId();
-      sprintf(buf, " \\hy-%d{%ld}{", hyBLOCK_BOLD, id);
+      wxSprintf(buf, _T(" \\hy-%d{%ld}{"), hyBLOCK_BOLD, id);
       TexOutput(buf);
     }
     if (!start && (arg_no == 2))
     {
-      TexOutput("}");
+      TexOutput(_T("}"));
     }
     break;
   }
   case ltMEMBER:
   {
     if (!start && (arg_no == 1))
-      TexOutput(" ", TRUE);
+      TexOutput(_T(" "), TRUE);
     break;
   }
   case ltLABEL:
   {
     return FALSE;
-    break;
   }
   case ltREF:
   {
     if (start)
     {
-      char *sec = NULL;
+      wxChar *sec = NULL;
       
-      char *refName = GetArgData();
+      wxChar *refName = GetArgData();
       if (refName)
       {
         TexRef *texRef = FindReference(refName);
@@ -687,16 +685,16 @@ bool XLPOnArgument(int macroId, int arg_no, bool start)
       if (start)
       {
         currentBlockId = NewBlockId();
-        sprintf(buf, "\\hy-%d{%ld}{", hyBLOCK_RED_ITALIC, currentBlockId);
+        wxSprintf(buf, _T("\\hy-%d{%ld}{"), hyBLOCK_RED_ITALIC, currentBlockId);
         TexOutput(buf);
       }
-      else TexOutput("}");
+      else TexOutput(_T("}"));
     }
     if (arg_no == 2)
     {
       if (start)
       {
-        char *label = GetArgData();
+        wxChar *label = GetArgData();
         hyperLinks.Append(currentBlockId, (wxObject *)copystring(label));
       }
       
@@ -713,9 +711,9 @@ bool XLPOnArgument(int macroId, int arg_no, bool start)
     else if (arg_no == 2)
     {
       if (start)
-        TexOutput(" (");
+        TexOutput(_T(" ("));
       else
-        TexOutput(")");
+        TexOutput(_T(")"));
       return TRUE;
     }
     break;
@@ -740,11 +738,11 @@ bool XLPOnArgument(int macroId, int arg_no, bool start)
         tableVerticalLineLeft = FALSE;
         tableVerticalLineRight = FALSE;
 
-        char *alignString = copystring(GetArgData());
+        wxChar *alignString = copystring(GetArgData());
 
         // Count the number of columns
         noColumns = 0;
-        int len = strlen(alignString);
+        int len = wxStrlen(alignString);
         if (len > 0)
         {
           if (alignString[0] == '|')
@@ -759,11 +757,11 @@ bool XLPOnArgument(int macroId, int arg_no, bool start)
 
 /*
       // Experimental
-      TexOutput("\\brdrt\\brdrs");
+      TexOutput(_T("\\brdrt\\brdrs"));
       if (tableVerticalLineLeft)
-        TexOutput("\\brdrl\\brdrs");
+        TexOutput(_T("\\brdrl\\brdrs"));
       if (tableVerticalLineRight)
-        TexOutput("\\brdrr\\brdrs");
+        TexOutput(_T("\\brdrr\\brdrs"));
 */
 
         // Calculate a rough size for each column
@@ -789,34 +787,33 @@ bool XLPOnArgument(int macroId, int arg_no, bool start)
   {
     if (start)
     {
-      TexOutput("----------------------------------------------------------------------\n", TRUE);
+      TexOutput(_T("----------------------------------------------------------------------\n"), TRUE);
       return TRUE;
     }
     else
-      TexOutput("\n----------------------------------------------------------------------\n", TRUE);
+      TexOutput(_T("\n----------------------------------------------------------------------\n"), TRUE);
     break;
   }
   case ltBIBITEM:
   {
-    char buf[100];
+    wxChar buf[100];
     if (arg_no == 1 && start)
     {
-      char *citeKey = GetArgData();
+      wxChar *citeKey = GetArgData();
       TexRef *ref = (TexRef *)TexReferences.Get(citeKey);
       if (ref)
       {
         if (ref->sectionNumber) delete[] ref->sectionNumber;
-        sprintf(buf, "[%d]", citeCount);
+        wxSprintf(buf, _T("[%d]"), citeCount);
         ref->sectionNumber = copystring(buf);
       }
 
-      sprintf(buf, "\\hy-%d{%ld}{[%d]} ", hyBLOCK_BOLD, NewBlockId(), citeCount);
+      wxSprintf(buf, _T("\\hy-%d{%ld}{[%d]} "), hyBLOCK_BOLD, NewBlockId(), citeCount);
       TexOutput(buf);
       citeCount ++;
       return FALSE;
     }
     return TRUE;
-    break;
   }
   case ltTHEBIBLIOGRAPHY:
   {
@@ -829,9 +826,9 @@ bool XLPOnArgument(int macroId, int arg_no, bool start)
       SetCurrentOutputs(Contents, Chapters);
       long id1 = NewBlockId();
       long id2 = NewBlockId();
-      fprintf(Contents, "\\hy-%d{%ld}{%s}\n", hyBLOCK_SMALL_HEADING, id1, ReferencesNameString);
-      fprintf(Chapters, "\\hy-%d{%ld}{%s}\n\n\n", hyBLOCK_LARGE_VISIBLE_SECTION, id2, ReferencesNameString);
-      fprintf(Index, "%ld %ld\n", id1, id2);
+      wxFprintf(Contents, _T("\\hy-%d{%ld}{%s}\n"), hyBLOCK_SMALL_HEADING, id1, ReferencesNameString);
+      wxFprintf(Chapters, _T("\\hy-%d{%ld}{%s}\n\n\n"), hyBLOCK_LARGE_VISIBLE_SECTION, id2, ReferencesNameString);
+      wxFprintf(Index, _T("%ld %ld\n"), id1, id2);
 
       SetCurrentOutput(Chapters);
       return FALSE;
@@ -840,16 +837,15 @@ bool XLPOnArgument(int macroId, int arg_no, bool start)
     {
     }
     return TRUE;
-    break;
   }
   case ltTWOCOLITEM:
   case ltTWOCOLITEMRULED:
   {
     if (start && (arg_no == 2))
-      TexOutput("\n    ");
+      TexOutput(_T("\n    "));
 
     if (!start && (arg_no == 2))
-      TexOutput("\n");
+      TexOutput(_T("\n"));
     return TRUE;
   }
   /*
@@ -860,40 +856,40 @@ bool XLPOnArgument(int macroId, int arg_no, bool start)
   {
     if (start)
     {
-      char *val = GetArgData();
+      wxChar *val = GetArgData();
       if (val)
       {
         switch (val[0])
         {
-          case 'a':
-           TexOutput("a");
+          case _T('a'):
+           TexOutput(_T("a"));
            break;
-          case 'e':
-           TexOutput("e");
+          case _T('e'):
+           TexOutput(_T("e"));
            break;
-          case 'i':
-           TexOutput("i");
+          case _T('i'):
+           TexOutput(_T("i"));
            break;
-          case 'o':
-           TexOutput("o");
+          case _T('o'):
+           TexOutput(_T("o"));
            break;
-          case 'u':
-           TexOutput("u");
+          case _T('u'):
+           TexOutput(_T("u"));
            break;
-          case 'A':
-           TexOutput("a");
+          case _T('A'):
+           TexOutput(_T("a"));
            break;
-          case 'E':
-           TexOutput("E");
+          case _T('E'):
+           TexOutput(_T("E"));
            break;
-          case 'I':
-           TexOutput("I");
+          case _T('I'):
+           TexOutput(_T("I"));
            break;
-          case 'O':
-           TexOutput("O");
+          case _T('O'):
+           TexOutput(_T("O"));
            break;
-          case 'U':
-           TexOutput("U");
+          case _T('U'):
+           TexOutput(_T("U"));
            break;
           default:
            break;
@@ -901,52 +897,51 @@ bool XLPOnArgument(int macroId, int arg_no, bool start)
       }
     }
     return FALSE;
-    break;
   }
   case ltACCENT_ACUTE:
   {
     if (start)
     {
-      char *val = GetArgData();
+      wxChar *val = GetArgData();
       if (val)
       {
         switch (val[0])
         {
-          case 'a':
-           TexOutput("a");
+          case _T('a'):
+           TexOutput(_T("a"));
            break;
-          case 'e':
-           TexOutput("e");
+          case _T('e'):
+           TexOutput(_T("e"));
            break;
-          case 'i':
-           TexOutput("i");
+          case _T('i'):
+           TexOutput(_T("i"));
            break;
-          case 'o':
-           TexOutput("o");
+          case _T('o'):
+           TexOutput(_T("o"));
            break;
-          case 'u':
-           TexOutput("u");
+          case _T('u'):
+           TexOutput(_T("u"));
            break;
-          case 'y':
-           TexOutput("y");
+          case _T('y'):
+           TexOutput(_T("y"));
            break;
-          case 'A':
-           TexOutput("A");
+          case _T('A'):
+           TexOutput(_T("A"));
            break;
-          case 'E':
-           TexOutput("E");
+          case _T('E'):
+           TexOutput(_T("E"));
            break;
-          case 'I':
-           TexOutput("I");
+          case _T('I'):
+           TexOutput(_T("I"));
            break;
-          case 'O':
-           TexOutput("O");
+          case _T('O'):
+           TexOutput(_T("O"));
            break;
-          case 'U':
-           TexOutput("U");
+          case _T('U'):
+           TexOutput(_T("U"));
            break;
-          case 'Y':
-           TexOutput("Y");
+          case _T('Y'):
+           TexOutput(_T("Y"));
            break;
           default:
            break;
@@ -954,46 +949,45 @@ bool XLPOnArgument(int macroId, int arg_no, bool start)
       }
     }
     return FALSE;
-    break;
   }
   case ltACCENT_CARET:
   {
     if (start)
     {
-      char *val = GetArgData();
+      wxChar *val = GetArgData();
       if (val)
       {
         switch (val[0])
         {
-          case 'a':
-           TexOutput("a");
+          case _T('a'):
+           TexOutput(_T("a"));
            break;
-          case 'e':
-           TexOutput("e");
+          case _T('e'):
+           TexOutput(_T("e"));
            break;
-          case 'i':
-           TexOutput("i");
+          case _T('i'):
+           TexOutput(_T("i"));
            break;
-          case 'o':
-           TexOutput("o");
+          case _T('o'):
+           TexOutput(_T("o"));
            break;
-          case 'u':
-           TexOutput("u");
+          case _T('u'):
+           TexOutput(_T("u"));
            break;
-          case 'A':
-           TexOutput("A");
+          case _T('A'):
+           TexOutput(_T("A"));
            break;
-          case 'E':
-           TexOutput("E");
+          case _T('E'):
+           TexOutput(_T("E"));
            break;
-          case 'I':
-           TexOutput("I");
+          case _T('I'):
+           TexOutput(_T("I"));
            break;
-          case 'O':
-           TexOutput("O");
+          case _T('O'):
+           TexOutput(_T("O"));
            break;
-          case 'U':
-           TexOutput("U");
+          case _T('U'):
+           TexOutput(_T("U"));
            break;
           default:
            break;
@@ -1001,37 +995,36 @@ bool XLPOnArgument(int macroId, int arg_no, bool start)
       }
     }
     return FALSE;
-    break;
   }
   case ltACCENT_TILDE:
   {
     if (start)
     {
-      char *val = GetArgData();
+      wxChar *val = GetArgData();
       if (val)
       {
         switch (val[0])
         {
-          case 'a':
-           TexOutput("a");
+          case _T('a'):
+           TexOutput(_T("a"));
            break;
-          case ' ':
-           TexOutput("~");
+          case _T(' '):
+           TexOutput(_T("~"));
            break;
-          case 'n':
-           TexOutput("n");
+          case _T('n'):
+           TexOutput(_T("n"));
            break;
-          case 'o':
-           TexOutput("o");
+          case _T('o'):
+           TexOutput(_T("o"));
            break;
-          case 'A':
-           TexOutput("A");
+          case _T('A'):
+           TexOutput(_T("A"));
            break;
-          case 'N':
-           TexOutput("N");
+          case _T('N'):
+           TexOutput(_T("N"));
            break;
-          case 'O':
-           TexOutput("O");
+          case _T('O'):
+           TexOutput(_T("O"));
            break;
           default:
            break;
@@ -1039,52 +1032,51 @@ bool XLPOnArgument(int macroId, int arg_no, bool start)
       }
     }
     return FALSE;
-    break;
   }
   case ltACCENT_UMLAUT:
   {
     if (start)
     {
-      char *val = GetArgData();
+      wxChar *val = GetArgData();
       if (val)
       {
         switch (val[0])
         {
-          case 'a':
-           TexOutput("a");
+          case _T('a'):
+           TexOutput(_T("a"));
            break;
-          case 'e':
-           TexOutput("e");
+          case _T('e'):
+           TexOutput(_T("e"));
            break;
-          case 'i':
-           TexOutput("i");
+          case _T('i'):
+           TexOutput(_T("i"));
            break;
-          case 'o':
-           TexOutput("o");
+          case _T('o'):
+           TexOutput(_T("o"));
            break;
-          case 'u':
-           TexOutput("u");
+          case _T('u'):
+           TexOutput(_T("u"));
            break;
-          case 'y':
-           TexOutput("y");
+          case _T('y'):
+           TexOutput(_T("y"));
            break;
-          case 'A':
-           TexOutput("A");
+          case _T('A'):
+           TexOutput(_T("A"));
            break;
-          case 'E':
-           TexOutput("E");
+          case _T('E'):
+           TexOutput(_T("E"));
            break;
-          case 'I':
-           TexOutput("I");
+          case _T('I'):
+           TexOutput(_T("I"));
            break;
-          case 'O':
-           TexOutput("O");
+          case _T('O'):
+           TexOutput(_T("O"));
            break;
-          case 'U':
-           TexOutput("U");
+          case _T('U'):
+           TexOutput(_T("U"));
            break;
-          case 'Y':
-           TexOutput("Y");
+          case _T('Y'):
+           TexOutput(_T("Y"));
            break;
           default:
            break;
@@ -1092,22 +1084,21 @@ bool XLPOnArgument(int macroId, int arg_no, bool start)
       }
     }
     return FALSE;
-    break;
   }
   case ltACCENT_DOT:
   {
     if (start)
     {
-      char *val = GetArgData();
+      wxChar *val = GetArgData();
       if (val)
       {
         switch (val[0])
         {
-          case 'a':
-           TexOutput("a");
+          case _T('a'):
+           TexOutput(_T("a"));
            break;
-          case 'A':
-           TexOutput("A");
+          case _T('A'):
+           TexOutput(_T("A"));
            break;
           default:
            break;
@@ -1115,22 +1106,21 @@ bool XLPOnArgument(int macroId, int arg_no, bool start)
       }
     }
     return FALSE;
-    break;
   }
   case ltACCENT_CADILLA:
   {
     if (start)
     {
-      char *val = GetArgData();
+      wxChar *val = GetArgData();
       if (val)
       {
         switch (val[0])
         {
-          case 'c':
-           TexOutput("c");
+          case _T('c'):
+           TexOutput(_T("c"));
            break;
-          case 'C':
-           TexOutput("C");
+          case _T('C'):
+           TexOutput(_T("C"));
            break;
           default:
            break;
@@ -1138,12 +1128,10 @@ bool XLPOnArgument(int macroId, int arg_no, bool start)
       }
     }
     return FALSE;
-    break;
   }
   default:
   {
     return DefaultOnArgument(macroId, arg_no, start);
-    break;
   }
   }
   return TRUE;
@@ -1155,42 +1143,42 @@ bool XLPGo(void)
 
   if (InputFile && OutputFile)
   {
-    Contents = fopen(TmpContentsName, "w");
-    Chapters = fopen("chapters.xlp", "w");
-    Sections = fopen("sections.xlp", "w");
-    Subsections = fopen("subsections.xlp", "w");
-    Subsubsections = fopen("subsubsections.xlp", "w");
-    Index = fopen("index.xlp", "w");
+    Contents = wxFopen(TmpContentsName, _T("w"));
+    Chapters = wxFopen(_T("chapters.xlp"), _T("w"));
+    Sections = wxFopen(_T("sections.xlp"), _T("w"));
+    Subsections = wxFopen(_T("subsections.xlp"), _T("w"));
+    Subsubsections = wxFopen(_T("subsubsections.xlp"), _T("w"));
+    Index = wxFopen(_T("index.xlp"), _T("w"));
 
     // Insert invisible section marker at beginning
-    fprintf(Chapters, "\\hy-%d{%ld}{%s}\n",
-                hyBLOCK_INVISIBLE_SECTION, NewBlockId(), "\n");
+    wxFprintf(Chapters, _T("\\hy-%d{%ld}{%s}\n"),
+                hyBLOCK_INVISIBLE_SECTION, NewBlockId(), _T("\n"));
 
-    fprintf(Contents, "\\hy-%d{%ld}{%s}\n\n",
+    wxFprintf(Contents, _T("\\hy-%d{%ld}{%s}\n\n"),
 //                hyBLOCK_LARGE_HEADING, NewBlockId(), "\n\n%s\n\n", ContentsNameString);
                 hyBLOCK_LARGE_HEADING, NewBlockId(), ContentsNameString);
 
     SetCurrentOutput(Chapters);
 
-    fprintf(Index, "\n\\hyindex{\n\"%s\"\n",
-             contentsString ? contentsString : "WXHELPCONTENTS");
+    wxFprintf(Index, _T("\n\\hyindex{\n\"%s\"\n"),
+             contentsString ? contentsString : _T("WXHELPCONTENTS"));
     TraverseDocument();
 
     wxNode *node = hyperLinks.GetFirst();
     while (node)
     {
       long from = node->GetKeyInteger();
-      char *label = (char *)node->GetData();
+      wxChar *label = (wxChar *)node->GetData();
       wxNode *otherNode = hyperLabels.Find(label);
       if (otherNode)
       {
         long to = (long)otherNode->GetData();
-        fprintf(Index, "%ld %ld\n", from, to);
+        wxFprintf(Index, _T("%ld %ld\n"), from, to);
       }
       node = node->GetNext();
     }
 
-    fprintf(Index, "}\n");
+    wxFprintf(Index, _T("}\n"));
 
     fclose(Contents); Contents = NULL;
     fclose(Chapters); Chapters = NULL;
@@ -1207,19 +1195,19 @@ bool XLPGo(void)
       wxRemoveFile(TmpContentsName);
     }
 
-    wxConcatFiles("chapters.xlp", "sections.xlp", "tmp2.xlp");
-    wxConcatFiles("tmp2.xlp", "subsections.xlp", "tmp1.xlp");
-    wxConcatFiles("tmp1.xlp", "subsubsections.xlp", "tmp2.xlp");
-    wxConcatFiles("tmp2.xlp", "index.xlp", OutputFile);
+    wxConcatFiles(_T("chapters.xlp"), _T("sections.xlp"), _T("tmp2.xlp"));
+    wxConcatFiles(_T("tmp2.xlp"), _T("subsections.xlp"), _T("tmp1.xlp"));
+    wxConcatFiles(_T("tmp1.xlp"), _T("subsubsections.xlp"), _T("tmp2.xlp"));
+    wxConcatFiles(_T("tmp2.xlp"), _T("index.xlp"), OutputFile);
 
-    wxRemoveFile("tmp1.xlp");
-    wxRemoveFile("tmp2.xlp");
+    wxRemoveFile(_T("tmp1.xlp"));
+    wxRemoveFile(_T("tmp2.xlp"));
 
-    wxRemoveFile("chapters.xlp");
-    wxRemoveFile("sections.xlp");
-    wxRemoveFile("subsections.xlp");
-    wxRemoveFile("subsubsections.xlp");
-    wxRemoveFile("index.xlp");
+    wxRemoveFile(_T("chapters.xlp"));
+    wxRemoveFile(_T("sections.xlp"));
+    wxRemoveFile(_T("subsections.xlp"));
+    wxRemoveFile(_T("subsubsections.xlp"));
+    wxRemoveFile(_T("index.xlp"));
     return TRUE;
   }
   return FALSE;