From: Juergen Spitzmueller Date: Sun, 24 May 2015 11:50:21 +0000 (+0200) Subject: Rename ref prefix "sub:" to "subsec:" X-Git-Tag: 2.2.0alpha1~667 X-Git-Url: https://git.lyx.org/gitweb/?a=commitdiff_plain;h=dbe0096c126f92cbd67704af8a7aba288741511a;p=features.git Rename ref prefix "sub:" to "subsec:" This solves a macro conflict between subfloat's \subref and our own \subref definition (bug #7550) File format change. --- diff --git a/development/FORMAT b/development/FORMAT index fb2088b958..770ceaa40d 100644 --- a/development/FORMAT +++ b/development/FORMAT @@ -11,6 +11,10 @@ adjustments are made to tex2lyx and bugs are fixed in lyx2lyx. ----------------------- +2015-05-24 Jürgen Spitzmüller + * Format incremented to 495: Rename sub: refprefix to subsec: in order + to prevent clash of \\subref command with subfloat package. + 2015-05-24 Uwe Stöhr * Format incremented to 494: support more layouts in jss.layout No new parameters. diff --git a/lib/RELEASE-NOTES b/lib/RELEASE-NOTES index 0127d9f192..8d255bd34b 100644 --- a/lib/RELEASE-NOTES +++ b/lib/RELEASE-NOTES @@ -12,6 +12,12 @@ the GUI (though some menu entries use it) as it is automatically inserted when needed. See Section 3.4.6 of the User Guide for details. +* The prefix for subsections in labels and references has been changed from + "sub:" to "subsec:" in order to avoid a clash with subfloats (conflicting + \subref command, see bug #7550). Files are automatically converted to the new scheme. + Please assure that you adapt external refstyle or prettyref definitions and + your own layout files. + !!!The following pref variables were added in 2.2: * \save_origin: diff --git a/lib/layouts/beamer.layout b/lib/layouts/beamer.layout index a56dbd9d28..b8390d354b 100644 --- a/lib/layouts/beamer.layout +++ b/lib/layouts/beamer.layout @@ -309,7 +309,7 @@ Style Subsection LabelType Static LabelCounter subsection LabelString "Subsection \arabic{section}.\arabic{subsection}" - RefPrefix sub + RefPrefix subsec Argument 1 LabelString "Mode" MenuString "Mode Specification|S" diff --git a/lib/layouts/stdrefprefix.inc b/lib/layouts/stdrefprefix.inc index 7412d953a9..3efe8194f8 100644 --- a/lib/layouts/stdrefprefix.inc +++ b/lib/layouts/stdrefprefix.inc @@ -22,11 +22,11 @@ IfStyle Section End IfStyle Subsection - RefPrefix sub + RefPrefix subsec End IfStyle Subsubsection - RefPrefix sub + RefPrefix subsec End IfStyle Paragraph diff --git a/lib/layouts/tufte-book.layout b/lib/layouts/tufte-book.layout index da6c7b105d..3a191a49a9 100644 --- a/lib/layouts/tufte-book.layout +++ b/lib/layouts/tufte-book.layout @@ -122,7 +122,7 @@ Style Subsection TopSep 0.9 BottomSep 0.5 ParSep 0.5 - RefPrefix sub + RefPrefix subsec Font Series Bold Size Large diff --git a/lib/lyx2lyx/LyX.py b/lib/lyx2lyx/LyX.py index 15ad32c4f4..73818fa827 100644 --- a/lib/lyx2lyx/LyX.py +++ b/lib/lyx2lyx/LyX.py @@ -85,7 +85,7 @@ format_relation = [("0_06", [200], minor_versions("0.6" , 4)), ("1_6", list(range(277,346)), minor_versions("1.6" , 10)), ("2_0", list(range(346,414)), minor_versions("2.0" , 8)), ("2_1", list(range(414,475)), minor_versions("2.1" , 0)), - ("2_2", list(range(475,495)), minor_versions("2.2" , 0)) + ("2_2", list(range(475,496)), minor_versions("2.2" , 0)) ] #################################################################### diff --git a/lib/lyx2lyx/lyx_2_2.py b/lib/lyx2lyx/lyx_2_2.py index 18f4838581..c18d905509 100644 --- a/lib/lyx2lyx/lyx_2_2.py +++ b/lib/lyx2lyx/lyx_2_2.py @@ -1424,6 +1424,98 @@ def revert_jss(document): k = k + 1 +def convert_subref(document): + " converts sub: ref prefixes to subref: " + + # 1) label insets + rx = re.compile(r'^name \"sub:(.+)$') + i = 0 + while True: + i = find_token(document.body, "\\begin_inset CommandInset label", i) + if i == -1: + break + j = find_end_of_inset(document.body, i) + if j == -1: + document.warning("Malformed LyX document: Can't find end of Label inset at line " + str(i)) + i += 1 + continue + + for p in range(i, j): + m = rx.match(document.body[p]) + if m: + label = m.group(1) + document.body[p] = "name \"subsec:" + label + i += 1 + + # 2) xref insets + rx = re.compile(r'^reference \"sub:(.+)$') + i = 0 + while True: + i = find_token(document.body, "\\begin_inset CommandInset ref", i) + if i == -1: + return + j = find_end_of_inset(document.body, i) + if j == -1: + document.warning("Malformed LyX document: Can't find end of Ref inset at line " + str(i)) + i += 1 + continue + + for p in range(i, j): + m = rx.match(document.body[p]) + if m: + label = m.group(1) + document.body[p] = "reference \"subsec:" + label + break + i += 1 + + + +def revert_subref(document): + " reverts subref: ref prefixes to sub: " + + # 1) label insets + rx = re.compile(r'^name \"subsec:(.+)$') + i = 0 + while True: + i = find_token(document.body, "\\begin_inset CommandInset label", i) + if i == -1: + break + j = find_end_of_inset(document.body, i) + if j == -1: + document.warning("Malformed LyX document: Can't find end of Label inset at line " + str(i)) + i += 1 + continue + + for p in range(i, j): + m = rx.match(document.body[p]) + if m: + label = m.group(1) + document.body[p] = "name \"sub:" + label + break + i += 1 + + # 2) xref insets + rx = re.compile(r'^reference \"subsec:(.+)$') + i = 0 + while True: + i = find_token(document.body, "\\begin_inset CommandInset ref", i) + if i == -1: + return + j = find_end_of_inset(document.body, i) + if j == -1: + document.warning("Malformed LyX document: Can't find end of Ref inset at line " + str(i)) + i += 1 + continue + + for p in range(i, j): + m = rx.match(document.body[p]) + if m: + label = m.group(1) + document.body[p] = "reference \"sub:" + label + break + i += 1 + + ## # Conversion hub # @@ -1452,10 +1544,12 @@ convert = [ [491, []], [492, [convert_colorbox]], [493, []], - [494, []] + [494, []], + [495, [convert_subref]] ] revert = [ + [494, [revert_subref]], [493, [revert_jss]], [492, [revert_mathmulticol]], [491, [revert_colorbox]], diff --git a/src/LaTeXFeatures.cpp b/src/LaTeXFeatures.cpp index 84c492b896..5a05ef1e43 100644 --- a/src/LaTeXFeatures.cpp +++ b/src/LaTeXFeatures.cpp @@ -249,8 +249,8 @@ static docstring const ogonek_def = from_ascii( "\\newcommand{\\ogonek}[1]{\\mathpalette\\doogonek{#1}}\n"); static docstring const lyxref_def = from_ascii( - "\\RS@ifundefined{subref}\n" - " {\\def\\RSsubtxt{section~}\\newref{sub}{name = \\RSsubtxt}}\n" + "\\RS@ifundefined{subsecref}\n" + " {\\newref{subsec}{name = \\RSsectxt}}\n" " {}\n" "\\RS@ifundefined{thmref}\n" " {\\def\\RSthmtxt{theorem~}\\newref{thm}{name = \\RSthmtxt}}\n" diff --git a/src/tex2lyx/text.cpp b/src/tex2lyx/text.cpp index ed2a3f7d9d..d510c0010e 100644 --- a/src/tex2lyx/text.cpp +++ b/src/tex2lyx/text.cpp @@ -137,11 +137,11 @@ char const * const known_coded_ref_commands[] = { "ref", "pageref", "vref", char const * const known_refstyle_commands[] = { "algref", "chapref", "corref", "eqref", "enuref", "figref", "fnref", "lemref", "parref", "partref", "propref", - "secref", "subref", "tabref", "thmref", 0 }; + "secref", "subsecref", "tabref", "thmref", 0 }; char const * const known_refstyle_prefixes[] = { "alg", "chap", "cor", "eq", "enu", "fig", "fn", "lem", "par", "part", "prop", - "sec", "sub", "tab", "thm", 0 }; + "sec", "subsec", "tab", "thm", 0 }; /** diff --git a/src/version.h b/src/version.h index 9746f1b693..79ea6cc901 100644 --- a/src/version.h +++ b/src/version.h @@ -32,8 +32,8 @@ extern char const * const lyx_version_info; // Do not remove the comment below, so we get merge conflict in // independent branches. Instead add your own. -#define LYX_FORMAT_LYX 494 // uwestoehr jss layout changes -#define LYX_FORMAT_TEX2LYX 494 +#define LYX_FORMAT_LYX 495 // spitz: subsection ref prefix change +#define LYX_FORMAT_TEX2LYX 495 #if LYX_FORMAT_TEX2LYX != LYX_FORMAT_LYX #ifndef _MSC_VER