Convert SimpleMarkup to basic LaTeX report format.
# File rdoc/markup/to_latex.rb, line 139 def accept_blank_line(am, fragment) # @res << "\n" end
# File rdoc/markup/to_latex.rb, line 143 def accept_heading(am, fragment) @res << convert_heading(fragment.head_level, am.flow(fragment.txt)) end
# File rdoc/markup/to_latex.rb, line 123 def accept_list_end(am, fragment) if tag = @in_list_entry.pop @res << tag << "\n" end @res << list_name(fragment.type, false) << "\n" end
# File rdoc/markup/to_latex.rb, line 130 def accept_list_item(am, fragment) if tag = @in_list_entry.last @res << tag << "\n" end @res << list_item_start(am, fragment) @res << wrap(convert_flow(am.flow(fragment.txt))) << "\n" @in_list_entry[-1] = list_end_for(fragment.type) end
# File rdoc/markup/to_latex.rb, line 118 def accept_list_start(am, fragment) @res << list_name(fragment.type, true) << "\n" @in_list_entry.push false end
# File rdoc/markup/to_latex.rb, line 101 def accept_paragraph(am, fragment) @res << wrap(convert_flow(am.flow(fragment.txt))) @res << "\n" end
# File rdoc/markup/to_latex.rb, line 112 def accept_rule(am, fragment) size = fragment.param size = 10 if size > 10 @res << "\n\n\\rule{\\linewidth}{#{size}pt}\n\n" end
# File rdoc/markup/to_latex.rb, line 106 def accept_verbatim(am, fragment) @res << "\n\\begin{code}\n" @res << fragment.txt.sub(/[\n\s]+\Z/, '') @res << "\n\\end{code}\n\n" end
Add a new set of LaTeX tags for an attribute. We allow separate start and end tags for flexibility
# File rdoc/markup/to_latex.rb, line 85 def add_tag(name, start, stop) @attr_tags << InlineTag.new(RDoc::Markup::Attribute.bitmap_for(name), start, stop) end
# File rdoc/markup/to_latex.rb, line 97 def end_accepting @res.tr(BS, '\\').tr(OB, '{').tr(CB, '}').tr(DL, '$') end
Escape a LaTeX string
# File rdoc/markup/to_latex.rb, line 65 def escape(str) $stderr.print "FE: ", str if $DEBUG_RDOC s = str. sub(/\s+$/, ''). gsub(/([_\${}&%#])/, "#{BS}\\1"). gsub(/\\/, BACKSLASH). gsub(/\^/, HAT). gsub(/~/, TILDE). gsub(/</, LESSTHAN). gsub(/>/, GREATERTHAN). gsub(/,,/, ",{},"). gsub(/\`/, BACKQUOTE) $stderr.print "-> ", s, "\n" if $DEBUG_RDOC s end
# File rdoc/markup/to_latex.rb, line 28 def l(arg) RDoc::Markup::ToLaTeX.l(arg) end
Here's the client side of the visitor pattern
# File rdoc/markup/to_latex.rb, line 92 def start_accepting @res = "" @in_list_entry = [] end
This is a higher speed (if messier) version of wrap
# File rdoc/markup/to_latex.rb, line 150 def wrap(txt, line_len = 76) res = "" sp = 0 ep = txt.length while sp < ep # scan back for a space p = sp + line_len - 1 if p >= ep p = ep else while p > sp and txt[p] != ?\s p -= 1 end if p <= sp p = sp + line_len while p < ep and txt[p] != ?\s p += 1 end end end res << txt[sp...p] << "\n" sp = p sp += 1 while sp < ep and txt[sp] == ?\s end res end