]> git.lyx.org Git - lyx.git/blobdiff - src/Paragraph.cpp
Limit the nopassthurchars case in beamer to URL
[lyx.git] / src / Paragraph.cpp
index 0dee0af3aea222ce0d8fb36531d1bc2fe47bda04..a63017db328bc0c549c6f8a938719ffcb60de211 100644 (file)
@@ -1174,6 +1174,7 @@ void Paragraph::Private::latexInset(BufferParams const & bparams,
                          && !textinset->text().isMainText()
                          && inset->lyxCode() != BRANCH_CODE
                          && !runparams.no_cprotect
+                         && !inset->getLayout().noCProtect()
                        : false;
                unsigned int count2 = basefont.latexWriteStartChanges(os, bparams,
                                                      rp, running_font,
@@ -1242,11 +1243,13 @@ void Paragraph::Private::latexSpecialChar(otexstream & os,
 {
        char_type const c = owner_->getUChar(bparams, runparams, i);
 
-       // Special case: URLs with hyperref need to escape backslash (#13012).
+       // Special case: URLs with hyperref need to escape backslash, # and % (#13012).
        // Both a layout tag and a dedicated inset seem too much effort for this.
-       if (c == '\\' && runparams.use_hyperref && il.latexname() == "url"
+       string const hr_url_escape_chars = "\\#%";
+       if (contains(hr_url_escape_chars, c) && runparams.use_hyperref && il.latexname() == "url"
            && il.required().find("url") != il.required().end()) {
-               os << "\\\\";
+               os << "\\";
+               os.put(c);
                return;
        }