From 47db764ccce139eceee5bcaf47e58173f765682d Mon Sep 17 00:00:00 2001 From: Richard Heck Date: Tue, 13 Jul 2010 03:23:29 +0000 Subject: [PATCH] Nameref support. git-svn-id: svn://svn.lyx.org/lyx/lyx-devel/trunk@34884 a592a061-630c-0410-9148-cb99ea01b6c8 --- development/FORMAT | 5 + lib/ui/stdcontext.inc | 2 + src/BufferParams.cpp | 4 +- src/frontends/qt4/ui/RefUi.ui | 276 +++++++++++++++++----------------- src/insets/InsetRef.cpp | 21 ++- 5 files changed, 167 insertions(+), 141 deletions(-) diff --git a/development/FORMAT b/development/FORMAT index 824a96c1bf..7040ca4b74 100644 --- a/development/FORMAT +++ b/development/FORMAT @@ -7,6 +7,11 @@ The good example would be 2010-01-10 entry. ----------------------- +2010-07-13 Richard Heck + * Format incremented to 396 (r34884) + nameref support + new commands nameref and Nameref for InsetRef + 2010-07-13 Uwe Stöhr * Format incremented to 395: support for ISO C-series paper format; new parameter \papersize cxpaper with (x = 0 - 6) diff --git a/lib/ui/stdcontext.inc b/lib/ui/stdcontext.inc index bfafa9fe4e..1e0bbb1131 100644 --- a/lib/ui/stdcontext.inc +++ b/lib/ui/stdcontext.inc @@ -91,6 +91,8 @@ Menuset Item "On Page |O" "inset-modify changetype vpageref" Item " on Page |f" "inset-modify changetype vref" Item "Formatted Reference|t" "inset-modify changetype prettyref" + Item "Textual Reference|x" "inset-modify changetype nameref" + Item "Textual Reference plus |l" "inset-modify changetype Nameref" Separator Item "Settings...|S" "inset-settings" End diff --git a/src/BufferParams.cpp b/src/BufferParams.cpp index 1d4bcd5049..f191ba5e4b 100644 --- a/src/BufferParams.cpp +++ b/src/BufferParams.cpp @@ -1775,7 +1775,9 @@ bool BufferParams::writeLaTeX(odocstream & os, LaTeXFeatures & features, texrow.newlines(lines); // set back for the rest lyxpreamble.clear(); - } + } else if (features.isRequired("nameref")) + // hyperref loads this automatically + lyxpreamble += "\\usepackage{nameref}\n"; // Will be surrounded by \makeatletter and \makeatother when not empty docstring atlyxpreamble; diff --git a/src/frontends/qt4/ui/RefUi.ui b/src/frontends/qt4/ui/RefUi.ui index f97bbbdc38..5baf1629fb 100644 --- a/src/frontends/qt4/ui/RefUi.ui +++ b/src/frontends/qt4/ui/RefUi.ui @@ -1,105 +1,103 @@ - + RefUi - - + + 0 0 - 386 + 435 443 - + - + true - - + + 9 - + 6 - - - - 0 - - + + + 6 + + 0 + - - + + Fil&ter: - + Qt::AlignLeading|Qt::AlignLeft|Qt::AlignVCenter - + findLE - - + + Enter string to filter the label list - + - - + + Filter case-sensitively - + Case-sensiti&ve - - - - 0 - - + + + 6 + + 0 + - - - - 3 - 0 + + + 0 0 - + Update the label list - + &Update - + Qt::Horizontal - + QSizePolicy::Expanding - + 31 30 @@ -108,88 +106,88 @@ - - + + &OK - + true - + true - - + + &Apply - + false - + false - - + + &Close - + false - - - - 0 - - + + + 6 + + 0 + - - - 0 - - + + 6 + + 0 + - - + + Sort labels in alphabetical order (case-insensitively unless the Case-sensitive option is checked) - + &Sort - - + + false - + Sort labels case-sensitively in alphabetical order - + Cas&e-sensitive - - - Group labels by prefix (e.g. "sec:") + + + Group labels by prefix (e.g. "sec:") - + Grou&p @@ -198,10 +196,10 @@ - + Qt::Horizontal - + 20 20 @@ -210,143 +208,153 @@ - - - - 3 - 0 + + + 0 0 - + &Go to Label - - - + + + La&bels in: - + bufferCO - - - - - 7 - 0 + + + + 0 0 - - - + + + false - + &Name: - + Qt::AlignLeading|Qt::AlignLeft|Qt::AlignVCenter - + nameED - - - + + + false - - - + + + &Format: - + Qt::AlignLeading|Qt::AlignLeft|Qt::AlignVCenter - + typeLA - - - - - 1 - 0 + + + + 0 0 - + Cross-reference as it appears in output - - <reference> + + <reference> - - (<reference>) + + (<reference>) - - <page> + + <page> - - on page <page> + + on page <page> - - <reference> on page <page> + + <reference> on page <page> - + Formatted reference + + + Textual reference + + + + + Textual reference plus <page> + + - - - + + + &Label: - + Qt::AlignLeading|Qt::AlignLeft|Qt::AlignVCenter - + referenceED - - + + - - + + + + + 1 + + + @@ -363,7 +371,7 @@ closePB - qt_i18n.h + qt_i18n.h diff --git a/src/insets/InsetRef.cpp b/src/insets/InsetRef.cpp index 1c00f745f0..85100e8099 100644 --- a/src/insets/InsetRef.cpp +++ b/src/insets/InsetRef.cpp @@ -52,7 +52,9 @@ bool InsetRef::isCompatibleCommand(string const & s) { || s == "vref" || s == "vpageref" || s == "prettyref" - || s == "eqref"; + || s == "eqref" + || s == "nameref" + || s == "Nameref"; } @@ -132,9 +134,11 @@ docstring InsetRef::xhtml(XHTMLStream & xs, OutputParams const &) const display_string = _("elsewhere"); else if (cmd == "eqref") display_string = bformat(from_ascii("equation (%1$s)"), value); - else { // "prettyref" + else if (cmd == "prettyref" + // we don't really have the ability to handle these + // properly in XHTML output + || cmd == "nameref" || cmd == "Nameref") display_string = il->prettyCounter(); - } } else display_string = ref; @@ -206,12 +210,15 @@ void InsetRef::addToToc(DocIterator const & cpit) void InsetRef::validate(LaTeXFeatures & features) const { - if (getCmdName() == "vref" || getCmdName() == "vpageref") + string const cmd = getCmdName(); + if (cmd == "vref" || cmd == "vpageref") features.require("varioref"); - else if (getCmdName() == "prettyref") + else if (cmd == "prettyref") features.require("prettyref"); - else if (getCmdName() == "eqref") + else if (cmd == "eqref") features.require("amsmath"); + else if (cmd == "nameref" || cmd == "Nameref") + features.require("nameref"); } @@ -222,6 +229,8 @@ InsetRef::type_info InsetRef::types[] = { { "vpageref", N_("Textual Page Number"), N_("TextPage: ")}, { "vref", N_("Standard+Textual Page"), N_("Ref+Text: ")}, { "prettyref", N_("PrettyRef"), N_("FrmtRef: ")}, + { "nameref", N_("Reference to Name"), N_("NameRef:")}, + { "Nameref", N_("Name+Textual Page"), N_("NamePgRef:")}, { "", "", "" } }; -- 2.39.2