Add support for medspace and thickspace (in text) (#11893)

File format change.
This commit is contained in:
Juergen Spitzmueller 2020-06-26 11:12:35 +02:00
parent 8ceb4f6b58
commit a68b0389bc
7 changed files with 67 additions and 44 deletions

View File

@ -353,7 +353,7 @@ def revert_undertilde(document):
def revert_negative_space(document): def revert_negative_space(document):
"Revert InsetSpace negmedspace and negthickspace into its TeX-code counterpart" "Revert InsetSpace negmedspace and negthickspace into their TeX-code counterparts"
i = 0 i = 0
j = 0 j = 0
reverted = False reverted = False
@ -366,7 +366,7 @@ def revert_negative_space(document):
if reverted == True: if reverted == True:
i = find_token(document.header, "\\use_amsmath 2", 0) i = find_token(document.header, "\\use_amsmath 2", 0)
if i == -1: if i == -1:
add_to_preamble(document, ["\\@ifundefined{negthickspace}{\\usepackage{amsmath}}"]) add_to_preamble(document, ["\\@ifundefined{negthickspace}{\\usepackage{amsmath}}{}"])
return return
if i == -1: if i == -1:
return return

View File

@ -3754,6 +3754,28 @@ def revert_counter_inset(document):
add_to_preamble(document, pretext) add_to_preamble(document, pretext)
def revert_ams_spaces(document):
"Revert InsetSpace medspace and thickspace into their TeX-code counterparts"
Found = False
insets = ["\\medspace{}", "\\thickspace{}"]
for inset in insets:
i = 0
j = 0
i = find_token(document.body, "\\begin_inset space " + inset, i)
if i == -1:
continue
end = find_end_of_inset(document.body, i)
subst = put_cmd_in_ert(inset)
document.body[i : end + 1] = subst
Found = True
if Found == True:
# load amsmath in the preamble if not already loaded
i = find_token(document.header, "\\use_package amsmath 2", 0)
if i == -1:
add_to_preamble(document, ["\\@ifundefined{thickspace}{\\usepackage{amsmath}}{}"])
return
## ##
# Conversion hub # Conversion hub
# #
@ -3809,10 +3831,12 @@ convert = [
[591, [convert_postpone_fragile]], [591, [convert_postpone_fragile]],
[592, []], [592, []],
[593, [convert_counter_maintenance]], [593, [convert_counter_maintenance]],
[594, []] [594, []],
[595, []]
] ]
revert = [[593, [revert_counter_inset]], revert = [[594, [revert_ams_spaces]],
[593, [revert_counter_inset]],
[592, [revert_counter_maintenance]], [592, [revert_counter_maintenance]],
[591, [revert_colrow_tracking]], [591, [revert_colrow_tracking]],
[590, [revert_postpone_fragile]], [590, [revert_postpone_fragile]],

View File

@ -244,6 +244,8 @@ Menuset
Item "Protected Space|o" "inset-modify space ~" Item "Protected Space|o" "inset-modify space ~"
Item "Visible Space|a" "inset-modify space \textvisiblespace{}" Item "Visible Space|a" "inset-modify space \textvisiblespace{}"
Item "Thin Space|T" "inset-modify space \thinspace{}" Item "Thin Space|T" "inset-modify space \thinspace{}"
Item "Medium Space|M" "inset-modify space \medspace{}"
Item "Thick Space|i" "inset-modify space \thickspace{}"
Item "Negative Thin Space|N" "inset-modify space \negthinspace{}" Item "Negative Thin Space|N" "inset-modify space \negthinspace{}"
Item "Negative Medium Space|v" "inset-modify space \negmedspace{}" Item "Negative Medium Space|v" "inset-modify space \negmedspace{}"
Item "Negative Thick Space|h" "inset-modify space \negthickspace{}" Item "Negative Thick Space|h" "inset-modify space \negthickspace{}"
@ -252,7 +254,7 @@ Menuset
Item "Quad Space|Q" "inset-modify space \quad{}" Item "Quad Space|Q" "inset-modify space \quad{}"
Item "Double Quad Space|u" "inset-modify space \qquad{}" Item "Double Quad Space|u" "inset-modify space \qquad{}"
Item "Horizontal Fill|F" "inset-modify space \hfill{}" Item "Horizontal Fill|F" "inset-modify space \hfill{}"
Item "Protected Horizontal Fill|i" "inset-modify space \hspace*{\fill}" Item "Protected Horizontal Fill|z" "inset-modify space \hspace*{\fill}"
Item "Horizontal Fill (Dots)|D" "inset-modify space \dotfill{}" Item "Horizontal Fill (Dots)|D" "inset-modify space \dotfill{}"
Item "Horizontal Fill (Rule)|R" "inset-modify space \hrulefill{}" Item "Horizontal Fill (Rule)|R" "inset-modify space \hrulefill{}"
Item "Horizontal Fill (Left Arrow)|L" "inset-modify space \leftarrowfill{}" Item "Horizontal Fill (Left Arrow)|L" "inset-modify space \leftarrowfill{}"

View File

@ -41,7 +41,6 @@ GuiHSpace::GuiHSpace(bool math_mode, QWidget * parent)
setupUi(this); setupUi(this);
spacingCO->clear(); spacingCO->clear();
if (math_mode_) {
spacingCO->addItem(qt_("Interword Space"), "normal"); spacingCO->addItem(qt_("Interword Space"), "normal");
spacingCO->addItem(qt_("Thin Space"), "thinspace"); spacingCO->addItem(qt_("Thin Space"), "thinspace");
spacingCO->addItem(qt_("Medium Space"), "medspace"); spacingCO->addItem(qt_("Medium Space"), "medspace");
@ -53,20 +52,9 @@ GuiHSpace::GuiHSpace(bool math_mode, QWidget * parent)
spacingCO->addItem(qt_("Quad (1 em)"), "quad"); spacingCO->addItem(qt_("Quad (1 em)"), "quad");
spacingCO->addItem(qt_("Double Quad (2 em)"), "qquad"); spacingCO->addItem(qt_("Double Quad (2 em)"), "qquad");
spacingCO->addItem(qt_("Horizontal Fill"), "hfill"); spacingCO->addItem(qt_("Horizontal Fill"), "hfill");
spacingCO->addItem(qt_("Custom"), "custom"); if (!math_mode_)
} else {
spacingCO->addItem(qt_("Interword Space"), "normal");
spacingCO->addItem(qt_("Thin Space"), "thinspace");
spacingCO->addItem(qt_("Negative Thin Space"), "negthinspace");
spacingCO->addItem(qt_("Negative Medium Space"), "negmedspace");
spacingCO->addItem(qt_("Negative Thick Space"), "negthickspace");
spacingCO->addItem(qt_("Half Quad (0.5 em)"), "halfquad");
spacingCO->addItem(qt_("Quad (1 em)"), "quad");
spacingCO->addItem(qt_("Double Quad (2 em)"), "qquad");
spacingCO->addItem(qt_("Horizontal Fill"), "hfill");
spacingCO->addItem(qt_("Custom"), "custom");
spacingCO->addItem(qt_("Visible Space"), "visible"); spacingCO->addItem(qt_("Visible Space"), "visible");
} spacingCO->addItem(qt_("Custom"), "custom");
connect(spacingCO, SIGNAL(highlighted(QString)), connect(spacingCO, SIGNAL(highlighted(QString)),
this, SLOT(changedSlot())); this, SLOT(changedSlot()));

View File

@ -516,9 +516,9 @@ void InsetSpaceParams::read(Lexer & lex)
kind = InsetSpaceParams::VISIBLE; kind = InsetSpaceParams::VISIBLE;
else if (command == "\\thinspace{}") else if (command == "\\thinspace{}")
kind = InsetSpaceParams::THIN; kind = InsetSpaceParams::THIN;
else if (math && command == "\\medspace{}") else if (command == "\\medspace{}")
kind = InsetSpaceParams::MEDIUM; kind = InsetSpaceParams::MEDIUM;
else if (math && command == "\\thickspace{}") else if (command == "\\thickspace{}")
kind = InsetSpaceParams::THICK; kind = InsetSpaceParams::THICK;
else if (command == "\\quad{}") else if (command == "\\quad{}")
kind = InsetSpaceParams::QUAD; kind = InsetSpaceParams::QUAD;
@ -597,10 +597,16 @@ void InsetSpace::latex(otexstream & os, OutputParams const & runparams) const
os << (runparams.free_spacing ? " " : "\\,"); os << (runparams.free_spacing ? " " : "\\,");
break; break;
case InsetSpaceParams::MEDIUM: case InsetSpaceParams::MEDIUM:
if (params_.math)
os << (runparams.free_spacing ? " " : "\\:"); os << (runparams.free_spacing ? " " : "\\:");
else
os << (runparams.free_spacing ? " " : "\\medspace{}");
break; break;
case InsetSpaceParams::THICK: case InsetSpaceParams::THICK:
if (params_.math)
os << (runparams.free_spacing ? " " : "\\;"); os << (runparams.free_spacing ? " " : "\\;");
else
os << (runparams.free_spacing ? " " : "\\thickspace{}");
break; break;
case InsetSpaceParams::QUAD: case InsetSpaceParams::QUAD:
os << (runparams.free_spacing ? " " : "\\quad{}"); os << (runparams.free_spacing ? " " : "\\quad{}");
@ -867,8 +873,11 @@ docstring InsetSpace::xhtml(XMLStream & xs, OutputParams const &) const
void InsetSpace::validate(LaTeXFeatures & features) const void InsetSpace::validate(LaTeXFeatures & features) const
{ {
if (params_.kind == InsetSpaceParams::NEGMEDIUM || if ((params_.kind == InsetSpaceParams::NEGMEDIUM
params_.kind == InsetSpaceParams::NEGTHICK) || params_.kind == InsetSpaceParams::NEGTHICK)
|| (!params_.math
&& (params_.kind == InsetSpaceParams::MEDIUM
|| params_.kind == InsetSpaceParams::THICK)))
features.require("amsmath"); features.require("amsmath");
} }

View File

@ -318,16 +318,16 @@ char const * const known_tex_extensions[] = {"tex", 0};
/// spaces known by InsetSpace /// spaces known by InsetSpace
char const * const known_spaces[] = { " ", "space", ",", char const * const known_spaces[] = { " ", "space", ",",
"thinspace", "quad", "qquad", "enspace", "enskip", "thinspace", "quad", "qquad", "enspace", "enskip",
"negthinspace", "negmedspace", "negthickspace", "textvisiblespace", "medspace", "thickspace", "negthinspace", "negmedspace", "negthickspace",
"hfill", "dotfill", "hrulefill", "leftarrowfill", "rightarrowfill", "textvisiblespace", "hfill", "dotfill", "hrulefill", "leftarrowfill",
"upbracefill", "downbracefill", 0}; "rightarrowfill", "upbracefill", "downbracefill", 0};
/// the same as known_spaces with .lyx names /// the same as known_spaces with .lyx names
char const * const known_coded_spaces[] = { "space{}", "space{}", char const * const known_coded_spaces[] = { "space{}", "space{}",
"thinspace{}", "thinspace{}", "quad{}", "qquad{}", "enspace{}", "enskip{}", "thinspace{}", "thinspace{}", "quad{}", "qquad{}", "enspace{}", "enskip{}",
"negthinspace{}", "negmedspace{}", "negthickspace{}", "textvisiblespace{}", "medspace{}", "thickspace{}", "negthinspace{}", "negmedspace{}", "negthickspace{}",
"hfill{}", "dotfill{}", "hrulefill{}", "leftarrowfill{}", "rightarrowfill{}", "textvisiblespace{}", "hfill{}", "dotfill{}", "hrulefill{}", "leftarrowfill{}",
"upbracefill{}", "downbracefill{}", 0}; "rightarrowfill{}", "upbracefill{}", "downbracefill{}", 0};
/// known TIPA combining diacritical marks /// known TIPA combining diacritical marks
char const * const known_tipa_marks[] = {"textsubwedge", "textsubumlaut", char const * const known_tipa_marks[] = {"textsubwedge", "textsubumlaut",

View File

@ -32,8 +32,8 @@ extern char const * const lyx_version_info;
// Do not remove the comment below, so we get merge conflict in // Do not remove the comment below, so we get merge conflict in
// independent branches. Instead add your own. // independent branches. Instead add your own.
#define LYX_FORMAT_LYX 594 // rikiheck: counter insets #define LYX_FORMAT_LYX 595 // spitz: medspace and thickspace
#define LYX_FORMAT_TEX2LYX 594 #define LYX_FORMAT_TEX2LYX 595
#if LYX_FORMAT_TEX2LYX != LYX_FORMAT_LYX #if LYX_FORMAT_TEX2LYX != LYX_FORMAT_LYX
#ifndef _MSC_VER #ifndef _MSC_VER