]> git.lyx.org Git - features.git/commitdiff
Handle \protect'ion of label in listings
authorJuergen Spitzmueller <spitz@lyx.org>
Sat, 16 Mar 2019 08:03:19 +0000 (09:03 +0100)
committerJuergen Spitzmueller <spitz@lyx.org>
Sat, 16 Mar 2019 08:05:04 +0000 (09:05 +0100)
Since listings labels are passed as an argument of their own, we need
to strip the \protect flag.

src/insets/InsetListings.cpp

index ec9ad7225f37254683f45ba25fcc7fa4851d2c7a..d7fd5cdbfddbb4a7fad4f194c7347902f8df0932 100644 (file)
@@ -540,12 +540,15 @@ TexString InsetListings::getCaption(OutputParams const & runparams) const
        // NOTE that } is not allowed in blah2.
        regex const reg("(.*)\\\\label\\{(.*?)\\}(.*)");
        string const new_cap("$1$3},label={$2");
+       // Remove potential \protect'ion of \label.
+       docstring capstr = subst(cap.str, from_ascii("\\protect\\label"),
+                                from_ascii("\\label"));
        // TexString validity: the substitution preserves the number of newlines.
        // Moreover we assume that $2 does not contain newlines, so that the texrow
        // information remains accurate.
        // Replace '\n' with an improbable character from Private Use Area-A
        // and then return to '\n' after the regex replacement.
-       docstring const capstr = subst(cap.str, char_type('\n'), 0xffffd);
+       capstr = subst(capstr, char_type('\n'), 0xffffd);
        cap.str = subst(from_utf8(regex_replace(to_utf8(capstr), reg, new_cap)),
                        0xffffd, char_type('\n'));
        return cap;