2010-08-18 251 views
4

我试图从Ruby程序输出RTF(RTF格式) - 我宁愿直接发射RTF而不使用RTF gem,因为我正在做非常简单的事情。如何更改RTF文档中特定字符的背景颜色?

我想强调特定字符的DNA序列比对,并从文档看来,我既可以使用\ highlightN ... \ highlight0或\ CBN ... \ CB1

的问题是,我无法在Word:Mac 2008或Mac TextEdit(\ cf正常工作,因此我知道它不是颜色表问题)中工作\ cb可以工作,但它看起来只有两种可能的颜色(黑色和红色)和\ highlight不使用自定义颜色表。

通过在Word中创建具有字符着色和保存为RTF的简单文档,我可以看到大概可以做到我想要的可疑冗长RTF代码块,但是我看不到树木是如此的难以理解。

问题的一部分很可能是Mac Word只是没有正确实现RTF。我没有Windows的Word版本。

任何人都知道正确的方式来遮蔽文本块?

感谢 --Rob

回答

5

存在这样说MS Word不落实\ CB命令RTF Pocket Guide一个音符。它说MS Word使用\ chshdng0 \ chcbpatN(其中“N”是您使用\ cb的颜色编号)。为了与实现\ cbN和/或\ chshdng0 \ chcbpatN:{\ chshdng0 \ chcbpat5 \ cb5 text}的程序兼容,本书推荐使用以下内容。

注:我的书的副本已于2003年发布,因此它可能有点过期。

1

使用写字板来创建RTF文档,而不是Word。写字板创建更简单的文档,即接近人类可读的文档。

我每次使用写字板都需要在WinForms应用程序中显示格式化文本,并且需要RichTextBox控件可以处理的东西被分配给其Rtf参数。

2

RTF命令,这似乎是最普遍通过RTF能力的应用程序所支持的序列是:

\chshdng10000\chcbpatN\chcfpatN\cbN

这些命令:

  1. 设置遮光100%
  2. 将图案前景和背景颜色设置为颜色表中的颜色(我们实际上并未指定明暗图案)
  3. 设置字符背景的颜色与颜色表

字是最困难的应用程序正确地呈现在背景颜色:

尽管有什么最新的(1.9。1)RTF spec说,Word 2013不能解析\colortbl中的\highlightN颜色。相反,\highlightN映射到预定义的颜色列表。它看起来像那些颜色来自1.5 version of the RTF spec

关于\cb,在1.9.1规范包含了部分对颜色表到底这是很有帮助的指针:

注意:Word的 Windows版本都没有支持\ CB ñ,但它可以通过控制字序列\ chshdng0 \ chcbpat N来模拟。

这是几乎一个有用的建议,但如果你读了\chshdngN的文档:

字符底纹。 N参数是代表百分之一百分之百文本阴影的值。

因此,0原来不是一个非常有用的值; 100/0.01给了我们在上面的序列中使用的10000