]> git.lyx.org Git - features.git/commitdiff
Protect underlined \ref{} commands by enclosing them in \mbox{}.
authorEnrico Forestieri <forenr@lyx.org>
Thu, 30 Aug 2012 12:09:23 +0000 (14:09 +0200)
committerEnrico Forestieri <forenr@lyx.org>
Thu, 30 Aug 2012 12:09:23 +0000 (14:09 +0200)
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.

src/insets/InsetRef.cpp

index ef96101dc564f404c36476f76616fe7d5ec27a3c..bae4992f66f156cb22cf9126ec652698adf30bca 100644 (file)
@@ -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 << "}";
 }