From 7c8d167f8ea3e641b0ec26f0c40ec33c4045bb68 Mon Sep 17 00:00:00 2001 From: Juergen Spitzmueller Date: Mon, 20 Nov 2017 10:59:09 +0100 Subject: [PATCH] Longtable: only output the caption contents in a caption row. Fixes: #10791 (cherry picked from commit 538b38f78c76a56bec7e6cec0314d8f4e0f1e415) --- src/insets/InsetTabular.cpp | 12 ++++++++++++ 1 file changed, 12 insertions(+) diff --git a/src/insets/InsetTabular.cpp b/src/insets/InsetTabular.cpp index a49c5bf77d..94eed7893e 100644 --- a/src/insets/InsetTabular.cpp +++ b/src/insets/InsetTabular.cpp @@ -33,6 +33,7 @@ #include "DispatchResult.h" #include "FuncRequest.h" #include "FuncStatus.h" +#include "InsetIterator.h" #include "InsetList.h" #include "Language.h" #include "LaTeXFeatures.h" @@ -2652,6 +2653,17 @@ void Tabular::TeXRow(otexstream & os, row_type row, tail.setMacrocontextPositionRecursive(dit); 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(inset)); + InsetIterator i_end = inset_iterator_end(*const_cast(inset)); + for (; it != i_end; ++it) { + if (it->lyxCode() != CAPTION_CODE) + continue; + it->latex(os, runparams); + break; + } } else if (!isPartOfMultiRow(row, c)) { if (!runparams.nice) os.texrow().start(par.id(), 0);