From: Juergen Spitzmueller Date: Sat, 16 Mar 2019 08:03:19 +0000 (+0100) Subject: Handle \protect'ion of label in listings X-Git-Tag: lyx-2.4.0dev-acb2ca7b~2468 X-Git-Url: https://git.lyx.org/gitweb/?a=commitdiff_plain;h=85b36769cb38d5b9a1f0f52999d23c68a9fb9759;p=features.git Handle \protect'ion of label in listings Since listings labels are passed as an argument of their own, we need to strip the \protect flag. --- diff --git a/src/insets/InsetListings.cpp b/src/insets/InsetListings.cpp index ec9ad7225f..d7fd5cdbfd 100644 --- a/src/insets/InsetListings.cpp +++ b/src/insets/InsetListings.cpp @@ -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;