]> git.lyx.org Git - lyx.git/commitdiff
* src/paragraph.C: simplify another occurrence of LaTeXFeatures::isAvailable();
authorMichael Schmitt <michael.schmitt@teststep.org>
Fri, 9 Feb 2007 23:52:22 +0000 (23:52 +0000)
committerMichael Schmitt <michael.schmitt@teststep.org>
Fri, 9 Feb 2007 23:52:22 +0000 (23:52 +0000)
fix LaTeX output wrt change tracking - a file with changes and CT output disabled
should result in the same TeX file as a file with all changes accepted

git-svn-id: svn://svn.lyx.org/lyx/lyx-devel/trunk@17126 a592a061-630c-0410-9148-cb99ea01b6c8

src/paragraph.C

index 41db7e45320d5c085d8edf72b384ce5a4de24262..0f07ba64e06f5d85e3253babea754323c8918cb6 100644 (file)
@@ -964,14 +964,12 @@ bool Paragraph::simpleTeXOnePar(Buffer const & buf,
        // This must be identical to basefont in TeXOnePar().
        LyXFont basefont;
 
-       LaTeXFeatures features(buf, bparams, runparams);
-
        // output change tracking marks only if desired,
        // if dvipost is installed,
        // and with dvi/ps (other formats don't work)
        bool const output = bparams.outputChanges
                && runparams.flavor == OutputParams::LATEX
-               && features.isAvailable("dvipost");
+               && LaTeXFeatures::isAvailable("dvipost");
 
        // Maybe we have to create a optional argument.
        pos_type body_pos = beginOfBody();
@@ -1010,7 +1008,6 @@ bool Paragraph::simpleTeXOnePar(Buffer const & buf,
        // Computed only once per paragraph since bparams.encoding() is expensive
        Encoding const & doc_encoding = bparams.encoding();
        for (pos_type i = 0; i < size(); ++i) {
-               ++column;
                // First char in paragraph or after label?
                if (i == body_pos) {
                        if (body_pos > 0) {
@@ -1021,6 +1018,11 @@ bool Paragraph::simpleTeXOnePar(Buffer const & buf,
                                }
                                basefont = getLayoutFont(bparams, outerfont);
                                running_font = basefont;
+
+                               column += Changes::latexMarkChange(os,
+                                               runningChangeType, Change::UNCHANGED, output);
+                               runningChangeType = Change::UNCHANGED;
+
                                os << "}] ";
                                column +=3;
                        }
@@ -1034,6 +1036,21 @@ bool Paragraph::simpleTeXOnePar(Buffer const & buf,
                                                            runparams.moving_arg);
                }
 
+               Change::Type changeType = pimpl_->lookupChange(i).type;
+
+               // do not output text which is marked deleted
+               // if change tracking output is disabled
+               if (!output && changeType == Change::DELETED) {
+                       runningChangeType = changeType;
+                       continue;
+               }
+
+               ++column;
+               
+               column += Changes::latexMarkChange(os, runningChangeType,
+                       changeType, output);
+               runningChangeType = changeType;
+
                value_type c = getChar(i);
 
                // Fully instantiated font
@@ -1077,8 +1094,6 @@ bool Paragraph::simpleTeXOnePar(Buffer const & buf,
                                        // simpleTeXBlanks incremented i, and
                                        // simpleTeXSpecialChars would output
                                        // the combining character again.
-                                       // FIXME: change tracking
-                                       // Is this correct WRT change tracking?
                                        continue;
                        }
                }
@@ -1094,34 +1109,16 @@ bool Paragraph::simpleTeXOnePar(Buffer const & buf,
                        open_font = true;
                }
 
-               Change::Type changeType = pimpl_->lookupChange(i).type;
-
-               column += Changes::latexMarkChange(os, runningChangeType,
-                       changeType, output);
-               runningChangeType = changeType;
-
-               // do not output text which is marked deleted
-               // if change tracking output is not desired
-               if (output || runningChangeType != Change::DELETED) {
-                       // FIXME: change tracking
-                       // simpleTeXSpecialChars does not output anything if
-                       // c is a space. Is this correct WRT change tracking?
-                       OutputParams rp = runparams;
-                       rp.free_spacing = style->free_spacing;
-                       rp.local_font = &font;
-                       rp.intitle = style->intitle;
-                       pimpl_->simpleTeXSpecialChars(buf, bparams,
-                                               doc_encoding, os, texrow, rp,
-                                               font, running_font,
-                                               basefont, outerfont, open_font,
-                                               runningChangeType,
-                                               *style, i, column, c);
-               }
+               OutputParams rp = runparams;
+               rp.free_spacing = style->free_spacing;
+               rp.local_font = &font;
+               rp.intitle = style->intitle;
+               pimpl_->simpleTeXSpecialChars(buf, bparams, doc_encoding, os,
+                                       texrow, rp, font, running_font,
+                                       basefont, outerfont, open_font,
+                                       runningChangeType, *style, i, column, c);
        }
 
-       column += Changes::latexMarkChange(os,
-                       runningChangeType, Change::UNCHANGED, output);
-
        // If we have an open font definition, we have to close it
        if (open_font) {
 #ifdef FIXED_LANGUAGE_END_DETECTION
@@ -1145,6 +1142,9 @@ bool Paragraph::simpleTeXOnePar(Buffer const & buf,
 #endif
        }
 
+       column += Changes::latexMarkChange(os,
+                       runningChangeType, Change::UNCHANGED, output);
+
        // Needed if there is an optional argument but no contents.
        if (body_pos > 0 && body_pos == size()) {
                os << "}]~";