与往常一样,解决 AS 问题有很多选择。在我的脚本文本编辑器 (Ted) 中,我实现了基于富文本(NSTextStorage,NSMutableAttributedString 的子类)的文本套件。我希望能够在我的段落中编写标签,所以我添加了一个样式记录,其中包含所有段落样式信息。这让我可以编写这样的脚本:
tell application "Ted"
set doc1 to make new document at beginning with properties {name:"Document One"}
tell doc1
set p1 to make new paragraph at end with data "Paragraph One" with properties {size:24, color:maraschino}
set p2 to make new paragraph at end with data "Paragraph Two" with properties {style:style of paragraph 1}
set color of paragraph 1 to blue
end tell
set doc2 to make new document at beginning with properties {name:"Document Two"}
copy p1 to beginning of doc2
properties of paragraph 1 of doc2
end tell
由于 p1 是富文本,因此第二个文档以第一个文档的第一段的文本和格式结束。
您还可以询问一段文本的属性,我在其中实现了通常的 Text Suite 属性,以及段落样式的“样式”属性(由 NSParagraphStyle 支持,因为我希望能够编写制表位脚本):
properties of paragraph 1 of doc2
结果:{height:60.0, italic:false, size:24, style:{后段间距:0.0, head indent:0.0, line break mode:0, alignment:4, line pitch:0.0, minimum line height:0.0,首行缩进:0.0,前段间距:0.0,制表符:{“28L”、“56L”、“84L”、“112L”、“140L”、“168L”、“196L”、“224L”、“252L” ", "280L", "308L", "336L"}, 尾部缩进:0.0, 最大行高:0.0, 行高倍数:0.0, 默认制表间隔:0.0}, 颜色:蓝色, 宽度:164.109375, 字体:" Helvetica",粗体:false,类:属性运行}
这适用于在我的应用程序中传递富文本,但对于将样式文本传递给其他应用程序可能没有那么有用,这可能是您想要做的。我认为添加“样式”属性(类型记录)可能是传达样式信息以用于其他可编写脚本的应用程序的最佳方式。然后在第二个应用程序中,脚本编写者可以使用第二个应用程序理解的样式记录中的任何属性。