Skip to content
GitLab
Projects Groups Snippets
  • /
  • Help
    • Help
    • Support
    • Community forum
    • Submit feedback
    • Contribute to GitLab
  • Sign in / Register
  • M MathJax
  • Project information
    • Project information
    • Activity
    • Labels
    • Members
  • Repository
    • Repository
    • Files
    • Commits
    • Branches
    • Tags
    • Contributors
    • Graph
    • Compare
  • Issues 304
    • Issues 304
    • List
    • Boards
    • Service Desk
    • Milestones
  • Merge requests 15
    • Merge requests 15
  • CI/CD
    • CI/CD
    • Pipelines
    • Jobs
    • Schedules
  • Deployments
    • Deployments
    • Environments
    • Releases
  • Packages and registries
    • Packages and registries
    • Package Registry
    • Infrastructure Registry
  • Monitor
    • Monitor
    • Incidents
  • Analytics
    • Analytics
    • Value stream
    • CI/CD
    • Repository
  • Wiki
    • Wiki
  • Snippets
    • Snippets
  • Activity
  • Graph
  • Create a new issue
  • Jobs
  • Commits
  • Issue Boards
Collapse sidebar
  • MathJax
  • MathJax
  • Issues
  • #1866
Closed
Open
Issue created Nov 06, 2017 by Peter Krautzberger@pkraContributor

[SVG output] line-breaking an equality can lose infix spacing

If there's a long mrow, the spacing can get lost.

Example: after enrichment the following

<math xmlns="http://www.w3.org/1998/Math/MathML" display="block">
  <mi>I</mi>
  <mo linebreak="goodbreak">=</mo>
  <mi>a</mi>
  <mo linebreak="goodbreak">+</mo>
  <mi>b</mi>
  <mo linebreak="goodbreak">+</mo>
  <mi>c</mi>
  <mo linebreak="goodbreak">+</mo>
  <mrow>
    <mo>(</mo>
    <mi>d</mi>
    <mo linebreak="badbreak">+</mo>
    <mi>e</mi>
    <mo>)</mo>
  </mrow>
  <mo linebreak="goodbreak">+</mo>
  <mrow>
    <mo>(</mo>
    <mi>f</mi>
    <mo linebreak="badbreak">+</mo>
    <mi>g</mi>
    <mo linebreak="badbreak">+</mo>
    <mi>h</mi>
    <mo linebreak="badbreak">+</mo>
    <mi>i</mi>
    <mo linebreak="badbreak">+</mo>
    <mi>j</mi>
    <mo linebreak="badbreak">+</mo>
    <mi>k</mi>
    <mo>)</mo>
  </mrow>
  <mo linebreak="goodbreak">+</mo>
  <mi>l</mi>
  <mo linebreak="goodbreak">+</mo>
  <mi>m</mi>
  <mo linebreak="goodbreak">+</mo>
  <mi>n</mi>
  <mo linebreak="goodbreak">+</mo>
  <mi>o</mi>
  <mo linebreak="goodbreak">+</mo>
  <mi>p</mi>
  <mo linebreak="goodbreak">+</mo>
  <mi>q</mi>
  <mo linebreak="goodbreak">+</mo>
  <mi>r</mi>
  <mo linebreak="goodbreak">+</mo>
  <mi>s</mi>
</math>

turns into

<math xmlns="http://www.w3.org/1998/Math/MathML" display="block" data-semantic-type="relseq" data-semantic-role="equality" data-semantic-id="48" data-semantic-children="0,47" data-semantic-content="1">
  <mi data-semantic-type="identifier" data-semantic-role="latinletter" data-semantic-font="italic" data-semantic-id="0" data-semantic-parent="48">I</mi>
  <mo linebreak="goodbreak" data-semantic-type="relation" data-semantic-role="equality" data-semantic-id="1" data-semantic-parent="48" data-semantic-operator="relseq,=">=</mo>
  <mrow data-semantic-type="infixop" data-semantic-role="addition" data-semantic-id="47" data-semantic-children="2,4,6,14,30,32,34,36,38,40,42,44,46" data-semantic-content="3,5,7,15,31,33,35,37,39,41,43,45" data-semantic-parent="48">
    <mi data-semantic-type="identifier" data-semantic-role="latinletter" data-semantic-font="italic" data-semantic-id="2" data-semantic-parent="47">a</mi>
    <mo linebreak="goodbreak" data-semantic-type="operator" data-semantic-role="addition" data-semantic-id="3" data-semantic-parent="47" data-semantic-operator="infixop,+">+</mo>
    <mi data-semantic-type="identifier" data-semantic-role="latinletter" data-semantic-font="italic" data-semantic-id="4" data-semantic-parent="47">b</mi>
    <mo linebreak="goodbreak" data-semantic-type="operator" data-semantic-role="addition" data-semantic-id="5" data-semantic-parent="47" data-semantic-operator="infixop,+">+</mo>
    <mi data-semantic-type="identifier" data-semantic-role="latinletter" data-semantic-font="italic" data-semantic-id="6" data-semantic-parent="47">c</mi>
    <mo linebreak="goodbreak" data-semantic-type="operator" data-semantic-role="addition" data-semantic-id="7" data-semantic-parent="47" data-semantic-operator="infixop,+">+</mo>
    <mrow data-semantic-type="fenced" data-semantic-role="leftright" data-semantic-id="14" data-semantic-children="13" data-semantic-content="8,12" data-semantic-parent="47">
      <mo data-semantic-type="fence" data-semantic-role="open" data-semantic-id="8" data-semantic-parent="14" data-semantic-operator="fenced">(</mo>
      <mrow data-semantic-type="infixop" data-semantic-role="addition" data-semantic-id="13" data-semantic-children="9,11" data-semantic-content="10" data-semantic-parent="14">
        <mi data-semantic-type="identifier" data-semantic-role="latinletter" data-semantic-font="italic" data-semantic-id="9" data-semantic-parent="13">d</mi>
        <mo linebreak="badbreak" data-semantic-type="operator" data-semantic-role="addition" data-semantic-id="10" data-semantic-parent="13" data-semantic-operator="infixop,+">+</mo>
        <mi data-semantic-type="identifier" data-semantic-role="latinletter" data-semantic-font="italic" data-semantic-id="11" data-semantic-parent="13">e</mi>
      </mrow>
      <mo data-semantic-type="fence" data-semantic-role="close" data-semantic-id="12" data-semantic-parent="14" data-semantic-operator="fenced">)</mo>
    </mrow>
    <mo linebreak="goodbreak" data-semantic-type="operator" data-semantic-role="addition" data-semantic-id="15" data-semantic-parent="47" data-semantic-operator="infixop,+">+</mo>
    <mrow data-semantic-type="fenced" data-semantic-role="leftright" data-semantic-id="30" data-semantic-children="29" data-semantic-content="16,28" data-semantic-parent="47">
      <mo data-semantic-type="fence" data-semantic-role="open" data-semantic-id="16" data-semantic-parent="30" data-semantic-operator="fenced">(</mo>
      <mrow data-semantic-type="infixop" data-semantic-role="addition" data-semantic-id="29" data-semantic-children="17,19,21,23,25,27" data-semantic-content="18,20,22,24,26" data-semantic-parent="30">
        <mi data-semantic-type="identifier" data-semantic-role="latinletter" data-semantic-font="italic" data-semantic-id="17" data-semantic-parent="29">f</mi>
        <mo linebreak="badbreak" data-semantic-type="operator" data-semantic-role="addition" data-semantic-id="18" data-semantic-parent="29" data-semantic-operator="infixop,+">+</mo>
        <mi data-semantic-type="identifier" data-semantic-role="latinletter" data-semantic-font="italic" data-semantic-id="19" data-semantic-parent="29">g</mi>
        <mo linebreak="badbreak" data-semantic-type="operator" data-semantic-role="addition" data-semantic-id="20" data-semantic-parent="29" data-semantic-operator="infixop,+">+</mo>
        <mi data-semantic-type="identifier" data-semantic-role="latinletter" data-semantic-font="italic" data-semantic-id="21" data-semantic-parent="29">h</mi>
        <mo linebreak="badbreak" data-semantic-type="operator" data-semantic-role="addition" data-semantic-id="22" data-semantic-parent="29" data-semantic-operator="infixop,+">+</mo>
        <mi data-semantic-type="identifier" data-semantic-role="latinletter" data-semantic-font="italic" data-semantic-id="23" data-semantic-parent="29">i</mi>
        <mo linebreak="badbreak" data-semantic-type="operator" data-semantic-role="addition" data-semantic-id="24" data-semantic-parent="29" data-semantic-operator="infixop,+">+</mo>
        <mi data-semantic-type="identifier" data-semantic-role="latinletter" data-semantic-font="italic" data-semantic-id="25" data-semantic-parent="29">j</mi>
        <mo linebreak="badbreak" data-semantic-type="operator" data-semantic-role="addition" data-semantic-id="26" data-semantic-parent="29" data-semantic-operator="infixop,+">+</mo>
        <mi data-semantic-type="identifier" data-semantic-role="latinletter" data-semantic-font="italic" data-semantic-id="27" data-semantic-parent="29">k</mi>
      </mrow>
      <mo data-semantic-type="fence" data-semantic-role="close" data-semantic-id="28" data-semantic-parent="30" data-semantic-operator="fenced">)</mo>
    </mrow>
    <mo linebreak="goodbreak" data-semantic-type="operator" data-semantic-role="addition" data-semantic-id="31" data-semantic-parent="47" data-semantic-operator="infixop,+">+</mo>
    <mi data-semantic-type="identifier" data-semantic-role="latinletter" data-semantic-font="italic" data-semantic-id="32" data-semantic-parent="47">l</mi>
    <mo linebreak="goodbreak" data-semantic-type="operator" data-semantic-role="addition" data-semantic-id="33" data-semantic-parent="47" data-semantic-operator="infixop,+">+</mo>
    <mi data-semantic-type="identifier" data-semantic-role="latinletter" data-semantic-font="italic" data-semantic-id="34" data-semantic-parent="47">m</mi>
    <mo linebreak="goodbreak" data-semantic-type="operator" data-semantic-role="addition" data-semantic-id="35" data-semantic-parent="47" data-semantic-operator="infixop,+">+</mo>
    <mi data-semantic-type="identifier" data-semantic-role="latinletter" data-semantic-font="italic" data-semantic-id="36" data-semantic-parent="47">n</mi>
    <mo linebreak="goodbreak" data-semantic-type="operator" data-semantic-role="addition" data-semantic-id="37" data-semantic-parent="47" data-semantic-operator="infixop,+">+</mo>
    <mi data-semantic-type="identifier" data-semantic-role="latinletter" data-semantic-font="italic" data-semantic-id="38" data-semantic-parent="47">o</mi>
    <mo linebreak="goodbreak" data-semantic-type="operator" data-semantic-role="addition" data-semantic-id="39" data-semantic-parent="47" data-semantic-operator="infixop,+">+</mo>
    <mi data-semantic-type="identifier" data-semantic-role="latinletter" data-semantic-font="italic" data-semantic-id="40" data-semantic-parent="47">p</mi>
    <mo linebreak="goodbreak" data-semantic-type="operator" data-semantic-role="addition" data-semantic-id="41" data-semantic-parent="47" data-semantic-operator="infixop,+">+</mo>
    <mi data-semantic-type="identifier" data-semantic-role="latinletter" data-semantic-font="italic" data-semantic-id="42" data-semantic-parent="47">q</mi>
    <mo linebreak="goodbreak" data-semantic-type="operator" data-semantic-role="addition" data-semantic-id="43" data-semantic-parent="47" data-semantic-operator="infixop,+">+</mo>
    <mi data-semantic-type="identifier" data-semantic-role="latinletter" data-semantic-font="italic" data-semantic-id="44" data-semantic-parent="47">r</mi>
    <mo linebreak="goodbreak" data-semantic-type="operator" data-semantic-role="addition" data-semantic-id="45" data-semantic-parent="47" data-semantic-operator="infixop,+">+</mo>
    <mi data-semantic-type="identifier" data-semantic-role="latinletter" data-semantic-font="italic" data-semantic-id="46" data-semantic-parent="47">s</mi>
  </mrow>
</math>

which loses space between = and the right hand side.

Assignee
Assign to
Time tracking