void InsetCaption::write(ostream & os) const
{
os << "Caption";
- if (!type_.empty()) {
- os << " "
- << type_;
- }
- os << "\n";
+ if (!type_.empty())
+ os << ' ' << type_;
+ os << '\n';
text().write(os);
}
void InsetCaption::setCustomLabel(docstring const & label)
{
- if (!isAscii(label) || label.empty())
- // This must be a user defined layout. We cannot translate
- // this, since gettext accepts only ascii keys.
- custom_label_ = label;
- else
- custom_label_ = _(to_ascii(label));
+ custom_label_ = translateIfPossible(label);
}
Toc & toc = buffer().tocBackend().toc(floattype_);
docstring str = full_label_;
int length = output_active ? INT_MAX : TOC_ENTRY_LENGTH;
- text().forToc(str, length);
+ text().forOutliner(str, length);
toc.push_back(TocItem(pit, 0, str, output_active));
// Proceed with the rest of the inset.
switch (cmd.action()) {
case LFUN_INSET_MODIFY: {
- string const first_arg = cmd.getArg(0);
- bool const change_type = first_arg == "changetype";
- if (change_type) {
+ if (cmd.getArg(0) == "changetype") {
cur.recordUndoInset(ATOMIC_UNDO, this);
type_ = cmd.getArg(1);
cur.forceBufferUpdate();
bool varia = type != "LongTableNoNumber";
// check if the immediate parent inset allows caption variation
if (cur.depth() > 1) {
- if (&cur[cur.depth() - 2].inset())
- varia = cur[cur.depth() - 2].inset().allowsCaptionVariation(type);
+ varia = cur[cur.depth() - 2].inset().allowsCaptionVariation(type);
}
status.setEnabled(varia
&& buffer().params().documentClass().hasInsetLayout(
return InsetText::getStatus(cur, cmd, status);
}
- case LFUN_PARAGRAPH_BREAK:
- status.setEnabled(false);
- return true;
-
case LFUN_INSET_TOGGLE:
// pass back to owner
cur.undispatched();
// \caption{...}, later we will make it take advantage
// of the one of the caption packages. (Lgb)
OutputParams runparams = runparams_in;
- // FIXME: actually, it is moving only when there is no
- // optional argument.
- runparams.moving_arg = !runparams.inTableCell;
InsetText::latex(os, runparams);
+ // Backwards compatibility: We always had a linebreak after
+ // the caption (see #8514)
+ os << breakln;
runparams_in.encoding = runparams.encoding;
}
if (rp.html_disable_captions)
return docstring();
InsetLayout const & il = getLayout();
- string const tag = il.htmltag();
+ string const & tag = il.htmltag();
string attr = il.htmlattr();
if (!type_.empty()) {
string const our_class = "float-caption-" + type_;
size_t const loc = attr.find("class='");
if (loc != string::npos)
- attr.insert(loc + 1, our_class);
+ attr.insert(loc + 7, our_class+ " ");
+ else
+ attr = attr + " class='" + our_class + "'";
}
xs << html::StartTag(tag, attr);
docstring def = getCaptionAsHTML(xs, rp);
if (!il.leftdelim().empty())
os << il.leftdelim();
-
+
OutputParams rp = runparams;
if (isPassThru())
rp.pass_thru = true;
OutputParams const & runparams) const
{
xs << full_label_ << ' ';
- InsetText::XHTMLOptions const opts =
+ InsetText::XHTMLOptions const opts =
InsetText::WriteLabel | InsetText::WriteInnerTag;
return InsetText::insetAsXHTML(xs, runparams, opts);
}
master.B_(tclass.floats().getType(type).name()));
}
docstring sec;
+ docstring const lstring = getLayout().labelstring();
+ docstring const labelstring = isAscii(lstring) ?
+ master.B_(to_ascii(lstring)) : lstring;
if (cnts.hasCounter(counter)) {
- cnts.step(counter, utype);
+ // for longtables, we step the counter upstream
+ if (!cnts.isLongtable())
+ cnts.step(counter, utype);
sec = cnts.theCounter(counter, lang);
}
- if (getLayout().labelstring() != master.B_("standard")) {
+ if (labelstring != master.B_("standard")) {
if (!sec.empty())
sec += from_ascii(" ");
- sec += bformat(from_ascii("(%1$s)"), getLayout().labelstring());
+ sec += bformat(from_ascii("(%1$s)"), labelstring);
}
if (!sec.empty())
full_label_ = bformat(from_ascii("%1$s %2$s:"), name, sec);