2009-02-09 18 views
1

Existe-t-il un moyen facile d'afficher les puissances en PDF générées à l'aide de la bibliothèque Ruby PDF :: Writer? Je me rends compte que je peux juste imprimer l'exposant un peu plus haut que le nombre de base, mais je pensais que peut-être il y a un moyen plus facile de le faire ... comme une balise de balisage quelconque.Afficher les puissances mathématiques en utilisant Ruby PDF :: Writer ou Ruport?

Fondamentalement, je veux afficher proprement x ** - 2.

Merci d'avance!

Répondre

3

J'ai rédigé un algorithme rapide pour faire ce que je devais faire. J'espère que cela fonctionnera pour vous aussi. La seule exigence est que vous utilisiez PDF :: Writer. La méthode ci-dessous utilise PDF :: Writer et Ruport. Cependant, si vous n'utilisez pas Ruport, la seule chose que vous devez changer est la méthode "draw_text". Substituez-le par la méthode "texte" PDF :: Writer.

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 

Voici un exemple d'appel:

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

Laissez-moi savoir si vous avez des problèmes avec cette méthode ou vous trouvez une réponse à ma question initiale.

-JP