1. A method for automatic document component layout comprising the steps of: a. determining a set of variables that can be adjusted to achieve a satisfactory layout; b. expressing said satisfactory layout as a set of constraints on said determined set of variables wherein at least one of said set of constraints is expressed as being optimizable; and c. solving said constraints to find at least one layout which solves for the variables over the constraints.