You need to enable JavaScript to run this app.
优惠活动
大模型
产品
解决方案
定价
更多

Ruby的Caracal Gem是否支持下标功能?

Caracal Gem 下标功能实现方案

Caracal 官方文档未提供原生的下标(subscript)API,但可以通过以下两种方式实现下标效果:

1. 直接嵌入Word原生XML标签

Caracal 支持插入自定义XML代码,可利用Word的<w:subscript>标签快速实现下标:

Caracal::Document.save('subscript_demo.docx') do |docx|
  docx.p do
    docx.text 'H', bold: true
    # 插入下标文本
    docx.xml '<w:subscript><w:r><w:t>2</w:t></w:r></w:subscript>'
    docx.text 'O'
  end
end

2. 扩展Caracal核心模块实现自定义方法

如果需要频繁使用下标功能,可以扩展Caracal的TextModel模块,添加专属的下标参数:

module Caracal
  module Core
    module Models
      class TextModel
        attr_reader :subscript
        
        def initialize(options={}, &block)
          @subscript = options.fetch(:subscript, false)
          super(options, &block)
        end
        
        def to_xml
          builder = Nokogiri::XML::Builder.new do |xml|
            xml.r do
              if subscript
                xml.subscript do
                  xml.t content
                end
              else
                xml.t content
              end
            end
          end
          builder.to_xml(save_with: 0)
        end
      end
    end
  end
end

# 使用扩展后的下标功能
Caracal::Document.save('custom_subscript.docx') do |docx|
  docx.p do
    docx.text 'H', bold: true
    docx.text '2', subscript: true
    docx.text 'O'
  end
end

注意:第二种方式依赖Caracal的内部结构,后续版本更新可能需要调整代码。若该功能属于通用需求,也可以考虑向官方仓库提交PR贡献代码。

内容的提问来源于stack exchange,提问作者Giga _08

相关产品推荐
方舟 Agent Plan

超全模态模型 × Harness 升级,最新支持 Deepseek-V4.1-Flash、GLM-5.3 系列、Doubao-Seedream-5.0-pro、Kimi-K3 (部分), 限时 9.9 元起

最近更新时间:2026.08.20 18:24:43