<https://mathematica.stackexchange.com/a/222410/73364>
I have obtained the following code from the above link. But it is not working well with my situation. Can anyone help me out?



    SumHeld /: 
      SyntaxInformation[
       SumHeld] = {"LocalVariables" -> {"Table", {2, Infinity}}};
    
    IndexUnify[HoldPattern@Plus[sums : SumHeld[_, __] ..]] := 
     Plus @@ With[{targetIndices = List @@ #[[-1, 2 ;;, 1]], 
          sourceIndicesList = List @@@ #[[;; , 2 ;;, 1]]}, 
         Function[{sum, sourceIndices}, 
           sum /. Thread[
             sourceIndices -> 
              Take[targetIndices, Length@sourceIndices]]] @@@ 
          Transpose@{#, sourceIndicesList}] &@
      SortBy[Flatten /@ {sums}, Length]
    
    SumTogether[HoldPattern@Plus[sums : SumHeld[_, sameRanges__] ..]] := 
     SumHeld[Plus @@ {sums}[[;; , 1]], sameRanges]
    SumTogether[HoldPattern@Plus[sums : SumHeld[_, __] ..]] /; 
      UnsameQ @@ {sums}[[;; , 2 ;;]] := 
     Plus @@ SumTogether@*Plus @@@ GatherBy[{sums}, Rest]

My case:


    x[arg__] /; ! OrderedQ@{arg} := Signature@{arg} x @@ Sort@{arg} 
    Format[x[arg__]] := Subscript[x, arg]
    g[arg__] /; ! OrderedQ@{arg} := Signature@{arg} g @@ Sort@{arg}
    g[___, j_, j_, ___] = 0;
    Format[g[arg__]] := Subscript[g, arg]
    SumHeld /: MakeBoxes[SumHeld[expr_, ranges__], form_] := 
     MakeBoxes[Sum[expr, ranges], form]
    test1 = SumHeld[
       g[i, j, k, l]*x[i, p]*\[Delta][k, m]*x[j, l], {i, 1, n}, {k, 1, 
        n}, {j, 1, n}, {l, 1, n}] + 
      SumHeld[SumHeld[g[i, j, k, l]*x[k, p]*\[Delta][i, m]*x[j, l]], {k, 
        1, n}, {i, 1, n}, {j, 1, n}, {l, 1, n}] +
      SumHeld[
       SumHeld[g[i, j, k, l]*x[l, p]*\[Delta][j, m]*x[i, k]], {l, 1, 
        n}, {j, 1, n}, {i, 1, n}, {k, 1, n}]
    % // IndexUnify
    % // SumTogether


It is not summing the third part.