I don't like the addition of the boolean `humanfmt` argument.
 - It obfuscates the interaction/flow. For instance, because of the way this method is called, I don't think the `elif humanfmt` statement below is ever true. But because of the generalised signature of the method it looks like it needs to be defined.
 - And the name itself is confusing. It doesn't directly relate to either `str` or `repr`.

Having a boolean flag suggests decomposing the routine into the piece(s) which are dependent on the flag, and the piece(s) which are independent of the flag. In this case that breaks into [standard name and unit] vs. [long name, attributes, and coord system].