What about attribute values? These are for the most part arbitrary text strings, usually delimited by quotation marks. In the event that quotation marks are needed in the text itself, braces (or parentheses, square brackets, or angle brackets) may be used instead, provided that they are properly nested. The value text should not presuppose the existence of any particular text formatting system;¸attribute valueno formatting system in particular, it should be understandable to a human reader when it is displayed in the 95 printable characters of the ASCII character set.
Attribute values may span multiple lines, and in most cases, newlines can be treated like spaces.¸attribute valuenewlines in However, file header processing software must distinguish between spaces and newlines, and in some cases, such as for address values, newlines will be preserved in the output.
Since file headers are encoded inside language comments, each line will often begin with a comment start symbol and white space chosen to provide neat formatting of the header to enhance its readability. Thus, after stripping the comment start symbol, leading white space (blanks and horizontal tabs) may be ignored.¸attribute valueleading white space in
File header processing software may choose to eliminate common prefix strings consisting of a comment start symbol and following white space from successive lines of a single value, but preserve additional indentation space. Thus, the input
;;; name = "Blah blah blah blah blah blah ;;; blah blah blah blah blah blah. ;;; ;;; Blah blah blah blah blah. ;;; blah blah blah blah blah blah. ;;; ;;; Blah blah blah blah blah."
could produce the value string
Blah blah blah blah blah blah blah blah blah blah blah blah. Blah blah blah blah blah. blah blah blah blah blah blah. Blah blah blah blah blah.
if common prefixes are stripped, or
Blah blah blah blah blah blah blah blah blah blah blah blah. Blah blah blah blah blah. blah blah blah blah blah blah. Blah blah blah blah blah.
if all leading white space is discarded.
BibTEX¸bibtex adopts that convention that braced groups inside a value string are protected from certain actions, such as letter case conversion, or sorting. In particular, a single quotation mark may be enclosed in braces to prevent its recognition as a value string terminator, assuming the string was started by a quotation mark. Since BibTEX expects that its output will be processed by the TEX typesetting system, where braces serve as grouping commands, and are not normally themselves printable, this is a reasonable choice: the value string "A quotation mark, {"}, must be braced" will be reduced by TEX to A quotation mark, ", must be braced.
In the context of general file headers, this convention is not reasonable, because the value strings will not in general be processed by TEX, but instead, will be treated as verbatim strings.
Similarly, although the C programming language has character escape conventions to permit encoding of non-printable characters in printable form, such as n for newline and t for horizontal tab, such usages are undesirable in the context of general file headers that must serve for many different programming languages and file types.
Several programming languages adopt the convention that a quote inside a quoted string is represented by an adjacent pair of quotes. This convention is easy to understand, requires no additional escape characters, and permits unrestricted representation of all printable characters, and of course, white space (blanks and horizontal tabs). We adopt this convention for attribute value strings, but note that since balanced braces (parentheses, square brackets, angle brackets) can also be used to delimit value strings, the need for such doubling will be rare.¸attribute valuequote characters in
Attribute descriptions, GNU Emacs editing support, Attribute values, Top