Place pairs 180 degrees apart Place quadruples 90 degrees apart Place long labels near top and bottom Place short labels near left and right Sort labels that want to be in the same direction by label size. (Label length increasing towards the vertical extremes.) long(X) :- name(X,A), length(A,B), B > 10. short(X) :- name(X,A), length(A,B), B < 6. Pair a dummy entry with the odd menu item out to make the number of slices even, if necessary. Divide items into submenus with reasonable numbers of items. item(yes). item(no). pair(yes,no). top(yes). menu([yes,no]). item(north). item(south). pair(north,south). item(east). item(west). pair(east,west). quadruple(north,south,east,west). top(north). left(east). menu([north,south,east,west]). item(foo). item(bar). pair(foo,bar). item(numerator). item(denominator). pair(numerator,denominator). menu([foo,bar,numerator,denominator]). item(1). item(2). item(3). item(4). item(a). item(b). item(c). series([1,2,3,4]). series([a,b,c]). menu([1,2,3,4,a,b,c]).