]> git.lyx.org Git - lyx.git/blobdiff - src/insets/InsetListings.cpp
de.po
[lyx.git] / src / insets / InsetListings.cpp
index ec9ad7225f37254683f45ba25fcc7fa4851d2c7a..b50e92623e4489181489cbf73f23737aa85be4f5 100644 (file)
@@ -123,8 +123,7 @@ Encoding const * InsetListings::forcedEncoding(Encoding const * inner_enc,
                                               Encoding const * outer_enc) const
 {
        // The listings package cannot deal with multi-byte-encoded
-       // glyphs, except if full-unicode aware backends
-       // such as XeTeX or LuaTeX are used, and with pLaTeX.
+       // glyphs, except for Xe/LuaTeX (with non-TeX fonts) or pLaTeX.
        // Minted can deal with all encodings.
        if (buffer().params().use_minted
                || inner_enc->name() == "utf8-plain"
@@ -135,6 +134,8 @@ Encoding const * InsetListings::forcedEncoding(Encoding const * inner_enc,
 
        // We try if there's a singlebyte encoding for the outer
        // language; if not, fall back to latin1.
+       // Power-users can set inputenc to utf8-plain to bypass this workaround
+       // and provide alternatives in the user-preamble.
        return (outer_enc->hasFixedWidth()) ?
                        outer_enc : encodings.fromLyXName("iso8859-1");
 }
@@ -540,12 +541,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;