文字列は、文字そのものに加えて、文字の属性も保持できます。 このため、特別なことをしなくても、 文字列とバッファのあいだでテキストをコピーするプログラムは、 テキスト属性をコピーできます。 テキスト属性の意味については、See Text Properties。 テキスト属性付きの文字列には、特別な入力構文があります。
#("characters" property-data...)
ここで、property-dataは0個以上のつぎのような3つ組みです。
beg end plist
3つ組みの要素、begとendは整数であり、 文字列内の添字の範囲を表します。 plistはその範囲の属性リストです。 たとえば、
#("foo bar" 0 3 (face bold) 3 4 nil 4 7 (face italic))
は、最初の3文字がface
属性としてbold
を持ち、
最後の3文字がface
属性としてitalic
を持つ、
‘foo bar’という文字列を表します。
(4番目の文字にはテキスト属性はなく、その属性リストはnil
。
デフォルトでは、範囲に含まれない文字には属性はないので、
属性リストがnil
であるような範囲を言及する必要はない。)