The rules should be consistent, similar constructs should be created in similar way.
The characters used should be related to the function they perform in some way (e.g. use quotes for quoting).
Number of additional rules to be learned and "gotchas" to be avoided should be minimized.
Exceptions should be avoided.
The level of abstraction (place on the scale between purely presentational and semantic markup) should be consistent.