X-Git-Url: https://git.saurik.com/wxWidgets.git/blobdiff_plain/3924dd226e469685d02fc2474a3fb149b1aeed2a..1af5934b54a758ad09bd17c13f0d3d2a38d16a77:/utils/tex2rtf/src/rtfutils.cpp diff --git a/utils/tex2rtf/src/rtfutils.cpp b/utils/tex2rtf/src/rtfutils.cpp index 60e31552e8..3e0d934b9e 100644 --- a/utils/tex2rtf/src/rtfutils.cpp +++ b/utils/tex2rtf/src/rtfutils.cpp @@ -59,10 +59,8 @@ extern char *RTFCharset; // This is defined in the Tex2Any library and isn't in use after parsing extern char *BigBuffer; - extern wxHashTable TexReferences; - // Are we in verbatim mode? If so, format differently. static bool inVerbatim = FALSE; @@ -95,6 +93,8 @@ static int TwoColWidthB = 3000; const int PageWidth = 12242; // 8.25 inches wide for A4 +// Remember the anchor in a helpref +static TexChunk *helpRefText = NULL; /* * Flag to say we've just issued a \par\pard command, so don't @@ -667,7 +667,7 @@ void ProcessText2RTF(TexChunk *chunk) i += 1; changed = TRUE; } - else if (inVerbatim && (ch == '{' || ch == '}')) // Escape the curly bracket + else if (inVerbatim && (ch == '{' || ch == '}')) // Escape the curley bracket { BigBuffer[ptr] = '\\'; ptr ++; BigBuffer[ptr] = ch; ptr ++; @@ -3343,46 +3343,61 @@ bool RTFOnArgument(int macroId, int arg_no, bool start) TexOutput("{\\i "); else TexOutput("}"); + + if (start) + helpRefText = GetArgChunk(); + return TRUE; } else if ((GetNoArgs() - arg_no) == 0) // Arg = 2, or 3 if first is optional { if (macroId != ltHELPREFN) { + char *refName = GetArgData(); + TexRef *texRef = NULL; + if (refName) + texRef = FindReference(refName); if (start) { - TexOutput(" ("); - char *refName = GetArgData(); + if (texRef || !ignoreBadRefs) + TexOutput(" ("); if (refName) { - if (useWord) - { - char *s = GetArgData(); - TexOutput("p. "); - TexOutput("{\\field{\\*\\fldinst PAGEREF "); - TexOutput(refName); - TexOutput(" \\\\* MERGEFORMAT }{\\fldrslt ??}}"); - } - else + if (texRef || !ignoreBadRefs) { - // Only print section name if we're not in Word mode, - // so can't do page references - TexRef *texRef = FindReference(refName); - if (texRef) + if (useWord) { - TexOutput(texRef->sectionName) ; TexOutput(" "); TexOutput(texRef->sectionNumber); + char *s = GetArgData(); + TexOutput("p. "); + TexOutput("{\\field{\\*\\fldinst PAGEREF "); + TexOutput(refName); + TexOutput(" \\\\* MERGEFORMAT }{\\fldrslt ??}}"); } else { - TexOutput("??"); - sprintf(buf, "Warning: unresolved reference %s.", refName); - OnInform(buf); + // Only print section name if we're not in Word mode, + // so can't do page references + if (texRef) + { + TexOutput(texRef->sectionName) ; TexOutput(" "); TexOutput(texRef->sectionNumber); + } + else + { + if (!ignoreBadRefs) + TexOutput("??"); + sprintf(buf, "Warning: unresolved reference '%s'", refName); + OnInform(buf); + } } } } else TexOutput("??"); } - else TexOutput(")"); + else + { + if (texRef || !ignoreBadRefs) + TexOutput(")"); + } } return FALSE; } @@ -5090,6 +5105,9 @@ bool RTFOnArgument(int macroId, int arg_no, bool start) bool RTFGo(void) { + if (stopRunning) + return FALSE; + // Reset variables indentLevel = 0; forbidParindent = 0; @@ -5164,6 +5182,9 @@ bool RTFGo(void) SetCurrentOutput(Chapters); + if (stopRunning) + return FALSE; + OnInform("Converting..."); TraverseDocument();