2009-02-09 31 views
1

是否有一種簡單的方式顯示使用Ruby PDF :: Writer庫生成的PDF中的權力?我意識到我可以將指數打印得比基數高一點,但是我想也許有一些更簡單的方法來做到這一點...比如某種標記標記。使用Ruby PDF :: Writer或Ruport顯示數學能力?

基本上,我想幹淨地顯示x ** - 2。

在此先感謝!

回答

3

我寫了一個快速算法來做我需要做的事情。希望它也能爲你工作。唯一的要求是您使用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