]> git.lyx.org Git - lyx.git/commitdiff
Amend 9de9ec1e88fab
authorJuergen Spitzmueller <spitz@lyx.org>
Mon, 30 Oct 2023 11:17:14 +0000 (12:17 +0100)
committerJuergen Spitzmueller <spitz@lyx.org>
Mon, 30 Oct 2023 11:17:14 +0000 (12:17 +0100)
When setting halfline parskip with parskip provided, we still need
to set this explicitly, as we don't know the current \parskip value.

Also improve code readability.

src/BufferParams.cpp

index 22f865458efa86f461e06f78cfee6a0080d4608c..5ea6e15677e4f81ecfae54fac3e55259e88e1b50 100644 (file)
@@ -2153,6 +2153,7 @@ bool BufferParams::writeLaTeX(otexstream & os, LaTeXFeatures & features,
        if (paragraph_separation) {
                // when skip separation
                string psopt;
+               bool default_skip = false;
                switch (getDefSkip().kind()) {
                case VSpace::SMALLSKIP:
                        psopt = "\\smallskipamount";
@@ -2165,6 +2166,7 @@ bool BufferParams::writeLaTeX(otexstream & os, LaTeXFeatures & features,
                        break;
                case VSpace::HALFLINE:
                        // default (no option)
+                       default_skip = true;
                        break;
                case VSpace::FULLLINE:
                        psopt = "\\baselineskip";
@@ -2175,12 +2177,20 @@ bool BufferParams::writeLaTeX(otexstream & os, LaTeXFeatures & features,
                default:
                        break;
                }
-               if (!features.isProvided("parskip")) {
+               if (features.isProvided("parskip")) {
+                       // package already loaded (with arbitrary options)
+                       // change parskip value only
+                       if (!psopt.empty())
+                               os << "\\setlength{\\parskip}{" + psopt + "}\n";
+                       else if (default_skip)
+                               // explicitly reset default (might have been changed
+                               // in a class or package)
+                               os << "\\parskip=.5\\baselineskip plus 2pt\\relax\n";
+               } else {
+                       // load parskip package with required option
                        if (!psopt.empty())
                                psopt = "[skip=" + psopt + "]";
                        os << "\\usepackage" + psopt + "{parskip}\n";
-               } else if (!psopt.empty()) {
-                       os << "\\setlength{\\parskip}{" + psopt + "}\n";
                }
        } else {
                // when separation by indentation