Thank you for the excellent solution, Michael! Your 1/Expand[1/frac] approach is really elegant.
I have a follow-up question: I modified your step-by-step method to divide both numerator and denominator by the parameter part of the numerator (excluding the sign and coefficient), and I came up with the following code:
sgn = Simplify[
Sign[frac], (var = Variables[Numerator@frac][[1]]) \[Element]
Reals && var != 0](*wrestle Mma over the sign*)
Sign@(Cases[Numerator[frac] , _?NumericQ, Infinity][[1]])
fac = sgn/((Numerator[
frac]/((Sign@(Cases[Numerator[frac] , _?NumericQ,
Infinity][[1]]))*(Cases[Numerator[frac] , _?NumericQ,
Infinity][[1]]))) //
Expand)(*construct factor for multiplying*)
newnd = fac*NumeratorDenominator[frac]; (*mult.num.& den.by fac*)
newnd = Expand /@ newnd; (*un-factor the product(s)*)
Divide @@ (newnd // Expand )(*construct new fraction*)
It works, but the code feels quite verbose and the nesting is a bit hard to follow. I was wondering if there's a more concise or optimized way to achieve the same result.