commit 82bca97379d8fbfa18b5e889ea3394e2d7ceb336
Author: Thibaut Cuvelier <[email protected]>
Date: Thu Oct 7 02:27:54 2021 +0200
DocBook: overall structure for rendered insets.
---
src/insets/InsetText.cpp | 53 +++++++++++++++++++++++++++++++++++++++++----
src/insets/InsetText.h | 8 +++++-
2 files changed, 54 insertions(+), 7 deletions(-)
diff --git a/src/insets/InsetText.cpp b/src/insets/InsetText.cpp
index 635a83f..5dad3ab 100644
--- a/src/insets/InsetText.cpp
+++ b/src/insets/InsetText.cpp
@@ -606,7 +606,6 @@ int InsetText::plaintext(odocstringstream & os,
}
-
void InsetText::docbook(XMLStream & xs, OutputParams const & rp) const
{
docbook(xs, rp, WriteEverything);
@@ -615,8 +614,7 @@ void InsetText::docbook(XMLStream & xs, OutputParams const
& rp) const
void InsetText::docbook(XMLStream & xs, OutputParams const & rp, XHTMLOptions
opts) const
{
- // we will always want to output all our paragraphs when we are
- // called this way.
+ // Always output all the paragraphs.
OutputParams runparams = rp;
runparams.par_begin = 0;
runparams.par_end = text().paragraphs().size();
@@ -628,13 +626,58 @@ void InsetText::docbook(XMLStream & xs, OutputParams
const & rp, XHTMLOptions op
return;
}
- InsetLayout const & il = getLayout();
+ InsetLayout const &il = getLayout();
// Maybe this is an <info> paragraph that should not be generated at
all (i.e. right now, its place is somewhere
// else, typically outside the current paragraph).
if (!rp.docbook_generate_info && il.docbookininfo() != "never")
return;
+ // Maybe this inset must be rendered before being output.
+ if (il.docbookrenderasimage()) {
+ docbookRenderAsImage(xs, runparams, opts);
+ return;
+ }
+
+ // If none of the special cases before apply, output the inset.
+ docbookText(xs, runparams, opts);
+}
+
+
+void InsetText::docbookRenderAsImage(XMLStream & xs, OutputParams const & rp,
XHTMLOptions opts) const
+{
+ LASSERT(getLayout().docbookrenderasimage(), return);
+
+ // TODO: deal with opts. What exactly is the WriterOuterTag here, for
instance?
+ xs << xml::StartTag("mediaobject")
+ << xml::CR();
+
+ // Output the rendered inset.
+ xs << xml::StartTag("imageobject")
+ << xml::CR();
+ xs << xml::EndTag("imageobject")
+ << xml::CR();
+
+ // Output the raw content.
+ xs << xml::StartTag("textobject")
+ << xml::CR()
+ << xml::StartTag("programlisting", "language='latex' role='" +
getLayout().latexname() + "'");
+ docbookText(xs, rp, opts);
+ xs << xml::EndTag("programlisting")
+ << xml::CR()
+ << xml::EndTag("textobject")
+ << xml::CR();
+
+ xs << xml::EndTag("mediaobject")
+ << xml::CR();
+}
+
+
+void InsetText::docbookText(XMLStream & xs, OutputParams const & rp,
XHTMLOptions opts) const
+{
+ InsetLayout const &il = getLayout();
+ OutputParams runparams = rp;
+
// In some cases, the input parameters must be overridden for outer
tags.
bool writeOuterTag = opts & WriteOuterTag;
if (writeOuterTag) {
@@ -667,7 +710,7 @@ void InsetText::docbook(XMLStream & xs, OutputParams const
& rp, XHTMLOptions op
if (par.getInset(i) && par.getInset(i)->lyxCode() ==
ARG_CODE) {
InsetArgument const *arg =
par.getInset(i)->asInsetArgument();
if (arg->docbookargumentaftermaintag())
-
appendedArguments.insert(par.getInset(i)->asInsetArgument());
+
appendedArguments.insert(par.getInset(i)->asInsetArgument());
}
}
}
diff --git a/src/insets/InsetText.h b/src/insets/InsetText.h
index 29457aa..564702c 100644
--- a/src/insets/InsetText.h
+++ b/src/insets/InsetText.h
@@ -93,9 +93,9 @@ public:
///
docstring insetAsXHTML(XMLStream &, OutputParams const &,
XHTMLOptions) const;
- ///
+ /// Outputs the inset as DocBook, with the given options regarding
outer tags.
void docbook(XMLStream &, OutputParams const &, XHTMLOptions opts)
const;
- ///
+ /// Outputs the whole inset as DocBook.
void docbook(XMLStream &, OutputParams const &) const override;
///
void validate(LaTeXFeatures & features) const override;
@@ -238,6 +238,10 @@ protected:
///
void iterateForToc(DocIterator const & cdit, bool output_active,
UpdateType utype, TocBackend &
backend) const;
+ /// Outputs an inset that must be first rendered (with the given
options regarding outer tags).
+ void docbookRenderAsImage(XMLStream & xs, OutputParams const & rp,
XHTMLOptions opts) const;
+ /// Outputs the text of the inset with the correct DocBook tags (with
the given options regarding outer tags).
+ void docbookText(XMLStream & xs, OutputParams const & rp, XHTMLOptions
opts) const;
private:
/// Open the toc item for paragraph pit. Returns the paragraph index
where
/// it should end.
--
lyx-cvs mailing list
[email protected]
http://lists.lyx.org/mailman/listinfo/lyx-cvs