_(Issue FORMAT-VERBATIM): :(CLHS "FORMAT") should offer a directive that prints a string verbatim to the output stream, character by character, ignoring printer settings such as :(CLHS "*PRINT-CIRCLE*") and :(CLHS "*PRINT-LEVEL*"); i.e., one that corresponds to :(CLHS "WRITE-STRING") and not :(CLHS "PRINC") or :(CLHS "PRIN1").
The section on Formatted Output almost reads as if ~A is supposed to ignore printer settings when printing strings ("If arg is a string, its characters will be output verbatim"); however, under this interpretation, ~S will also ignore those variables when printing strings, since it's specified as "just like ~A, but arg is printed with escape characters", while it is clearly desirable to honor printer settings in ~S. So, at least some clarification is needed here.
Consider the following code snippet.
(defparameter *separator* ",")
(defstruct foo (a 'a) (b 'b))
(defmethod print-object ((foo foo) stream)
(print-unreadable-object (foo stream)
(format stream "~A~A~A" (foo-a foo) *separator* (foo-b foo))))
(let ((*print-circle* t)) (print (list (make-foo) (make-foo))))
The intended output is (# #). However, in at least one CL implementation, the output will be (# #), i.e., the printer will detect the shared structure and use sharpsign notation instead of printing the string verbatim. [Side note: There's no way to tell for sure where the printed representation of the object the #1= refers to ends, so the output is not very useful.] It's hard to argue that this output is non-conforming because of the wording in the description of ~S. So I don't think there's a way to write this print-object method without resorting to an explicit write-string (or copy-seq, but this will cons needlessly; or using a symbol, which is counter-intuitive). It's a pity format has this limitation.
Issue PRINC-READABLY seems to be related to this.