// Parsing main loop.
for (pos_type i = initial; i < size(); ++i) {
+ bool ignore_fonts_i = ignore_fonts
+ || style.docbooknofontinside()
+ || (getInset(i) && getInset(i)->getLayout().docbooknofontinside());
+
// Don't show deleted material in the output.
if (isDeleted(i))
continue;
// If this is an InsetNewline, generate a new paragraph. Also reset the fonts, so that tags are closed in
// this paragraph.
if (getInset(i) && getInset(i)->lyxCode() == NEWLINE_CODE) {
- if (!ignore_fonts)
+ if (!ignore_fonts_i)
xs->closeFontTags();
// Output one paragraph (i.e. one string entry in generatedParagraphs).
xs = new XMLStream(os);
// Restore the fonts for the new paragraph, so that the right tags are opened for the new entry.
- if (!ignore_fonts) {
+ if (!ignore_fonts_i) {
font_old = outerfont.fontInfo();
fs = old_fs;
}
// Determine which tags should be opened or closed regarding fonts.
Font const font = getFont(buf.masterBuffer()->params(), i, outerfont);
- if (!ignore_fonts) {
- tie(tagsToOpen, tagsToClose) = computeDocBookFontSwitch(font_old, font, default_family, fs);
-
- // FIXME XHTML
- // Other such tags? What about the other text ranges?
-
- vector<xml::EndFontTag>::const_iterator cit = tagsToClose.begin();
- vector<xml::EndFontTag>::const_iterator cen = tagsToClose.end();
- for (; cit != cen; ++cit)
- *xs << *cit;
-
- // Deal with the delayed characters *after* closing font tags.
- if (!delayedChars.empty()) {
- for (char_type c: delayedChars)
- *xs << c;
- delayedChars.clear();
- }
-
+ tie(tagsToOpen, tagsToClose) = computeDocBookFontSwitch(font_old, font, default_family, fs);
+
+ if (!ignore_fonts_i) {
+ vector<xml::EndFontTag>::const_iterator cit = tagsToClose.begin();
+ vector<xml::EndFontTag>::const_iterator cen = tagsToClose.end();
+ for (; cit != cen; ++cit)
+ *xs << *cit;
+ }
+
+ // Deal with the delayed characters *after* closing font tags.
+ if (!delayedChars.empty()) {
+ for (char_type c: delayedChars)
+ *xs << c;
+ delayedChars.clear();
+ }
+
+ if (!ignore_fonts_i) {
vector<xml::FontTag>::const_iterator sit = tagsToOpen.begin();
vector<xml::FontTag>::const_iterator sen = tagsToOpen.end();
for (; sit != sen; ++sit)
tagsToOpen.clear();
}
+ // Finally, write the next character or inset.
if (Inset const * inset = getInset(i)) {
if (!runparams.for_toc || inset->isInToc()) {
OutputParams np = runparams;
if (c == META_INSET && (options & AS_STR_PLAINTEXT)) {
LASSERT(runparams != nullptr, return docstring());
getInset(i)->plaintext(os, *runparams);
+ } else if (c == META_INSET && (options & AS_STR_MATHED)
+ && getInset(i)->lyxCode() == REF_CODE) {
+ Buffer const & buf = getInset(i)->buffer();
+ OutputParams rp(&buf.params().encoding());
+ Font const font(inherit_font, buf.params().language);
+ rp.local_font = &font;
+ otexstream ots(os);
+ getInset(i)->latex(ots, rp);
} else {
getInset(i)->toString(os);
}