Longtable: only output the caption contents in a caption row.

Fixes: #10791
This commit is contained in:
Juergen Spitzmueller 2017-11-20 10:59:09 +01:00
parent 9135eab226
commit 538b38f78c

View File

@ -33,6 +33,7 @@
#include "DispatchResult.h" #include "DispatchResult.h"
#include "FuncRequest.h" #include "FuncRequest.h"
#include "FuncStatus.h" #include "FuncStatus.h"
#include "InsetIterator.h"
#include "InsetList.h" #include "InsetList.h"
#include "Language.h" #include "Language.h"
#include "LaTeXFeatures.h" #include "LaTeXFeatures.h"
@ -2652,6 +2653,17 @@ void Tabular::TeXRow(otexstream & os, row_type row,
tail.setMacrocontextPositionRecursive(dit); tail.setMacrocontextPositionRecursive(dit);
tail.latex(os, newrp); tail.latex(os, newrp);
} }
} else if (ltCaption(row)) {
// Inside longtable caption rows, we must only output the caption inset
// with its content and omit anything outside of that (see #10791)
InsetIterator it = inset_iterator_begin(*const_cast<InsetTableCell *>(inset));
InsetIterator i_end = inset_iterator_end(*const_cast<InsetTableCell *>(inset));
for (; it != i_end; ++it) {
if (it->lyxCode() != CAPTION_CODE)
continue;
it->latex(os, runparams);
break;
}
} else if (!isPartOfMultiRow(row, c)) { } else if (!isPartOfMultiRow(row, c)) {
if (!runparams.nice) if (!runparams.nice)
os.texrow().start(par.id(), 0); os.texrow().start(par.id(), 0);