DITA技巧:给文字加颜色

- 1 -

场景

在文档中,我们有时候会在文字中使用颜色。

比如:

在文档中,使用在文字上加颜色来代表一定意义。使用MS Word编写文档的时候,直接在文字上加颜色就可以了。转换成DITA以后,大家会发现在XML编辑器的工具栏中并没有加字体颜色的工具栏,怎样在DITA文档中给文字加颜色呢?

- 2 -

分析

DITA采用内容与样式分离的思想。文字的颜色属于样式,放在样式文件中,并不在DITA文件中。XML编辑器中编辑的是文档的DITA Topic内容,不能直接编辑样式。这就是在XML编辑器中的工具栏中没有给文字加颜色的工具的原因 (菜单中也没有)。

怎么解决这个问题呢?

上例中,如果按照DITA的设计思想,最好是给内容加语义标签,然后使用样式来将标签渲染成不同的颜色。比如将内容设计成这样:

注:是具体的禁止、指令、警告和提示的文字用这些标签包裹




    国家规定的安全色中表示警告注意的颜色
    
        

法律分析:

国家规定的安全色有红、蓝、黄、绿四种颜色,其含义是:红色表示禁止,停止 (也表示防火);蓝色 表示指令或必须遵守的规定;黄色表示警告、注意;绿色表示提示、安全状态、通行

这需要在DITA里通过专有化机制,即:Specialization,加入标签来实现。这会导致一系列的改动,比如:所有输出样式、处理程序。同时,以后DITA升级了也要单独升级这部分专有化处理。变动和维护成本比较高。

一种折中的方案是,通过DITA中已有的标签和属性来标识数据,然后在样式中根据自定义属性值来用颜色显示内容。比如将内容设计成这样:




    国家规定的安全色中表示警告注意的颜色
    
        

法律分析:

国家规定的安全色有红、蓝、黄、绿四种颜色,其含义是:红色表示禁止,停止 (也表示防火);蓝色表示指令或必须遵守的规定;黄色表示警告、注意;绿色表示提示、安全状态、通行

然后在样式中根据outputclass来给文字加颜色。

这种方案的好处是使用DITA已有的标签和属性即可,不必使用专有化来创建新的标签,只需要在样式中加一些代码就可以实现。 变动和以后维护的成本相对较低。

- 3 -

方案实现

上边的分析部分已经描述了DITA内容可以做成的样子。那样式这部分怎么实现呢?这部分来说一说。

如果使用的是CSS来发布HTML和PDF,可以使用如下代码:

*[outputclass~="color_red"]{
    color: red;
}


*[outputclass~="color_blue"]{
    color: blue;
}


*[outputclass~="color_yellow"]{
    color: yellow;
}


*[outputclass~="color_green"]{
    color: green;
}

将这些代码放到一个文件中,比如叫style.css,然后在发布的时候引用这个样式文件即可(使用DITA-OT是指定args.css属性,将它的值设置成style.css文件的路径)。

输出效果如下:

如果使用XSLT/XSL-FO来发布PDF,要复杂一些,可以使用下边的代码实现:





    
        
            
        
    


    
        
            
        
    


    
        
            
        
    


    
        
            
        
    


需要根据DITA-OT定制XSLT/XSL-FO的方法进行配置。

输出效果如下:



微信扫描下方卡片关注公众号