代码之家  ›  专栏  ›  技术社区  ›  JP Richardson

使用RubyPDF::Writer或Ruport显示数学能力?

  •  1
  • JP Richardson  · 技术社区  · 16 年前

    有没有一种简单的方法来显示使用RubyPDF::Writer库生成的PDF中的能力?我知道我可以把指数打印得比底数高一点,但是我想也许有更简单的方法可以做到这一点…例如某种类型的标记标记。

    基本上,我想清晰地显示x**-2。

    事先谢谢!

    1 回复  |  直到 16 年前
        1
  •  3
  •   JP Richardson    16 年前

    我写了一个快速算法来做我需要做的事情。希望它也能为你工作。唯一的要求是使用pdf::writer。下面的方法是使用pdf::writer和ruport。但是,如果您不使用ruport,您只需要更改“draw_-text”方法。将其替换为pdf::writer“text”方法。

    def draw_text_with_exponent(text, left, font_size)
        exponent_offset = 1
        font_size_reduction = 5
    
        words = text.split(" ")
    
        buffer = ""
        words.each() do |word|
            if (word.gsub("**", '') == word)
                buffer += word + " "
            else
                number = word.split("**")
                base = number[0]
                exponent = number[1]
    
                buffer += base
                draw_text(buffer, :left => left, :font_size => font_size)
                left += pdf_writer.text_line_width(buffer, font_size)
    
                pdf_writer.y+=exponent_offset
                draw_text(exponent, :left => left, :font_size => font_size - font_size_reduction)
                left += pdf_writer.text_line_width(exponent, font_size)
                buffer = ""
                pdf_writer.y-=exponent_offset
            end
        end
    
        if (buffer.length > 0)
            draw_text(buffer, :left => left, :font_size => font_size)
        end
    end
    

    以下是一个示例调用:

    draw_text_with_exponent("The numbers are x**2 and y**3 ok?", 50, 11)
    

    如果你对这个方法有什么问题,或者你找到了我最初问题的答案,请告诉我。

    JP