Строка может содержать свойства для символов, которые она содержит, в дополнение к самим символам. Это позволяет программам, копирующим текст между строками и буферами, копировать свойства текста без особых усилий. См. Свойства текста для объяснения того, что означают свойства текста. Строки со свойствами текста используют специальный синтаксис чтения и вывода:
#("characters" property-data...)
где property-data состоит из одного или более элементов, сгруппированных по три следующим образом:
beg end plist
Элементы beg и end являются целыми числами и вместе определяют диапазон индексов в строке; plist — это список свойств для этого диапазона. Например,
#("foo bar" 0 3 (face bold) 3 4 nil 4 7 (face italic))
представляет строку, текстовое содержимое которой — «foo bar», в которой первые три символа имеют свойство face со значением bold, а последние три имеют свойство face со значением italic. (Четвертый символ не имеет текстовых свойств, поэтому его список свойств равен nil. Фактически не обязательно упоминать диапазоны с nil в качестве списка свойств, поскольку любые символы, не упомянутые в каком-либо диапазоне, по умолчанию считаются не имеющими свойств.)
>