Possible goals (unspecified in OP):
Goal 1 is fairly easy. The others are a bit harder.
- The output looks right.
- The output, if copied and pasted into an input cell, can then be correctly evaluated.
- The result can be correctly evaluated (if stored in a variable or using
%).
Note that the TeX string has syntax error: The backslashes should be escaped. Luckily the expression wasn't "\nu x_1^{-1}". (Fixed below.)
Output that looks right (and with effort can be evaluated)
The simplest approach might be to wrap a negative (integer) power in HoldForm[]. One can use ?Negative for negative numeric powers or ?Internal`SyntacticNegativeQ for arbitrary exponents typeset with a leading minus sign. The latter is probably unnecessary, since things like x^-y are typeset with negative powers as desired. Example:
ToExpression[{"\\delta x_1^{-1}", "\\delta x_1^{1}"}, TeXForm, HoldForm] //. Power[b_, n_Integer?Negative] :> Power[b, HoldForm[n]]
Here is an operator to assist with putting the results of the OP's ToExpression[] into the desired form.
(* Semi-success *) toExpForm = ReplaceRepeated[Power[b_, n_Integer?Negative] :> Power[b, HoldForm[n]]]@* ReplaceAll[Power[b_, k_.*HoldForm[n_Integer?Negative]] :> b^(k*n)];
Note that the result cannot be used in calculations unless ReleaseHold[] is used twice, once for the HoldForm[] from ToExpression[] and once for the held negative integer powers. (You might have to use ReleaseHold[] more times in the ?Internal`SyntacticNegativeQ case, since it could produce nested held exponents).
tex1 = ToExpression[{"\\delta x_1^{-1}", "\\delta x_1^{1}"}, TeXForm, HoldForm] // toExpForm tex2 = ReleaseHold[tex1]^2 ReleaseHold[tex2] (* or: ReleaseHold[ReleaseHold[tex1]] *)


(* Second ReleaseHold in toExpForm *) ReleaseHold[tex1]^2 // toExpForm
So one can compute with the formatted result, but you to release two layers of holds instead of just one (from the ToExpression[..., HoldForm]
Satisfying all three goals
MakeBoxes[] is the main tool for formatting output. When it is applied by the system after the evaluation process, it does not change the result. It creates the box form of the result to be displayed by the front end.
There are a couple of ways it could be used. One could make a permanent change, or, as I've done below, one could create a noFractionForm, that works a bit like TraditionalForm. To do that, one has to add the new form to $BoxForms and make some definitions for MakeBoxes[]. I like to record the original values for system parameters like $BoxForms:
$BoxForms $BoxForms // Attributes (* {StandardForm, TraditionalForm} {ReadProtected} *)
Here is the definition of noFractionForm
$BoxForms = DeleteDuplicates@Append[$BoxForms, noFractionForm]; MakeBoxes[noFractionForm[Power][Subscript[b_, k_], n_Integer?Negative], form_] := SubsuperscriptBox[Parenthesize[b, form, Power, Left], MakeBoxes[k, form], MakeBoxes[n, form]]; MakeBoxes[noFractionForm[Power][b_, n_Integer?Negative], form_] := SuperscriptBox[Parenthesize[b, form, Power, Left], MakeBoxes[n, form]]; MakeBoxes[expr_, noFractionForm] := With[{newExpr = HoldComplete[expr] //. Power[b_, n_Integer?Negative] :> noFractionForm[Power][b, n]}, Replace[newExpr, HoldComplete[e_] :> FormBox[MakeBoxes[e, StandardForm], StandardForm]] ]; noFractionForm /: ParentForm[noFractionForm] := StandardForm;
The last line isn't needed. (At one point, I did, but the FormBox[..., StandardForm] eliminated that need.) In any case, it turns noFractionForm black, which I found pleasing.
ToExpression[{"\\delta x_1^{-1}", "\\delta x_1^{1}"}, TeXForm, HoldForm] // noFractionForm
ReleaseHold[%]^2 // noFractionForm
Finally, here is how to unset noFractionForm:
(** Unset noFractionForm *) MakeBoxes[noFractionForm[Power][Subscript[b_, k_], n_Integer?Negative], form_] =.; MakeBoxes[noFractionForm[Power][b_, n_Integer?Negative], form_] =.; MakeBoxes[expr_, noFractionForm] =.; ClearAll[noFractionForm] $BoxForms = DeleteCases[$BoxForms, noFractionForm] (* {StandardForm, TraditionalForm} *)
Note that the patterns being Unset[] must match exactly the pattern that was set.
FullForm[]of the output ofToExpression[], you see that what you get isHoldForm[Times[\[Delta], Power[Subscript[x, 1], -1]]]. The trouble is not withToExpression[], it's with the typesetting of the result by done by the FrontEnd. I may be able to find aStyle[]option to get what you want...or someone may be me to it. But perhaps the output formatting is not a concern? $\endgroup$HoldForm. But if you evaluateHoldForm[x^(-1)]you will see that it does not do what you think it should do. $\endgroup$