]> git.lyx.org Git - lyx.git/blobdiff - src/insets/InsetCaption.cpp
Properly terminate command
[lyx.git] / src / insets / InsetCaption.cpp
index 5f7978ab3288f2206f6e509c9cf5f6585e81b123..941047f337ecb055aa39819919259a941ae2f073 100644 (file)
@@ -264,7 +264,16 @@ void InsetCaption::latex(otexstream & os,
        // \caption{...}, later we will make it take advantage
        // of the one of the caption packages. (Lgb)
        OutputParams runparams = runparams_in;
+       // Some fragile commands (labels, index entries)
+       // are output after the caption (#2154)
+       runparams.postpone_fragile_stuff = true;
        InsetText::latex(os, runparams);
+       if (!runparams.post_macro.empty()) {
+               // Output the stored fragile commands (labels, indices etc.)
+               // that need to be output after the caption.
+               os << runparams.post_macro;
+               runparams.post_macro.clear();
+       }
        // Backwards compatibility: We always had a linebreak after
        // the caption (see #8514)
        os << breakln;
@@ -329,6 +338,8 @@ void InsetCaption::getArgument(otexstream & os,
                rp.pass_thru = true;
        if (il.isNeedProtect())
                rp.moving_arg = true;
+       if (il.isNeedMBoxProtect())
+               ++rp.inulemcmd;
        rp.par_begin = 0;
        rp.par_end = paragraphs().size();
 
@@ -388,7 +399,8 @@ void InsetCaption::updateBuffer(ParIterator const & it, UpdateType utype)
                else
                        name = master.B_(tclass.floats().getType(type).name());
                docstring counter = from_utf8(type);
-               if ((is_subfloat_ = cnts.isSubfloat())) {
+               is_subfloat_ = cnts.isSubfloat();
+               if (is_subfloat_) {
                        // only standard captions allowed in subfloats
                        type_ = "Standard";
                        counter = "sub-" + from_utf8(type);