+void InsetLabel::latex(otexstream & os, OutputParams const & runparams_in) const
+{
+ OutputParams runparams = runparams_in;
+ docstring command = getCommand(runparams);
+ docstring const label = getParam("name");
+ if (buffer().params().output_changes
+ && buffer().activeLabel(label)
+ && buffer().insetLabel(label, true) != this) {
+ // this is a deleted label and we have a non-deleted with the same id
+ // rename it for output to prevent wrong references
+ docstring newlabel = label;
+ int i = 1;
+ while (buffer().insetLabel(newlabel)) {
+ newlabel = label + "-DELETED-" + convert<docstring>(i);
+ ++i;
+ }
+ command = subst(command, label, newlabel);
+ }
+ // In macros with moving arguments, such as \section,
+ // we store the label and output it after the macro (#2154)
+ if (runparams_in.postpone_fragile_stuff)
+ runparams_in.post_macro += command;
+ else {
+ // protect label in moving argument (#9404),
+ // but not in subfloat caption (#11950)
+ if (runparams.moving_arg
+ && runparams.inFloat != OutputParams::SUBFLOAT)
+ os << "\\protect";
+ os << command;
+ }
+}
+
+
+int InsetLabel::plaintext(odocstringstream & os,
+ OutputParams const &, size_t) const