1 | initial version |

You can't really control the expression in this way because Sage does some automatic simplifications.

However, you can control how the expression is output, e.g. as $\LaTeX$:

```
def latex_with_few_minuses(frac):
numer, denom = frac.numerator_denominator()
permutations = ((1, numer, denom), (-1, numer, -denom), (-1, -numer, denom), (1, -numer, -denom))
total_minuses = lambda args: sum(str(latex(arg)).count('-') for arg in args)
prefactor, numer, denom = min(permutations, key=total_minuses)
return LatexExpr(('-' if prefactor == -1 else '') + r'\frac{' + latex(numer) + '}{' + latex(denom) + '}')
```

In your example:

```
f, s, s_i = var("f, s, s_i")
thin_lens_formula = 1/f == 1/s + 1/s_i
sol = solve(thin_lens_formula, s)[0].rhs()
show(latex_with_few_minuses(sol))
```

displays

$$\frac{ f s_{i} }{ -f + s_{i} }$$

Copyright Sage, 2010. Some rights reserved under creative commons license. Content on this site is licensed under a Creative Commons Attribution Share Alike 3.0 license.