From: Enrico Forestieri Date: Thu, 30 Aug 2012 12:09:23 +0000 (+0200) Subject: Protect underlined \ref{} commands by enclosing them in \mbox{}. X-Git-Tag: 2.1.0beta1~1562 X-Git-Url: https://git.lyx.org/gitweb/?a=commitdiff_plain;h=91afc2430d056e5cbf0065ac0d1a754a2a2ff384;p=features.git Protect underlined \ref{} commands by enclosing them in \mbox{}. This is the same protection used for \cite{}. Although "ulem" commands don't strictly need this protection with \ref{} and friends, this helps when one wants to use another package souch as "soul". Indeed, ulem's \uline{} doesn't hyphenate words, while soul's \ul{} does, and thus the output is much nicer. With this patch, replacing ulem with soul is as simple as adding \usepackage{soul} \renewcommand{\uline}[1]{\ul{#1}} to the preamble, without worrying about manually enclosing in \mbox the \ref commands. In any case, the output from ulem remains unchanged. Another possibility offered by soul is that of typesetting as "yellow highlighted" the underlined text. This is achieved by adding \usepackage{color,soul} \renewcommand{\uline}[1]{\hl{#1}} to the preamble. --- diff --git a/src/insets/InsetRef.cpp b/src/insets/InsetRef.cpp index ef96101dc5..bae4992f66 100644 --- a/src/insets/InsetRef.cpp +++ b/src/insets/InsetRef.cpp @@ -142,6 +142,9 @@ void InsetRef::latex(otexstream & os, OutputParams const & rp) const string const cmd = getCmdName(); docstring const data = getEscapedLabel(rp); + if (rp.inulemcmd) + os << "\\mbox{"; + if (cmd == "eqref" && buffer().params().use_refstyle) { // we advertise this as printing "(n)", so we'll do that, at least // for refstyle, since refstlye's own \eqref prints, by default, @@ -163,6 +166,9 @@ void InsetRef::latex(otexstream & os, OutputParams const & rp) const p["reference"] = ref; os << p.getCommand(rp); } + + if (rp.inulemcmd) + os << "}"; }