#endif
#ifndef WX_PRECOMP
-#include "wx/wx.h"
#endif
#include "tex2any.h"
#include "tex2rtf.h"
#include "table.h"
+#if !WXWIN_COMPATIBILITY_2_4
+static inline wxChar* copystring(const wxChar* s)
+ { return wxStrcpy(new wxChar[wxStrlen(s) + 1], s); }
+#endif
+
+extern wxHashTable TexReferences;
+
+
extern void DecToHex(int, char *);
void GenerateHTMLIndexFile(char *fname);
// This is defined in the Tex2Any library.
extern char *BigBuffer;
+// DHS Two-column table dimensions.
+static int TwoColWidthA = -1;
+static int TwoColWidthB = -1;
+
+
class HyperReference: public wxObject
{
public:
{
if (*fd)
{
- fprintf(*fd, "\n</BODY></HTML>\n");
+ fprintf(*fd, "\n</FONT></BODY></HTML>\n");
fclose(*fd);
}
fileId ++;
else
sprintf(buf, "%s%d.html", FileRoot, fileId);
if (*fileName) delete[] *fileName;
- *fileName = copystring(FileNameFromPath(buf));
+ *fileName = copystring(wxFileNameFromPath(buf));
*fd = fopen(buf, "w");
fprintf(*fd, "<HTML>\n");
}
if (truncateFilenames)
{
char buf1[80];
- strcpy(buf1, ConvertCase(FileNameFromPath(FileRoot)));
+ strcpy(buf1, ConvertCase(wxFileNameFromPath(FileRoot)));
sprintf(buf, "\n<A HREF=\"%s.%s\">%s</A> ", buf1, ConvertCase("htm"), contentsReference);
}
else
{
char buf1[80];
- strcpy(buf1, ConvertCase(FileNameFromPath(FileRoot)));
+ strcpy(buf1, ConvertCase(wxFileNameFromPath(FileRoot)));
sprintf(buf, "\n<A HREF=\"%s%s\">%s</A> ", buf1, ConvertCase("_contents.html"), contentsReference);
}
// TexOutput("<NOFRAMES>");
else return NULL;
}
+void OutputFont(void)
+{
+ // Only output <font face> if explicitly requested by htmlFaceName= directive in
+ // tex2rtf.ini. Otherwise do NOT set the font because we want to use browser's
+ // default font:
+ if (htmlFaceName)
+ {
+ // Output <FONT FACE=...>
+ TexOutput("<FONT FACE=\"");
+ TexOutput(htmlFaceName);
+ TexOutput("\">\n");
+ }
+}
+
// Output start of <BODY> block
void OutputBodyStart(void)
{
}
}
TexOutput(">\n");
+
+ OutputFont();
+}
+
+void HTMLHead()
+{
+ TexOutput("<head>");
+ if (htmlStylesheet) {
+ TexOutput("<link rel=stylesheet type=\"text/css\" href=\"");
+ TexOutput(htmlStylesheet);
+ TexOutput("\">");
+ }
+};
+
+void HTMLHeadTo(FILE* f)
+{
+ if (htmlStylesheet)
+ fprintf(f,"<head><link rel=stylesheet type=\"text/css\" href=\"%s\">",htmlStylesheet);
+ else
+ fprintf(f,"<head>");
}
// Called on start/end of macro examination
SetCurrentOutput(Chapters);
- TexOutput("<head><title>");
+ HTMLHead();
+ TexOutput("<title>");
OutputCurrentSection(); // Repeat section header
TexOutput("</title></head>\n");
OutputBodyStart();
char titleBuf[200];
if (truncateFilenames)
- sprintf(titleBuf, "%s.htm", FileNameFromPath(FileRoot));
+ sprintf(titleBuf, "%s.htm", wxFileNameFromPath(FileRoot));
else
- sprintf(titleBuf, "%s_contents.html", FileNameFromPath(FileRoot));
+ sprintf(titleBuf, "%s_contents.html", wxFileNameFromPath(FileRoot));
fprintf(Chapters, "<A NAME=\"%s\"></A>", topicName);
// Add this section title to the list of keywords
if (htmlIndex)
{
- OutputCurrentSectionToString(wxBuffer);
- AddKeyWordForTopic(topicName, wxBuffer, ConvertCase(currentFileName));
+ OutputCurrentSectionToString(wxTex2RTFBuffer);
+ AddKeyWordForTopic(topicName, wxTex2RTFBuffer, ConvertCase(currentFileName));
}
}
break;
if (htmlWorkshopFiles) HTMLWorkshopAddToContents(1, topicName, SectionsName);
SetCurrentOutput(Sections);
- TexOutput("<head><title>");
+ HTMLHead();
+ TexOutput("<title>");
OutputCurrentSection();
TexOutput("</title></head>\n");
OutputBodyStart();
// Add this section title to the list of keywords
if (htmlIndex)
{
- OutputCurrentSectionToString(wxBuffer);
- AddKeyWordForTopic(topicName, wxBuffer, currentFileName);
+ OutputCurrentSectionToString(wxTex2RTFBuffer);
+ AddKeyWordForTopic(topicName, wxTex2RTFBuffer, currentFileName);
}
}
break;
if (htmlWorkshopFiles) HTMLWorkshopAddToContents(2, topicName, SubsectionsName);
SetCurrentOutput(Subsections);
- TexOutput("<head><title>");
+ HTMLHead();
+ TexOutput("<title>");
OutputCurrentSection();
TexOutput("</title></head>\n");
OutputBodyStart();
// Add this section title to the list of keywords
if (htmlIndex)
{
- OutputCurrentSectionToString(wxBuffer);
- AddKeyWordForTopic(topicName, wxBuffer, currentFileName);
+ OutputCurrentSectionToString(wxTex2RTFBuffer);
+ AddKeyWordForTopic(topicName, wxTex2RTFBuffer, currentFileName);
}
}
if (htmlWorkshopFiles) HTMLWorkshopAddToContents(3, topicName, SubsubsectionsName);
SetCurrentOutput(Subsubsections);
- TexOutput("<head><title>");
+ HTMLHead();
+ TexOutput("<title>");
OutputCurrentSection();
TexOutput("</title></head>\n");
OutputBodyStart();
// Add this section title to the list of keywords
if (htmlIndex)
{
- OutputCurrentSectionToString(wxBuffer);
- AddKeyWordForTopic(topicName, wxBuffer, currentFileName);
+ OutputCurrentSectionToString(wxTex2RTFBuffer);
+ AddKeyWordForTopic(topicName, wxTex2RTFBuffer, currentFileName);
}
}
}
if (inTabular)
{
// End cell, start cell
- TexOutput("</TD>");
+
+ TexOutput("</FONT></TD>");
// Start new row and cell, setting alignment for the first cell.
if (currentColumn < noColumns)
else
sprintf(buf, "\n<TD ALIGN=LEFT>");
TexOutput(buf);
+ OutputFont();
}
else
TexOutput("&");
else
sprintf(buf, "<TR>\n<TD ALIGN=LEFT>");
TexOutput(buf);
+ OutputFont();
}
else
{
// End cell and row
// Start new row and cell
- TexOutput("</TD>\n</TR>\n");
+ TexOutput("</FONT></TD>\n</TR>\n");
}
break;
}
{
if ( start )
TexOutput("\n<TABLE>\n");
- else
+ else {
TexOutput("\n</TABLE>\n");
+ // DHS
+ TwoColWidthA = -1;
+ TwoColWidthB = -1;
+ }
break;
}
case ltPAR:
{
if (helpRefText)
TraverseChildrenFromChunk(helpRefText);
- TexOutput(" (REF NOT FOUND)");
+ if (!ignoreBadRefs)
+ TexOutput(" (REF NOT FOUND)");
+ wxString errBuf;
+ errBuf.Printf("Warning: unresolved reference '%s'", refName);
+ OnInform((char *)errBuf.c_str());
}
}
else TexOutput("??");
{
TexOutput("<img src=\"");
TexOutput(ConvertCase(wxFileNameFromPath(inlineFilename)));
- TexOutput("\""); TexOutput(alignment); TexOutput("></A>");
+ TexOutput("\""); TexOutput(alignment); TexOutput(">");
delete[] inlineFilename;
}
}
descriptionItemArg = GetArgChunk();
return FALSE;
}
+ return TRUE;
}
case ltTWOCOLITEM:
case ltTWOCOLITEMRULED:
*/
if (arg_no == 1)
{
- if ( start )
- TexOutput("\n<TR><TD VALIGN=TOP>\n");
- else
- TexOutput("\n</TD>\n");
+ if ( start ) {
+ // DHS
+ if (TwoColWidthA > -1) {
+ char buf[100];
+ sprintf(buf,"\n<TR><TD VALIGN=TOP WIDTH=%d>\n",TwoColWidthA);
+ TexOutput(buf);
+ } else
+ TexOutput("\n<TR><TD VALIGN=TOP>\n");
+ OutputFont();
+ } else
+ TexOutput("\n</FONT></TD>\n");
}
if (arg_no == 2)
{
- if ( start )
- TexOutput("\n<TD VALIGN=TOP>\n");
- else
- TexOutput("\n</TD></TR>\n");
+ // DHS
+ if ( start ) {
+ if (TwoColWidthB > -1) {
+ char buf[100];
+ sprintf(buf,"\n<TD VALIGN=TOP WIDTH=%d>\n",TwoColWidthB);
+ TexOutput(buf);
+ } else
+ TexOutput("\n<TD VALIGN=TOP>\n");
+ OutputFont();
+ } else
+ TexOutput("\n</FONT></TD></TR>\n");
}
return TRUE;
break;
TexOutput("<HR><P>\n");
break;
}
+ // DHS
+ case ltTWOCOLWIDTHA:
+ {
+ if (start)
+ {
+ char *val = GetArgData();
+ float points = ParseUnitArgument(val);
+ TwoColWidthA = (int)((points * 100.0) / 72.0);
+ }
+ return FALSE;
+ break;
+ }
+ // DHS
+ case ltTWOCOLWIDTHB:
+ {
+ if (start)
+ {
+ char *val = GetArgData();
+ float points = ParseUnitArgument(val);
+ TwoColWidthB = (int)((points * 100.0) / 72.0);
+ }
+ return FALSE;
+ break;
+ }
/*
* Accents
*
if (compatibilityMode)
{
TexOutput("<TR>\n<TD>");
+ OutputFont();
/*
for (int i = 0; i < noColumns; i++)
{
char titleBuf[150];
if (truncateFilenames)
- sprintf(titleBuf, "%s.htm", FileNameFromPath(FileRoot));
+ sprintf(titleBuf, "%s.htm", wxFileNameFromPath(FileRoot));
else
- sprintf(titleBuf, "%s_contents.html", FileNameFromPath(FileRoot));
+ sprintf(titleBuf, "%s_contents.html", wxFileNameFromPath(FileRoot));
- TexOutput("<head><title>");
+ HTMLHead();
+ TexOutput("<title>");
TexOutput(ReferencesNameString);
TexOutput("</title></head>\n");
OutputBodyStart();
OnError("Cannot open output file!");
return FALSE;
}
- AddTexRef("contents", FileNameFromPath(TitlepageName), ContentsNameString);
+ AddTexRef("contents", wxFileNameFromPath(TitlepageName), ContentsNameString);
fprintf(Contents, "<P><P><H2>%s</H2><P><P>\n", ContentsNameString);
if (Chapters)
{
- fprintf(Chapters, "\n</BODY></HTML>\n");
+ fprintf(Chapters, "\n</FONT></BODY></HTML>\n");
fclose(Chapters);
Chapters = NULL;
}
if (Sections)
{
- fprintf(Sections, "\n</BODY></HTML>\n");
+ fprintf(Sections, "\n</FONT></BODY></HTML>\n");
fclose(Sections);
Sections = NULL;
}
if (Subsections && !combineSubSections)
{
- fprintf(Subsections, "\n</BODY></HTML>\n");
+ fprintf(Subsections, "\n</FONT></BODY></HTML>\n");
fclose(Subsections);
Subsections = NULL;
}
if (Subsubsections && !combineSubSections)
{
- fprintf(Subsubsections, "\n</BODY></HTML>\n");
+ fprintf(Subsubsections, "\n</FONT></BODY></HTML>\n");
fclose(Subsubsections);
Subsubsections = NULL;
}
if (DocumentTitle)
{
SetCurrentOutput(tmpTitle);
- TexOutput("\n<HTML>\n<HEAD><TITLE>");
+ HTMLHead();
+ TexOutput("\n<HEAD><TITLE>");
TraverseChildrenFromChunk(DocumentTitle);
TexOutput("</TITLE></HEAD>\n");
}
else
{
SetCurrentOutput(tmpTitle);
+ HTMLHeadTo(tmpTitle);
if (contentsString)
- fprintf(tmpTitle, "<HEAD><TITLE>%s</TITLE></HEAD>\n\n", contentsString);
+ fprintf(tmpTitle, "<TITLE>%s</TITLE></HEAD>\n\n", contentsString);
else
- fprintf(tmpTitle, "<HEAD><TITLE>%s</TITLE></HEAD>\n\n", FileNameFromPath(FileRoot));
+ fprintf(tmpTitle, "<TITLE>%s</TITLE></HEAD>\n\n", wxFileNameFromPath(FileRoot));
}
// Output frame information
fprintf(tmpTitle, "<FRAMESET COLS=\"30%%,70%%\">\n");
- fprintf(tmpTitle, "<FRAME SRC=\"%s\">\n", ConvertCase(FileNameFromPath(contentsFrameName)));
- fprintf(tmpTitle, "<FRAME SRC=\"%s\" NAME=\"mainwindow\">\n", ConvertCase(FileNameFromPath(firstFileName)));
+ fprintf(tmpTitle, "<FRAME SRC=\"%s\">\n", ConvertCase(wxFileNameFromPath(contentsFrameName)));
+ fprintf(tmpTitle, "<FRAME SRC=\"%s\" NAME=\"mainwindow\">\n", ConvertCase(wxFileNameFromPath(firstFileName)));
fprintf(tmpTitle, "</FRAMESET>\n");
fprintf(tmpTitle, "<NOFRAMES>\n");
fclose(fd);
}
- fprintf(tmpTitle, "\n</BODY>\n");
+ fprintf(tmpTitle, "\n</FONT></BODY>\n");
if (htmlFrameContents)
{
fprintf(tmpTitle, "\n</HTML>\n");
fclose(tmpTitle);
- if (FileExists(TitlepageName)) wxRemoveFile(TitlepageName);
+ if (wxFileExists(TitlepageName)) wxRemoveFile(TitlepageName);
if (!wxRenameFile("title.tmp", TitlepageName))
{
wxCopyFile("title.tmp", TitlepageName);
if (lastTopic) delete[] lastTopic;
lastTopic = NULL;
- if (FileExists(ContentsName)) wxRemoveFile(ContentsName);
+ if (wxFileExists(ContentsName)) wxRemoveFile(ContentsName);
if (!wxRenameFile(TmpContentsName, ContentsName))
{
"Default topic=%s\n"
"Index file=%s.hhk\n"
"Title=",
- FileNameFromPath(fname),
- FileNameFromPath(fname),
- FileNameFromPath(fname),
- FileNameFromPath(TitlepageName),
- FileNameFromPath(fname)
+ wxFileNameFromPath(fname),
+ wxFileNameFromPath(fname),
+ wxFileNameFromPath(fname),
+ wxFileNameFromPath(TitlepageName),
+ wxFileNameFromPath(fname)
);
if (DocumentTitle) {
fprintf(f, "\n\n[WINDOWS]\n"
"%sHelp=,\"%s.hhc\",\"%s.hhk\",\"%s\",,,,,,0x2420,,0x380e,,,,,0,,,",
- FileNameFromPath(fname),
- FileNameFromPath(fname),
- FileNameFromPath(fname),
- FileNameFromPath(TitlepageName));
+ wxFileNameFromPath(fname),
+ wxFileNameFromPath(fname),
+ wxFileNameFromPath(fname),
+ wxFileNameFromPath(TitlepageName));
fprintf(f, "\n\n[FILES]\n");
- fprintf(f, "%s\n", FileNameFromPath(TitlepageName));
+ fprintf(f, "%s\n", wxFileNameFromPath(TitlepageName));
for (int i = 1; i <= fileId; i++) {
if (truncateFilenames)
- sprintf(buf, "%s%d.htm", FileNameFromPath(FileRoot), i);
+ sprintf(buf, "%s%d.htm", wxFileNameFromPath(FileRoot), i);
else
- sprintf(buf, "%s%d.html", FileNameFromPath(FileRoot), i);
+ sprintf(buf, "%s%d.html", wxFileNameFromPath(FileRoot), i);
fprintf(f, "%s\n", buf);
}
fclose(f);
fprintf(f,
"<!DOCTYPE HTML PUBLIC \"-//IETF//DTD HTML//EN\">\n"
- "<HTML>\n"
- "<HEAD>\n"
+ "<HTML>\n");
+ HTMLHeadTo(f);
+ fprintf(f,
+ "\n"
"<meta name=\"GENERATOR\" content=\"tex2rtf\">\n"
"<!-- Sitemap 1.0 -->\n"
"</HEAD><BODY>\n"
fprintf(HTMLWorkshopContents,
"<!DOCTYPE HTML PUBLIC \"-//IETF//DTD HTML//EN\">\n"
- "<HTML>\n"
- "<HEAD>\n"
+ "<HTML>\n");
+ HTMLHeadTo(HTMLWorkshopContents);
+ fprintf(HTMLWorkshopContents,
+ "\n"
"<meta name=\"GENERATOR\" content=\"tex2rtf\">\n"
"<!-- Sitemap 1.0 -->\n"
"</HEAD><BODY>\n"
"<LI> <OBJECT type=\"text/sitemap\">\n"
"<param name=\"Local\" value=\"%s\">\n"
"<param name=\"Name\" value=\"Contents\">\n</OBJECT>\n",
- FileNameFromPath(TitlepageName)
+ wxFileNameFromPath(TitlepageName)
);
}