diff --git a/development/FORMAT b/development/FORMAT index ffecd54693..93c0043f35 100644 --- a/development/FORMAT +++ b/development/FORMAT @@ -7,8 +7,11 @@ changes happened in particular if possible. A good example would be ----------------------- +2019-08-14 Jürgen Spitzmüller + * Format incremented to 589: Height now is totalheight in graphics. + 2019-08-12 Jürgen Spitzmüller - * Format incremented to 588: + * Format incremented to 588: - Support \theendnotes of endnotes package via a faked float list. - Support enotez package via enotez and foottoenotez modules. diff --git a/lib/lyx2lyx/lyx_2_4.py b/lib/lyx2lyx/lyx_2_4.py index 65b8df5560..97a3f3092e 100644 --- a/lib/lyx2lyx/lyx_2_4.py +++ b/lib/lyx2lyx/lyx_2_4.py @@ -3470,7 +3470,116 @@ def revert_memoir_endnotes(document): else: document.body[i : j + 1] = put_cmd_in_ert("\\printpagenotes") add_to_preamble(document, ["\\makepagenote"]) - + + +def revert_totalheight(document): + " Reverts graphics height parameter from totalheight to height " + + i = 0 + while (True): + i = find_token(document.body, "\\begin_inset Graphics", i) + if i == -1: + break + j = find_end_of_inset(document.body, i) + if j == -1: + document.warning("Can't find end of graphics inset at line %d!!" %(i)) + i += 1 + continue + + rx = re.compile(r'\s*special\s*(\S+)$') + k = find_re(document.body, rx, i, j) + special = "" + oldheight = "" + if k != -1: + m = rx.match(document.body[k]) + if m: + special = m.group(1) + mspecial = special.split(',') + for spc in mspecial: + if spc[:7] == "height=": + oldheight = spc.split('=')[1] + mspecial.remove(spc) + break + if len(mspecial) > 0: + special = ",".join(mspecial) + else: + special = "" + + rx = re.compile(r'(\s*height\s*)(\S+)$') + kk = find_re(document.body, rx, i, j) + if kk != -1: + m = rx.match(document.body[kk]) + val = "" + if m: + val = m.group(2) + if k != -1: + if special != "": + val = val + "," + special + document.body[k] = "\tspecial " + "totalheight=" + val + else: + document.body.insert(kk, "\tspecial totalheight=" + val) + if oldheight != "": + document.body[kk] = m.group(1) + oldheight + else: + del document.body[kk] + elif oldheight != "": + document.body.insert(k, "\theight " + oldheight) + i = j + 1 + + +def convert_totalheight(document): + " Converts graphics height parameter from totalheight to height " + + i = 0 + while (True): + i = find_token(document.body, "\\begin_inset Graphics", i) + if i == -1: + break + j = find_end_of_inset(document.body, i) + if j == -1: + document.warning("Can't find end of graphics inset at line %d!!" %(i)) + i += 1 + continue + + rx = re.compile(r'\s*special\s*(\S+)$') + k = find_re(document.body, rx, i, j) + special = "" + newheight = "" + if k != -1: + m = rx.match(document.body[k]) + if m: + special = m.group(1) + mspecial = special.split(',') + for spc in mspecial: + if spc[:12] == "totalheight=": + newheight = spc.split('=')[1] + mspecial.remove(spc) + break + if len(mspecial) > 0: + special = ",".join(mspecial) + else: + special = "" + + rx = re.compile(r'(\s*height\s*)(\S+)$') + kk = find_re(document.body, rx, i, j) + if kk != -1: + m = rx.match(document.body[kk]) + val = "" + if m: + val = m.group(2) + if k != -1: + if special != "": + val = val + "," + special + document.body[k] = "\tspecial " + "height=" + val + else: + document.body.insert(kk + 1, "\tspecial height=" + val) + if newheight != "": + document.body[kk] = m.group(1) + newheight + else: + del document.body[kk] + elif newheight != "": + document.body.insert(k, "\theight " + newheight) + i = j + 1 ## # Conversion hub @@ -3521,10 +3630,12 @@ convert = [ [585, [convert_pagesizes]], [586, []], [587, [convert_pagesizenames]], - [588, []] + [588, []], + [589, [convert_totalheight]] ] -revert = [[587, [revert_memoir_endnotes,revert_enotez,revert_theendnotes]], +revert = [[588, [revert_totalheight]], + [587, [revert_memoir_endnotes,revert_enotez,revert_theendnotes]], [586, [revert_pagesizenames]], [585, [revert_dupqualicites]], [584, [revert_pagesizes,revert_komafontsizes]], diff --git a/src/insets/InsetGraphics.cpp b/src/insets/InsetGraphics.cpp index 04edf265a8..ab997e1ea4 100644 --- a/src/insets/InsetGraphics.cpp +++ b/src/insets/InsetGraphics.cpp @@ -399,7 +399,7 @@ string InsetGraphics::createLatexOptions(bool const ps) const if (!params().width.zero()) size << "width=" << params().width.asLatexString() << ','; if (!params().height.zero()) - size << "height=" << params().height.asLatexString() << ','; + size << "totalheight=" << params().height.asLatexString() << ','; if (params().keepAspectRatio) size << "keepaspectratio,"; } diff --git a/src/tex2lyx/text.cpp b/src/tex2lyx/text.cpp index 764cffa988..9dc589d5e3 100644 --- a/src/tex2lyx/text.cpp +++ b/src/tex2lyx/text.cpp @@ -3733,9 +3733,9 @@ void parse_text(Parser & p, ostream & os, unsigned flags, bool outer, if (opts.find("width") != opts.end()) os << "\twidth " << translate_len(opts["width"]) << '\n'; - if (opts.find("height") != opts.end()) + if (opts.find("totalheight") != opts.end()) os << "\theight " - << translate_len(opts["height"]) << '\n'; + << translate_len(opts["totalheight"]) << '\n'; if (opts.find("scale") != opts.end()) { istringstream iss(opts["scale"]); double val; @@ -3751,7 +3751,7 @@ void parse_text(Parser & p, ostream & os, unsigned flags, bool outer, vector::const_iterator s = find(keys.begin(), keys.end(), "width"); if (s == keys.end()) - s = find(keys.begin(), keys.end(), "height"); + s = find(keys.begin(), keys.end(), "totalheight"); if (s == keys.end()) s = find(keys.begin(), keys.end(), "scale"); if (s != keys.end() && distance(s, a) > 0) @@ -3812,8 +3812,8 @@ void parse_text(Parser & p, ostream & os, unsigned flags, bool outer, special << "trim,"; if (opts.find("viewport") != opts.end()) special << "viewport=" << opts["viewport"] << ','; - if (opts.find("totalheight") != opts.end()) - special << "totalheight=" << opts["totalheight"] << ','; + if (opts.find("height") != opts.end()) + special << "height=" << opts["height"] << ','; if (opts.find("type") != opts.end()) special << "type=" << opts["type"] << ','; if (opts.find("ext") != opts.end()) diff --git a/src/version.h b/src/version.h index 110ba804cb..4c964166f0 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 588 // spitz: support \theendnotes -#define LYX_FORMAT_TEX2LYX 588 +#define LYX_FORMAT_LYX 589 // spitz: height > totalheight +#define LYX_FORMAT_TEX2LYX 589 #if LYX_FORMAT_TEX2LYX != LYX_FORMAT_LYX #ifndef _MSC_VER