diff --git a/kwant/continuum/discretizer.py b/kwant/continuum/discretizer.py
index 44788ecd6031a5095b7282c47f5c5467cc1a6c05..5f8705b6e9466b088068a3276f0984a5ff8c7e23 100644
--- a/kwant/continuum/discretizer.py
+++ b/kwant/continuum/discretizer.py
@@ -405,7 +405,7 @@ def _discretize_expression(expression, coords):
     def _extract_hoppings(expr):
         """Read hoppings and perform shortening operation."""
         expr = sympy.expand(expr)
-        summands = expr.args if expr.func == sympy.Add else [expr]
+        summands = expr.as_ordered_terms()
 
         offset = [_read_offset(s.args[-1]) for s in summands]
         coeffs = [sympy.Mul(*s.args[:-1]) for s in summands]