diff --git a/lib/layouts/beamer.layout b/lib/layouts/beamer.layout index 58caf67c7d..8b9f1b2f69 100644 --- a/lib/layouts/beamer.layout +++ b/lib/layouts/beamer.layout @@ -1576,6 +1576,7 @@ InsetLayout Flex:Only EndArgument ResetsFont true CustomPars false + NeedCProtect -1 End InsetLayout Flex:Uncover @@ -1597,6 +1598,7 @@ InsetLayout Flex:Uncover EndArgument ResetsFont true CustomPars false + NeedCProtect -1 End InsetLayout Flex:Visible @@ -1618,6 +1620,7 @@ InsetLayout Flex:Visible EndArgument ResetsFont true CustomPars false + NeedCProtect -1 End InsetLayout Flex:Invisible @@ -1639,6 +1642,7 @@ InsetLayout Flex:Invisible EndArgument ResetsFont true CustomPars false + NeedCProtect -1 End InsetLayout Flex:Alternative @@ -1666,6 +1670,7 @@ InsetLayout Flex:Alternative EndArgument ResetsFont true CustomPars false + NeedCProtect -1 End InsetLayout Flex:Beamer_Note @@ -1701,6 +1706,7 @@ InsetLayout Flex:ArticleMode LabelString Article MultiPar true ResetsFont true + NeedCProtect -1 End InsetLayout Flex:PresentationMode @@ -1712,6 +1718,7 @@ InsetLayout Flex:PresentationMode LabelString Presentation MultiPar true ResetsFont true + NeedCProtect -1 End diff --git a/src/insets/InsetLayout.cpp b/src/insets/InsetLayout.cpp index 8e5ed651cf..b4c7dc4eee 100644 --- a/src/insets/InsetLayout.cpp +++ b/src/insets/InsetLayout.cpp @@ -400,9 +400,17 @@ bool InsetLayout::read(Lexer & lex, TextClass const & tclass, case IL_NEEDPROTECT: lex >> needprotect_; break; - case IL_NEEDCPROTECT: - lex >> needcprotect_; + case IL_NEEDCPROTECT: { + string val; + lex >> val; + nocprotect_ = false; + needcprotect_ = false; + if (val == "-1") + nocprotect_ = true; + else if (val == "1" || val == "true") + needcprotect_ = true; break; + } case IL_NEEDMBOXPROTECT: lex >> needmboxprotect_; break; diff --git a/src/insets/InsetLayout.h b/src/insets/InsetLayout.h index 6700100252..ee5d4afefa 100644 --- a/src/insets/InsetLayout.h +++ b/src/insets/InsetLayout.h @@ -221,6 +221,8 @@ public: bool isNeedProtect() const { return needprotect_; } /// bool needsCProtect() const { return needcprotect_; } + /// + bool noCProtect() const { return nocprotect_; } /// Protection of some elements such as \ref and \cite /// in \mbox (needed by commands building on soul or ulem) bool isNeedMBoxProtect() const { return needmboxprotect_; } @@ -415,6 +417,8 @@ private: /// bool needcprotect_ = false; /// + bool nocprotect_ = false; + /// bool needmboxprotect_ = false; /// should the contents be written to TOC strings? bool intoc_ = false; diff --git a/src/insets/InsetText.cpp b/src/insets/InsetText.cpp index 9a60f4d855..5552d479be 100644 --- a/src/insets/InsetText.cpp +++ b/src/insets/InsetText.cpp @@ -549,6 +549,8 @@ void InsetText::latex(otexstream & os, OutputParams const & runparams) const ++rp.inulemcmd; if (!il.passThruChars().empty()) rp.pass_thru_chars += il.passThruChars(); + if (il.noCProtect()) + rp.no_cprotect = true; if (!il.newlineCmd().empty()) rp.newlinecmd = il.newlineCmd(); rp.par_begin = 0;