Largely successful attempts to get better spacing

in RTF. This may temporarily break WinHelp RTF but the priority
right now is Word RTF.


git-svn-id: https://svn.wxwidgets.org/svn/wx/wxWidgets/trunk@25908 c3d73ce0-8a6f-49c7-b76d-6d57e0e08775
This commit is contained in:
Julian Smart
2004-02-21 23:37:01 +00:00
parent 9457cf684e
commit 40126b09cc
2 changed files with 94 additions and 43 deletions

View File

@@ -429,22 +429,22 @@ void WriteHeadingStyle(FILE *fd, int heading)
{
case 1:
{
wxFprintf(fd, _T("\\b\\fs%d"), chapterFont*2);
wxFprintf(fd, _T("\\sb300\\sa260\\f2\\b\\fs%d"), chapterFont*2);
break;
}
case 2:
{
wxFprintf(fd, _T("\\b\\fs%d"), sectionFont*2);
wxFprintf(fd, _T("\\sb200\\sa240\\f2\\b\\fs%d"), sectionFont*2);
break;
}
case 3:
{
wxFprintf(fd, _T("\\b\\fs%d"), subsectionFont*2);
wxFprintf(fd, _T("\\sb120\\sa240\\f2\\b\\fs%d"), subsectionFont*2);
break;
}
case 4:
{
wxFprintf(fd, _T("\\b\\fs%d"), subsectionFont*2);
wxFprintf(fd, _T("\\sb120\\sa240\\f2\\b\\fs%d"), subsectionFont*2);
break;
}
default:
@@ -460,12 +460,17 @@ void WriteRTFHeader(FILE *fd)
/*
* Style sheet
*/
wxFprintf(fd, _T("{\\stylesheet{\\f2\\fs20 \\snext0 Normal;}\n"));
wxFprintf(fd, _T("{\\stylesheet{\\f2\\fs22\\sa200 \\snext0 Normal;}\n"));
// Headings
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"));
// Code style
wxFprintf(fd, _T("{\\s10\\ql \\li720\\ri0\\nowidctlpar\\faauto\\rin0\\lin720\\itap0 \\cbpat17\
\\f2\\fs20 \\sbasedon0 \\snext24 Code;}\n"));
// Table of contents styles
wxFprintf(fd, _T("{\\s20\\sb300\\tqr\\tldot\\tx8640 \\b\\f2 \\sbasedon0\\snext0 toc 1;}\n"));
@@ -603,6 +608,7 @@ void ProcessText2RTF(TexChunk *chunk)
if (inVerbatim)
{
BigBuffer[ptr] = 0; wxStrcat(BigBuffer, _T("\\par\n")); ptr += 5;
// BigBuffer[ptr] = 0; wxStrcat(BigBuffer, _T("\\par{\\v this was verbatim}\n")); ptr += 5;
i ++;
changed = TRUE;
}
@@ -1221,9 +1227,10 @@ void RTFOnMacro(int macroId, int no_args, bool start)
}
}
OutputCurrentSection();
TexOutput(_T("\\par\\pard}\\par\n"));
TexOutput(_T("\\par\\pard}\n"));
}
issuedNewParagraph = 2;
issuedNewParagraph = 1;
WriteEnvironmentStyles();
}
break;
}
@@ -1409,9 +1416,12 @@ void RTFOnMacro(int macroId, int no_args, bool start)
}
}
OutputCurrentSection();
TexOutput(_T("\\par\\pard}\\par\n"));
TexOutput(_T("\\par\\pard}\n"));
// TexOutput(_T("\\par\\pard}\\par\n"));
}
issuedNewParagraph = 2;
issuedNewParagraph = 1;
WriteEnvironmentStyles();
// issuedNewParagraph = 2;
}
break;
}
@@ -1469,8 +1479,11 @@ void RTFOnMacro(int macroId, int no_args, bool start)
if (!InPopups())
wxFprintf(Subsections, _T("\\page\n"));
}
// Experimental JACS 2004-02-21
#if 0
else
wxFprintf(Chapters, _T("\\par\n"));
#endif
}
startedSections = TRUE;
@@ -1562,9 +1575,13 @@ void RTFOnMacro(int macroId, int no_args, bool start)
}
}
OutputCurrentSection(); // Repeat section header
TexOutput(_T("\\par\\pard}\\par\n"));
// Experimental JACS
TexOutput(_T("\\par\\pard}\n"));
// TexOutput(_T("\\par\\pard}\\par\n"));
}
issuedNewParagraph = 2;
issuedNewParagraph = 1;
WriteEnvironmentStyles();
}
}
break;
@@ -1619,8 +1636,11 @@ void RTFOnMacro(int macroId, int no_args, bool start)
{
if (winHelp)
wxFprintf(Subsubsections, _T("\\page\n"));
// Experimental JACS 2004-02-21
#if 0
else
wxFprintf(Chapters, _T("\\par\n"));
#endif
}
startedSections = TRUE;
@@ -1705,9 +1725,11 @@ void RTFOnMacro(int macroId, int no_args, bool start)
}
}
OutputCurrentSection(); // Repeat section header
TexOutput(_T("\\par\\pard}\\par\n"));
issuedNewParagraph = 2;
// if (winHelp) TexOutput(_T("\\pard"));
TexOutput(_T("\\par\\pard}\n"));
issuedNewParagraph = 1;
WriteEnvironmentStyles();
// TexOutput(_T("\\par\\pard}\\par\n"));
// issuedNewParagraph = 2;
}
}
break;
@@ -1943,7 +1965,7 @@ void RTFOnMacro(int macroId, int no_args, bool start)
{
if (start)
{
if (inVerbatim)
if (TRUE) // (inVerbatim)
TexOutput(_T("~"));
else
TexOutput(_T(" "));
@@ -1998,8 +2020,11 @@ void RTFOnMacro(int macroId, int no_args, bool start)
{
if (indentLevel > 0)
{
TexOutput(_T("\\par\\par\n"));
issuedNewParagraph = 2;
// Experimental JACS 2004-02-21
TexOutput(_T("\\par\n"));
issuedNewParagraph = 1;
// TexOutput(_T("\\par\\par\n"));
// issuedNewParagraph = 2;
}
else
{
@@ -2034,7 +2059,7 @@ void RTFOnMacro(int macroId, int no_args, bool start)
ItemizeStruc *struc = new ItemizeStruc(listType, indentSize2, indentSize1);
itemizeStack.Insert(struc);
wxSprintf(buf, _T("\\tx%d\\tx%d\\li%d"), indentSize1, indentSize2, indentSize2);
wxSprintf(buf, _T("\\tx%d\\tx%d\\li%d\\sa200"), indentSize1, indentSize2, indentSize2);
PushEnvironmentStyle(buf);
}
else
@@ -2076,7 +2101,7 @@ void RTFOnMacro(int macroId, int no_args, bool start)
itemizeStack.Insert(struc);
// wxSprintf(buf, _T("\\tx%d\\li%d\\ri%d"), indentSize, indentSize, TwoColWidthA+TwoColWidthB+oldIndent);
wxSprintf(buf, _T("\\tx%d\\li%d"), indentSize, indentSize);
wxSprintf(buf, _T("\\tx%d\\li%d\\sa200"), indentSize, indentSize);
PushEnvironmentStyle(buf);
}
else
@@ -2095,12 +2120,16 @@ void RTFOnMacro(int macroId, int no_args, bool start)
WriteEnvironmentStyles();
*/
/* why do we need this? */
// Experimental
TexOutput(_T("\\pard\n"));
#if 0
if (itemizeStack.GetCount() == 0)
{
issuedNewParagraph = 0;
OnMacro(ltPAR, 0, TRUE);
OnMacro(ltPAR, 0, FALSE);
}
#endif
}
break;
}
@@ -2119,12 +2148,14 @@ void RTFOnMacro(int macroId, int no_args, bool start)
int indentSize2 = struc->indentation;
TexOutput(_T("\n"));
if (struc->currentItem > 1)
if (struc->currentItem > 1 && issuedNewParagraph == 0)
{
if (currentItemSep > 0)
TexOutput(_T("\\par"));
// JACS
// if (currentItemSep > 0)
// TexOutput(_T("\\par"));
TexOutput(_T("\\par"));
issuedNewParagraph = 1;
// WriteEnvironmentStyles();
}
@@ -2212,6 +2243,8 @@ void RTFOnMacro(int macroId, int no_args, bool start)
oldIndent = ((ItemizeStruc *)node2->GetData())->indentation;
TexOutput(_T("\n"));
// JACS
#if 0
if (struc->currentItem > 1)
{
if (currentItemSep > 0)
@@ -2219,6 +2252,7 @@ void RTFOnMacro(int macroId, int no_args, bool start)
// WriteEnvironmentStyles();
}
#endif
// wxSprintf(buf, _T("\\tx%d\\li%d\\fi-%d\\ri%d\n"), TwoColWidthA,
// TwoColWidthA, TwoColWidthA, TwoColWidthA+TwoColWidthB+oldIndent);
@@ -2238,6 +2272,8 @@ void RTFOnMacro(int macroId, int no_args, bool start)
{
if (start)
{
// JACS
#if 0
if (macroId == ltVERBATIM)
{
if (!issuedNewParagraph)
@@ -2248,7 +2284,12 @@ void RTFOnMacro(int macroId, int no_args, bool start)
}
else issuedNewParagraph = 0;
}
wxSprintf(buf, _T("{\\f3\\fs20 "));
#endif
if (macroId == ltVERBATIM)
wxSprintf(buf, _T("{\\f3\\s10\\fs20\\li720\\sa0 "));
else
wxSprintf(buf, _T("{\\f3\\fs20 "));
TexOutput(buf);
}
else
@@ -2257,8 +2298,12 @@ void RTFOnMacro(int macroId, int no_args, bool start)
if (macroId == ltVERBATIM)
{
TexOutput(_T("\\pard\n"));
// issuedNewParagraph = 1;
WriteEnvironmentStyles();
// JACS
#if 0
TexOutput(_T("\\par\n"));
issuedNewParagraph = 1;
#endif
}
}
break;
@@ -2268,9 +2313,9 @@ void RTFOnMacro(int macroId, int no_args, bool start)
{
if (start)
{
TexOutput(_T("\\fi0\\qc "));
TexOutput(_T("\\qc "));
forbidParindent ++;
PushEnvironmentStyle(_T("\\qc"));
PushEnvironmentStyle(_T("\\qc\\sa200"));
}
else
{
@@ -2286,7 +2331,7 @@ void RTFOnMacro(int macroId, int no_args, bool start)
{
if (start)
{
TexOutput(_T("\\fi0\\ql "));
TexOutput(_T("\\ql\\sa200 "));
forbidParindent ++;
PushEnvironmentStyle(_T("\\ql"));
}
@@ -2304,7 +2349,7 @@ void RTFOnMacro(int macroId, int no_args, bool start)
{
if (start)
{
TexOutput(_T("\\fi0\\qr "));
TexOutput(_T("\\qr\\sa200 "));
forbidParindent ++;
PushEnvironmentStyle(_T("\\qr"));
}
@@ -2526,9 +2571,11 @@ void RTFOnMacro(int macroId, int no_args, bool start)
{
TexOutput(_T("\\par\\pard"));
issuedNewParagraph ++;
// Extra par if parskip is more than zero (usually looks best.)
if (!inTabular && (ParSkip > 0))
// N.B. JACS 2004-02-21: shouldn't need this for linear RTF if
// we have a suitable set of styles.
if (winHelp && !inTabular && (ParSkip > 0))
{
TexOutput(_T("\\par"));
issuedNewParagraph ++;
@@ -2543,7 +2590,7 @@ void RTFOnMacro(int macroId, int no_args, bool start)
// and ParSkip == 0.
// Extra par if parskip is more than zero (usually looks best.)
if (!inTabular && (ParSkip > 0))
if (winHelp && !inTabular && (ParSkip > 0))
{
TexOutput(_T("\\par"));
issuedNewParagraph ++;
@@ -3707,7 +3754,7 @@ bool RTFOnArgument(int macroId, int arg_no, bool start)
{
TexOutput(_T("\\li360\n"));
forbidParindent ++;
PushEnvironmentStyle(_T("\\li360"));
PushEnvironmentStyle(_T("\\li360\\sa200"));
}
else
{
@@ -3723,7 +3770,7 @@ bool RTFOnArgument(int macroId, int arg_no, bool start)
if (start)
{
TexOutput(_T("\\li360\n"));
PushEnvironmentStyle(_T("\\li360"));
PushEnvironmentStyle(_T("\\li360\\sa200"));
}
else
{
@@ -3741,7 +3788,7 @@ bool RTFOnArgument(int macroId, int arg_no, bool start)
{
if (start)
{
wxSprintf(buf, _T("\\box\\trgaph108%s\n"), ((macroId == ltNORMALBOXD) ? _T("\\brdrdb") : _T("\\brdrs")));
wxSprintf(buf, _T("\\sa200\\box\\trgaph108%s\n"), ((macroId == ltNORMALBOXD) ? _T("\\brdrdb") : _T("\\brdrs")));
TexOutput(buf);
PushEnvironmentStyle(buf);
}
@@ -4496,8 +4543,8 @@ bool RTFOnArgument(int macroId, int arg_no, bool start)
{
if (winHelp)
{
TexOutput(_T("\\box\n"));
PushEnvironmentStyle(_T("\\box"));
TexOutput(_T("\\sa200\\box\n"));
PushEnvironmentStyle(_T("\\sa200\\box"));
}
else
{
@@ -4526,8 +4573,8 @@ bool RTFOnArgument(int macroId, int arg_no, bool start)
{
if (winHelp)
{
TexOutput(_T("\\box\n"));
PushEnvironmentStyle(_T("\\box"));
TexOutput(_T("\\sa200\\box\n"));
PushEnvironmentStyle(_T("\\sa200\\box"));
}
else
{
@@ -4687,7 +4734,7 @@ bool RTFOnArgument(int macroId, int arg_no, bool start)
ItemizeStruc *struc = new ItemizeStruc(LATEX_INDENT, indentSize);
itemizeStack.Insert(struc);
wxSprintf(buf, _T("\\tx%d\\li%d "), indentSize, indentSize);
wxSprintf(buf, _T("\\tx%d\\li%d\\sa200 "), indentSize, indentSize);
PushEnvironmentStyle(buf);
TexOutput(buf);
return FALSE;
@@ -4730,7 +4777,7 @@ bool RTFOnArgument(int macroId, int arg_no, bool start)
ItemizeStruc *struc = new ItemizeStruc(LATEX_INDENT, indentSize);
itemizeStack.Insert(struc);
wxSprintf(buf, _T("\\tx%d\\li%d\\lr%d\\box%s "), indentSize, indentSize, indentSizeRight,
wxSprintf(buf, _T("\\tx%d\\li%d\\lr%d\\sa200\\box%s "), indentSize, indentSize, indentSizeRight,
((macroId == ltCENTEREDBOX) ? _T("\\brdrs") : _T("\\brdrdb")));
PushEnvironmentStyle(buf);
TexOutput(buf);
@@ -5154,8 +5201,10 @@ bool RTFGo(void)
wxFprintf(Contents, _T("{\\b\\fs%d %s}\\par\\par\\pard\n\n"),
(winHelp ? titleFont : chapterFont)*2, ContentsNameString);
// By default, Swiss, 10 point.
wxFprintf(Chapters, _T("\\f2\\fs20\n"));
// By default, Swiss, 11 point.
wxFprintf(Chapters, _T("\\f2\\fs22\n"));
PushEnvironmentStyle(_T("\\f2\\fs22\\sa200"));
SetCurrentOutput(Chapters);
@@ -5174,6 +5223,8 @@ bool RTFGo(void)
}
WriteRTFHeader(Header);
fclose(Header);
PopEnvironmentStyle();
Tex2RTFYield(TRUE);
if (winHelp)