In Files

  • rdoc/markup/to_latex.rb

Files

Class/Module Index [+]

Quicksearch

RDoc::Markup::ToLaTeX

Convert SimpleMarkup to basic LaTeX report format.

Public Class Methods

l(str) click to toggle source
 
               # File rdoc/markup/to_latex.rb, line 24
def self.l(str)
  str.tr('\', BS).tr('{', OB).tr('}', CB).tr('$', DL)
end
            
new() click to toggle source
 
               # File rdoc/markup/to_latex.rb, line 45
def initialize
  init_tags
  @list_depth = 0
  @prev_list_types = []
end
            

Public Instance Methods

accept_blank_line(am, fragment) click to toggle source
 
               # File rdoc/markup/to_latex.rb, line 139
def accept_blank_line(am, fragment)
  # @res << "\n"
end
            
accept_heading(am, fragment) click to toggle source
 
               # File rdoc/markup/to_latex.rb, line 143
def accept_heading(am, fragment)
  @res << convert_heading(fragment.head_level, am.flow(fragment.txt))
end
            
accept_list_end(am, fragment) click to toggle source
 
               # 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
            
accept_list_item(am, fragment) click to toggle source
 
               # 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
            
accept_list_start(am, fragment) click to toggle source
 
               # 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
            
accept_paragraph(am, fragment) click to toggle source
 
               # File rdoc/markup/to_latex.rb, line 101
def accept_paragraph(am, fragment)
  @res << wrap(convert_flow(am.flow(fragment.txt)))
  @res << "\n"
end
            
accept_rule(am, fragment) click to toggle source
 
               # 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
            
accept_verbatim(am, fragment) click to toggle source
 
               # 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_tag(name, start, stop) click to toggle source

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
            
end_accepting() click to toggle source
 
               # File rdoc/markup/to_latex.rb, line 97
def end_accepting
  @res.tr(BS, '\').tr(OB, '{').tr(CB, '}').tr(DL, '$')
end
            
escape(str) click to toggle source

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
            
init_tags() click to toggle source

Set up the standard mapping of attributes to LaTeX

 
               # File rdoc/markup/to_latex.rb, line 54
def init_tags
  @attr_tags = [
    InlineTag.new(RDoc::Markup::Attribute.bitmap_for(:BOLD), l("\\textbf{"), l("}")),
    InlineTag.new(RDoc::Markup::Attribute.bitmap_for(:TT),   l("\\texttt{"), l("}")),
    InlineTag.new(RDoc::Markup::Attribute.bitmap_for(:EM),   l("\\emph{"), l("}")),
  ]
end
            
l(arg) click to toggle source
 
               # File rdoc/markup/to_latex.rb, line 28
def l(arg)
  RDoc::Markup::ToLaTeX.l(arg)
end
            
start_accepting() click to toggle source

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
            
wrap(txt, line_len = 76) click to toggle source

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
            

Commenting is here to help enhance the documentation. For example, code samples, or clarification of the documentation.

If you have questions about Ruby or the documentation, please post to one of the Ruby mailing lists. You will get better, faster, help that way.

If you wish to post a correction of the docs, please do so, but also file bug report so that it can be corrected for the next release. Thank you.

If you want to help improve the Ruby documentation, please visit Documenting-ruby.org.

blog comments powered by Disqus