Author: rgheck
Date: Sun Mar 13 21:29:52 2011
New Revision: 37918
URL: http://www.lyx.org/trac/changeset/37918

Log:
What is output as \eqref under prettyref needs to be handled differently
under refstyle, since (a) the default refstyle.cfg defines \eqref itself
and (b) does NOT define it the way AMS does. So we simply output:
        (\ref{label})
in this case, to match what we say in the UI.

Modified:
   lyx-devel/trunk/src/insets/InsetRef.cpp

Modified: lyx-devel/trunk/src/insets/InsetRef.cpp
==============================================================================
--- lyx-devel/trunk/src/insets/InsetRef.cpp     Sun Mar 13 21:10:21 2011        
(r37917)
+++ lyx-devel/trunk/src/insets/InsetRef.cpp     Sun Mar 13 21:29:52 2011        
(r37918)
@@ -82,7 +82,8 @@
 // the command: \pfxcmd{suffix}.
 // 
 // for prettyref, we return "\prettyref" and put ref into label
-// and pfx into prefix. this is because prettyref 
+// and pfx into prefix. this is because prettyref uses the whole
+// label, thus: \prettyref{pfx:suffix}.
 //
 docstring InsetRef::getFormattedCmd(docstring const & ref, 
        docstring & label, docstring & prefix) const
@@ -139,7 +140,11 @@
 void InsetRef::latex(otexstream & os, OutputParams const & rp) const
 {
        string const cmd = getCmdName();
-       if (cmd != "formatted") {
+
+       // refstyle defines its own version of \eqref
+       if (cmd != "formatted" &&
+           !(cmd == "eqref" && buffer().params().use_refstyle)
+          ) {
                // We don't want to output p_["name"], since that is only used 
                // in docbook. So we construct new params, without it, and use 
that.
                InsetCommandParams p(REF_CODE, cmd);
@@ -147,10 +152,18 @@
                p["reference"] = ref;
                os << p.getCommand(rp);
                return;
-       } 
-       
-       // so we're doing a formatted reference.
+       }
+
+       // so we're doing a formatted reference of some kind.
        docstring const data = getEscapedLabel(rp);
+
+       // what we say in the UI is that an "eqref" is supposed to surround the
+       // reference with parentheses, so let's do that.
+       if (cmd == "eqref" /* && buffer().params().use_refstyle */) {
+               os << '(' << from_ascii("\\ref{") << data << from_ascii("})");
+               return;
+       }
+
        docstring label;
        docstring prefix;
        docstring const fcmd = getFormattedCmd(data, label, prefix);

Reply via email to