bool close = false;
odocstream::pos_type const len = os.os().tellp();
- if (inset->forceLTR()
+ if (inset->forceLTR(runparams)
&& running_font.isRightToLeft()
// ERT is an exception, it should be output with no
// decorations at all
}
-bool Inset::forceLTR() const
+bool Inset::forceLTR(OutputParams const &) const
{
return getLayout().forceLTR();
}
/// Don't eliminate empty paragraphs
virtual bool allowEmpty() const;
/// Force inset into LTR environment if surroundings are RTL
- virtual bool forceLTR() const;
+ virtual bool forceLTR(OutputParams const &) const;
/// whether to include this inset in the strings generated for the TOC
virtual bool isInToc() const;
///
std::string contextMenuName() const;
/// Force inset into LTR environment if surroundings are RTL
- bool forceLTR() const { return true; }
+ bool forceLTR(OutputParams const &) const { return true; }
///
void doDispatch(Cursor & cur, FuncRequest & cmd);
///
///
bool hasSettings() const { return true; }
///
- bool forceLTR() const { return true; }
+ bool forceLTR(OutputParams const &) const { return true; }
///
bool isInToc() const { return true; }
///
}
-bool InsetInfo::forceLTR() const
+bool InsetInfo::forceLTR(OutputParams const &) const
{
return !buffer().params().language->rightToLeft() || force_ltr_;
}
///
void doDispatch(Cursor & cur, FuncRequest & cmd);
/// Force inset into LTR environment if surroundings are RTL
- bool forceLTR() const;
+ bool forceLTR(OutputParams const &) const;
///
void setInfo(std::string const & info);
/// update info_ and text
features.require("nameref");
}
-bool InsetRef::forceLTR() const
+bool InsetRef::forceLTR(OutputParams const & rp) const
{
- // We force LTR for references. Namerefs are output in the scripts direction
- // at least with fontspec/bidi, though (see #11518).
+ // We force LTR for references. However,
+ // * Namerefs are output in the scripts direction
+ // at least with fontspec/bidi and luabidi, though (see #11518).
+ // * Parentheses are automatically swapped with XeTeX/bidi
+ // [not with LuaTeX/luabidi] (see #11626).
// FIXME: Re-Audit all other RTL cases.
+ if (rp.use_polyglossia && rp.flavor == OutputParams::XETEX)
+ return false;
return (getCmdName() != "nameref" || !buffer().masterParams().useNonTeXFonts);
}
void addToToc(DocIterator const & di, bool output_active,
UpdateType utype, TocBackend & backend) const;
///
- bool forceLTR() const;
+ bool forceLTR(OutputParams const &) const;
//@}
/// \name Static public methods obligated for InsetCommand derived classes
static int displayMargin() { return 12; }
/// Force inset into LTR environment if surroundings are RTL
- virtual bool forceLTR() const { return true; }
+ virtual bool forceLTR(OutputParams const &) const { return true; }
///
void recordLocation(DocIterator const & di);
- Fix direction of roman numbers with RTL documents and LuaTeX.
+- Fix direction of references with XeTeX/bidi (bug 11626).
+
* USER INTERFACE