class ReVIEW::LATEXBuilder

Constants

BOUTEN
HEADLINE

Public Instance Methods

bibpaper_bibpaper(id, caption, lines) click to toggle source
# File lib/review/latexbuilder.rb, line 923
def bibpaper_bibpaper(id, caption, lines)
  print split_paragraph(lines).join("")
  puts ""
end
bibpaper_header(id, caption) click to toggle source
# File lib/review/latexbuilder.rb, line 918
def bibpaper_header(id, caption)
  puts "[#{@chapter.bibpaper(id).number}] #{compile_inline(caption)}"
  puts macro('label', bib_label(id))
end
box(lines, caption = nil) click to toggle source
# File lib/review/latexbuilder.rb, line 186
def box(lines, caption = nil)
  blank
  if caption
    puts macro('reviewboxcaption', "#{compile_inline(caption)}")
  end
  puts '\begin{reviewbox}'
  lines.each do |line|
    puts detab(line)
  end
  puts '\end{reviewbox}'
  blank
end
captionblock(type, lines, caption) click to toggle source
# File lib/review/latexbuilder.rb, line 174
def captionblock(type, lines, caption)
  puts "\\begin{reviewminicolumn}\n"
  unless caption.nil?
    puts "\\reviewminicolumntitle{#{compile_inline(caption)}}\n"
  end

  blocked_lines = split_paragraph(lines)
  puts blocked_lines.join("\n\n")

  puts "\\end{reviewminicolumn}\n"
end
center(lines) click to toggle source
# File lib/review/latexbuilder.rb, line 636
def center(lines)
  latex_block 'center', lines
end
Also aliased as: centering
centering(lines)
Alias for: center
cmd(lines, caption = nil, lang = nil) click to toggle source
# File lib/review/latexbuilder.rb, line 324
def cmd(lines, caption = nil, lang = nil)
  if highlight_listings?
    common_code_block_lst(nil, lines, 'reviewcmdlst', 'title', caption, lang)
  else
    blank
    common_code_block(nil, lines, 'reviewcmd', caption, lang) do |line, idx|
      detab(line) + "\n"
    end
  end
end
column_begin(level, label, caption) click to toggle source
# File lib/review/latexbuilder.rb, line 155
def column_begin(level, label, caption)
  blank
  puts "\\begin{reviewcolumn}\n"
  if label
    puts "\\hypertarget{#{column_label(label)}}{}"
  else
    puts "\\hypertarget{#{column_label(caption)}}{}"
  end
  puts macro('reviewcolumnhead', nil, compile_inline(caption))
  if level <= @book.config["toclevel"].to_i
    puts "\\addcontentsline{toc}{#{HEADLINE[level]}}{#{compile_inline(caption)}}"
  end
end
column_end(level) click to toggle source
# File lib/review/latexbuilder.rb, line 169
def column_end(level)
  puts "\\end{reviewcolumn}\n"
  blank
end
comment(lines, comment = nil) click to toggle source
# File lib/review/latexbuilder.rb, line 673
def comment(lines, comment = nil)
  lines ||= []
  lines.unshift comment unless comment.blank?
  if @book.config["draft"]
    str = lines.join('\par ')
    puts macro('pdfcomment', escape(str))
  end
end
common_code_block(id, lines, command, caption, lang) { |line, idx| ... } click to toggle source
# File lib/review/latexbuilder.rb, line 335
def common_code_block(id, lines, command, caption, lang)
  if caption
    if command =~ /emlist/ || command =~ /cmd/ || command =~ /source/
      puts macro(command + 'caption', "#{compile_inline(caption)}")
    else
      begin
        puts macro('reviewlistcaption', "#{I18n.t("list")}#{I18n.t("format_number_header", [@chapter.number, @chapter.list(id).number])}#{I18n.t("caption_prefix")}#{compile_inline(caption)}")
      rescue KeyError
        error "no such list: #{id}"
      end
    end
  end
  body = ""
  lines.each_with_index do |line, idx|
    body.concat(yield(line, idx))
  end
  puts macro('begin',command)
  print body
  puts macro('end',command)
  blank
end
common_code_block_lst(id, lines, command, title, caption, lang, first_line_num: 1) click to toggle source
# File lib/review/latexbuilder.rb, line 357
def common_code_block_lst(id, lines, command, title, caption, lang, first_line_num: 1)
  if title == "title" && caption.blank?
    print "\\vspace{-1.5em}"
  end
  body = lines.inject(''){|i, j| i + detab(unescape_latex(j)) + "\n"}
  args = make_code_block_args(title, caption, lang, first_line_num: first_line_num)
  puts "\\begin{"+command+"}[" + args + "]"
  print body
  puts "\\end{"+ command + "}"
  blank
end
compile_href(url, label) click to toggle source
# File lib/review/latexbuilder.rb, line 960
def compile_href(url, label)
  if /\A[a-z]+:/ =~ url
    if label
      macro("href", escape_url(url), escape(label))
    else
      macro("url", escape_url(url))
    end
  else
    macro("ref", url)
  end
end
compile_kw(word, alt) click to toggle source
# File lib/review/latexbuilder.rb, line 952
def compile_kw(word, alt)
  if alt
    macro('reviewkw', escape(word)) + "(#{escape(alt.strip)})"
  else
    macro('reviewkw', escape(word))
  end
end
compile_ruby(base, ruby) click to toggle source
# File lib/review/latexbuilder.rb, line 775
def compile_ruby(base, ruby)
  macro('ruby', escape(base), escape(ruby))
end
dd(lines) click to toggle source
# File lib/review/latexbuilder.rb, line 246
def dd(lines)
  puts lines.join
end
direct(lines, fmt) click to toggle source
# File lib/review/latexbuilder.rb, line 666
def direct(lines, fmt)
  return unless fmt == 'latex'
  lines.each do |line|
    puts line
  end
end
dl_begin() click to toggle source
# File lib/review/latexbuilder.rb, line 235
def dl_begin
  blank
  puts '\begin{description}'
end
dl_end() click to toggle source
# File lib/review/latexbuilder.rb, line 250
def dl_end
  puts '\end{description}'
  blank
end
dt(str) click to toggle source
# File lib/review/latexbuilder.rb, line 240
def dt(str)
  str.sub!(/\[/){'\lbrack{}'}
  str.sub!(/\]/){'\rbrack{}'}
  puts '\item[' + str + '] \mbox{} \\'
end
emlist(lines, caption = nil, lang = nil) click to toggle source
# File lib/review/latexbuilder.rb, line 278
def emlist(lines, caption = nil, lang = nil)
  blank
  if highlight_listings?
    common_code_block_lst(nil, lines, 'reviewemlistlst', 'title', caption, lang)
  else
    common_code_block(nil, lines, 'reviewemlist', caption, lang) do |line, idx|
      detab(line) + "\n"
    end
  end
end
emlistnum(lines, caption = nil, lang = nil) click to toggle source
# File lib/review/latexbuilder.rb, line 289
def emlistnum(lines, caption = nil, lang = nil)
  blank
  first_line_num = get_line_num
  if highlight_listings?
    common_code_block_lst(nil, lines, 'reviewemlistnumlst', 'title', caption, lang, first_line_num: first_line_num)
  else
    common_code_block(nil, lines, 'reviewemlist', caption, lang) do |line, idx|
      detab((idx+first_line_num).to_s.rjust(2)+": " + line) + "\n"
    end
  end
end
extname() click to toggle source
# File lib/review/latexbuilder.rb, line 29
def extname
  '.tex'
end
flushright(lines) click to toggle source
# File lib/review/latexbuilder.rb, line 642
def flushright(lines)
  latex_block 'flushright', lines
end
footnote(id, content) click to toggle source
# File lib/review/latexbuilder.rb, line 754
def footnote(id, content)
  if @book.config["footnotetext"]
    puts macro("footnotetext[#{@chapter.footnote(id).number}]",
               compile_inline(content.strip))
  end
end
handle_metric(str) click to toggle source
# File lib/review/latexbuilder.rb, line 401
def handle_metric(str)
  if @book.config["image_scale2width"] && str =~ /\Ascale=([\d.]+)\Z/
    return "width=#{$1}\\maxwidth"
  end
  str
end
headline(level, label, caption) click to toggle source
# File lib/review/latexbuilder.rb, line 104
def headline(level, label, caption)
  _, anchor = headline_prefix(level)
  headline_name = HEADLINE[level]
  if @chapter.kind_of? ReVIEW::Book::Part
    headline_name = "part"
  end
  prefix = ""
  if level > @book.config["secnolevel"] || (@chapter.number.to_s.empty? && level > 1)
    prefix = "*"
  end
  blank unless @output.pos == 0
  puts macro(headline_name+prefix, compile_inline(caption))
  if prefix == "*" && level <= @book.config["toclevel"].to_i
    puts "\\addcontentsline{toc}{#{headline_name}}{#{compile_inline(caption)}}"
  end
  if level == 1
    puts macro('label', chapter_label)
  else
    puts macro('label', sec_label(anchor))
  end
rescue
  error "unknown level: #{level}"
end
hr() click to toggle source
# File lib/review/latexbuilder.rb, line 682
def hr
  puts '\hrule'
end
image_dummy(id, caption, lines) click to toggle source
# File lib/review/latexbuilder.rb, line 428
def image_dummy(id, caption, lines)
  puts '\begin{reviewdummyimage}'
  path = @chapter.image(id).path
  puts "--[[path = #{path} (#{existence(id)})]]--"
  lines.each do |line|
    puts detab(line.rstrip)
  end
  puts macro('label', image_label(id))
  puts compile_inline(caption)
  puts '\end{reviewdummyimage}'
end
image_ext() click to toggle source
# File lib/review/latexbuilder.rb, line 976
def image_ext
  "pdf"
end
image_header(id, caption) click to toggle source
# File lib/review/latexbuilder.rb, line 398
def image_header(id, caption)
end
image_image(id, caption, metric) click to toggle source
# File lib/review/latexbuilder.rb, line 412
def image_image(id, caption, metric)
  metrics = parse_metric("latex", metric)
  # image is always bound here
  puts '\begin{reviewimage}'
  if metrics.present?
    puts "\\includegraphics[#{metrics}]{#{@chapter.image(id).path}}"
  else
    puts "\\includegraphics[width=\\maxwidth]{#{@chapter.image(id).path}}"
  end
  if caption.present?
    puts macro('caption', compile_inline(caption))
  end
  puts macro('label', image_label(id))
  puts '\end{reviewimage}'
end
imgtable(lines, id, caption = nil, metric = nil) click to toggle source
# File lib/review/latexbuilder.rb, line 596
def imgtable(lines, id, caption = nil, metric = nil)
  if !@chapter.image(id).bound?
    warn "image not bound: #{id}"
    image_dummy id, caption, lines
    return
  end

  begin
    if caption.present?
      @table_caption = true
      puts '\begin{table}[h]'
      puts macro('reviewimgtablecaption', compile_inline(caption))
    end
    puts macro('label', table_label(id))
  rescue ReVIEW::KeyError
    error "no such table: #{id}"
  end
  imgtable_image(id, caption, metric)

  puts '\end{table}' if @table_caption
  @table_caption = nil
  blank
end
imgtable_image(id, caption, metric) click to toggle source
# File lib/review/latexbuilder.rb, line 620
def imgtable_image(id, caption, metric)
  metrics = parse_metric("latex", metric)
  # image is always bound here
  puts '\begin{reviewimage}'
  if metrics.present?
    puts "\\includegraphics[#{metrics}]{#{@chapter.image(id).path}}"
  else
    puts "\\includegraphics[width=\\maxwidth]{#{@chapter.image(id).path}}"
  end
  puts '\end{reviewimage}'
end
indepimage(id, caption=nil, metric=nil) click to toggle source
# File lib/review/latexbuilder.rb, line 479
def indepimage(id, caption=nil, metric=nil)
  metrics = parse_metric("latex", metric)
  puts '\begin{reviewimage}'
  if metrics.present?
    puts "\\includegraphics[#{metrics}]{#{@chapter.image(id).path}}"
  else
    puts "\\includegraphics[width=\\maxwidth]{#{@chapter.image(id).path}}"
  end
  if caption.present?
    puts macro('reviewindepimagecaption',
               %Q[#{I18n.t("numberless_image")}#{I18n.t("caption_prefix")}#{compile_inline(caption)}])
  end
  puts '\end{reviewimage}'
end
Also aliased as: numberlessimage
index(str) click to toggle source
# File lib/review/latexbuilder.rb, line 928
def index(str)
  sa = str.split('<<>>')

  sa.map! do |item|
    if @index_db[item]
      item = escape_index(escape_latex(@index_db[item])) + "@" + escape_index(escape_latex(item))
    else
      if item =~ /\A[[:ascii:]]+\Z/ || @index_mecab.nil?
        esc_item = escape_index(escape_latex(item))
        if esc_item != item
          "#{escape_index(item)}@#{esc_item}"
        else
          esc_item
        end
      else
        yomi = NKF.nkf("-w --hiragana", @index_mecab.parse(item).force_encoding("UTF-8").chomp)
        escape_index(escape_latex(yomi)) + "@" + escape_index(escape_latex(item))
      end
    end
  end

  "\\index{#{sa.join('!')}}"
end
inline_ami(str) click to toggle source
# File lib/review/latexbuilder.rb, line 893
def inline_ami(str)
  macro('reviewami', escape(str))
end
inline_b(str) click to toggle source

bold

# File lib/review/latexbuilder.rb, line 805
def inline_b(str)
  macro('textbf', escape(str))
end
inline_bib(id) click to toggle source
# File lib/review/latexbuilder.rb, line 844
def inline_bib(id)
  macro('reviewbibref', "[#{@chapter.bibpaper(id).number}]", bib_label(id))
end
inline_bou(str) click to toggle source
# File lib/review/latexbuilder.rb, line 771
def inline_bou(str)
  str.split(//).map {|c| macro('ruby', escape(c), macro('textgt', BOUTEN)) }.join('\allowbreak')
end
inline_br(str) click to toggle source

line break

# File lib/review/latexbuilder.rb, line 810
def inline_br(str)
  "\\\\\n"
end
inline_chap(id) click to toggle source
# File lib/review/latexbuilder.rb, line 714
def inline_chap(id)
  if @book.config["chapterlink"]
    "\\hyperref[chap:#{id}]{#{@book.chapter_index.number(id)}}"
  else
    @book.chapter_index.number(id)
  end
rescue KeyError
  error "unknown chapter: #{id}"
  nofunc_text("[UnknownChapter:#{id}]")
end
inline_chapref(id) click to toggle source
Calls superclass method ReVIEW::Builder#inline_chapref
# File lib/review/latexbuilder.rb, line 702
def inline_chapref(id)
  title = super
  if @book.config["chapterlink"]
    "\\hyperref[chap:#{id}]{#{title}}"
  else
    title
  end
rescue KeyError
  error "unknown chapter: #{id}"
  nofunc_text("[UnknownChapter:#{id}]")
end
inline_code(str) click to toggle source

@<code> is same as @<tt>

# File lib/review/latexbuilder.rb, line 820
def inline_code(str)
  macro('texttt', escape(str))
end
inline_column_chap(chapter, id) click to toggle source
# File lib/review/latexbuilder.rb, line 863
def inline_column_chap(chapter, id)
  macro('reviewcolumnref',
        I18n.t("chapter_quote", compile_inline(chapter.column(id).caption)),
        column_label(id))
end
inline_comment(str) click to toggle source
# File lib/review/latexbuilder.rb, line 906
def inline_comment(str)
  if @book.config["draft"]
    macro('pdfcomment', escape(str))
  else
    ""
  end
end
inline_del(str) click to toggle source
# File lib/review/latexbuilder.rb, line 832
def inline_del(str)
  macro('reviewstrike', escape(str))
end
inline_dtp(str) click to toggle source
# File lib/review/latexbuilder.rb, line 814
def inline_dtp(str)
  # ignore
  ""
end
inline_em(str) click to toggle source
# File lib/review/latexbuilder.rb, line 881
def inline_em(str)
  macro('reviewem', escape(str))
end
inline_fn(id) click to toggle source
# File lib/review/latexbuilder.rb, line 761
def inline_fn(id)
  if @book.config["footnotetext"]
    macro("footnotemark[#{@chapter.footnote(id).number}]", "")
  else
    macro('footnote', compile_inline(@chapter.footnote(id).content.strip))
  end
end
inline_hd_chap(chap, id) click to toggle source
# File lib/review/latexbuilder.rb, line 848
def inline_hd_chap(chap, id)
  n = chap.headline_index.number(id)
  if chap.number and @book.config["secnolevel"] >= n.split('.').size
    str = I18n.t("chapter_quote", "#{chap.headline_index.number(id)} #{compile_inline(chap.headline(id).caption)}")
  else
    str = I18n.t("chapter_quote", compile_inline(chap.headline(id).caption))
  end
  if @book.config["chapterlink"]
    anchor = n.gsub(/\./, "-")
    macro('reviewsecref', str, sec_label(anchor))
  else
    str
  end
end
inline_hi(str) click to toggle source

hidden index

# File lib/review/latexbuilder.rb, line 785
def inline_hi(str)
  index(str)
end
inline_hidx(str) click to toggle source

hidden index??

# File lib/review/latexbuilder.rb, line 800
def inline_hidx(str)
  index(str)
end
inline_i(str) click to toggle source

index -> italic

# File lib/review/latexbuilder.rb, line 790
def inline_i(str)
  macro('textit', escape(str))
end
inline_icon(id) click to toggle source
# File lib/review/latexbuilder.rb, line 897
def inline_icon(id)
  macro('includegraphics', @chapter.image(id).path)
end
inline_idx(str) click to toggle source

index

# File lib/review/latexbuilder.rb, line 795
def inline_idx(str)
  escape(str) + index(str)
end
inline_img(id) click to toggle source
# File lib/review/latexbuilder.rb, line 749
def inline_img(id)
  chapter, id = extract_chapter_id(id)
  macro('reviewimageref', "#{chapter.number}.#{chapter.image(id).number}", image_label(id, chapter))
end
inline_list(id) click to toggle source

FIXME: use TeX native label/ref.

# File lib/review/latexbuilder.rb, line 739
def inline_list(id)
  chapter, id = extract_chapter_id(id)
  macro('reviewlistref', "#{chapter.number}.#{chapter.list(id).number}")
end
inline_m(str) click to toggle source

math

# File lib/review/latexbuilder.rb, line 780
def inline_m(str)
  " $#{str}$ "
end
inline_raw(str) click to toggle source
Calls superclass method ReVIEW::Builder#inline_raw
# File lib/review/latexbuilder.rb, line 869
def inline_raw(str)
  super(str)
end
inline_strong(str) click to toggle source
# File lib/review/latexbuilder.rb, line 885
def inline_strong(str)
  macro('reviewstrong', escape(str))
end
inline_sub(str) click to toggle source
# File lib/review/latexbuilder.rb, line 873
def inline_sub(str)
  macro('textsubscript', escape(str))
end
inline_sup(str) click to toggle source
# File lib/review/latexbuilder.rb, line 877
def inline_sup(str)
  macro('textsuperscript', escape(str))
end
inline_table(id) click to toggle source
# File lib/review/latexbuilder.rb, line 744
def inline_table(id)
  chapter, id = extract_chapter_id(id)
  macro('reviewtableref', "#{chapter.number}.#{chapter.table(id).number}", table_label(id, chapter))
end
inline_tcy(str) click to toggle source
# File lib/review/latexbuilder.rb, line 914
def inline_tcy(str)
  macro('rensuji', escape(str))
end
inline_title(id) click to toggle source
Calls superclass method ReVIEW::Builder#inline_title
# File lib/review/latexbuilder.rb, line 725
def inline_title(id)
  title = super
  if @book.config["chapterlink"]
    "\\hyperref[chap:#{id}]{#{title}}"
  else
    title
  end
rescue KeyError
  error "unknown chapter: #{id}"
  nofunc_text("[UnknownChapter:#{id}]")
end
inline_tt(str) click to toggle source
# File lib/review/latexbuilder.rb, line 828
def inline_tt(str)
  macro('texttt', escape(str))
end
inline_ttb(str) click to toggle source
# File lib/review/latexbuilder.rb, line 840
def inline_ttb(str)
  macro('texttt', macro('textbf', escape(str)))
end
inline_tti(str) click to toggle source
# File lib/review/latexbuilder.rb, line 836
def inline_tti(str)
  macro('texttt', macro('textit', escape(str)))
end
inline_u(str) click to toggle source
# File lib/review/latexbuilder.rb, line 889
def inline_u(str)
  macro('reviewunderline', escape(str))
end
inline_uchar(str) click to toggle source
# File lib/review/latexbuilder.rb, line 901
def inline_uchar(str)
  # with otf package
  macro('UTF', escape(str))
end
label(id) click to toggle source
# File lib/review/latexbuilder.rb, line 686
def label(id)
  puts macro('label', id)
end
latextsize(str) click to toggle source
# File lib/review/latexbuilder.rb, line 972
def latextsize(str)
  @latex_tsize = str
end
lead(lines)
Alias for: read
linebreak() click to toggle source
# File lib/review/latexbuilder.rb, line 694
def linebreak
  puts '\\'
end
list(lines, id, caption, lang = nil) click to toggle source

override ReVIEW::Builder#list

# File lib/review/latexbuilder.rb, line 302
def list(lines, id, caption, lang = nil)
  if highlight_listings?
    common_code_block_lst(id, lines, 'reviewlistlst', 'caption', caption, lang)
  else
    common_code_block(id, lines, 'reviewlist', caption, lang) do |line, idx|
      detab(line) + "\n"
    end
  end
end
listnum(lines, id, caption, lang = nil) click to toggle source

override ReVIEW::Builder#listnum

# File lib/review/latexbuilder.rb, line 313
def listnum(lines, id, caption, lang = nil)
  first_line_num = get_line_num
  if highlight_listings?
    common_code_block_lst(id, lines, 'reviewlistnumlst', 'caption', caption, lang, first_line_num: first_line_num)
  else
    common_code_block(id, lines, 'reviewlist', caption, lang) do |line, idx|
      detab((idx+first_line_num).to_s.rjust(2)+": " + line) + "\n"
    end
  end
end
load_idxdb(file) click to toggle source
# File lib/review/latexbuilder.rb, line 63
def load_idxdb(file)
  table = {}
  File.foreach(file) do |line|
    key, value = *line.strip.split(/\t+/, 2)
    table[key] = value
  end
  table
end
make_code_block_args(title, caption, lang, first_line_num: 1) click to toggle source
# File lib/review/latexbuilder.rb, line 369
def make_code_block_args(title, caption, lang, first_line_num: 1)
  caption_str = compile_inline((caption || ""))
  if title == "title" && caption_str == ""
    caption_str = "\\relax" ## dummy charactor to remove lstname
  end
  if @book.config["highlight"] && @book.config["highlight"]["lang"]
    lexer = @book.config["highlight"]["lang"] # default setting
  else
    lexer = ""
  end
  lexer = lang if lang.present?
  args = title + "={" + caption_str + "},language={" + lexer + "}"
  if first_line_num != 1
    args += ",firstnumber=#{first_line_num}"
  end
  args
end
nodisp_begin(level, label, caption) click to toggle source
# File lib/review/latexbuilder.rb, line 145
def nodisp_begin(level, label, caption)
  blank unless @output.pos == 0
  puts macro('clearpage') if @output.pos == 0
  puts macro('addcontentsline', 'toc', HEADLINE[level], compile_inline(caption))
  # FIXME: headings
end
nodisp_end(level) click to toggle source
# File lib/review/latexbuilder.rb, line 152
def nodisp_end(level)
end
nofunc_text(str) click to toggle source
# File lib/review/latexbuilder.rb, line 824
def nofunc_text(str)
  escape(str)
end
noindent() click to toggle source
# File lib/review/latexbuilder.rb, line 698
def noindent
  print '\noindent'
end
nonum_begin(level, label, caption) click to toggle source
# File lib/review/latexbuilder.rb, line 128
def nonum_begin(level, label, caption)
  blank unless @output.pos == 0
  puts macro(HEADLINE[level]+"*", compile_inline(caption))
  puts macro('addcontentsline', 'toc', HEADLINE[level], compile_inline(caption))
end
nonum_end(level) click to toggle source
# File lib/review/latexbuilder.rb, line 134
def nonum_end(level)
end
notoc_begin(level, label, caption) click to toggle source
# File lib/review/latexbuilder.rb, line 137
def notoc_begin(level, label, caption)
  blank unless @output.pos == 0
  puts macro(HEADLINE[level]+"*", compile_inline(caption))
end
notoc_end(level) click to toggle source
# File lib/review/latexbuilder.rb, line 142
def notoc_end(level)
end
numberlessimage(id, caption=nil, metric=nil)
Alias for: indepimage
ol_begin() click to toggle source
# File lib/review/latexbuilder.rb, line 215
def ol_begin
  blank
  puts '\begin{enumerate}'
  if @ol_num
    puts "\\setcounter{enumi}{#{@ol_num - 1}}"
    @ol_num = nil
  end
end
ol_end() click to toggle source
# File lib/review/latexbuilder.rb, line 230
def ol_end
  puts '\end{enumerate}'
  blank
end
ol_item(lines, num) click to toggle source
# File lib/review/latexbuilder.rb, line 224
def ol_item(lines, num)
  str = lines.join
  str.sub!(/\A(\[)/){'\lbrack{}'}
  puts '\item ' + str
end
olnum(num) click to toggle source
# File lib/review/latexbuilder.rb, line 980
def olnum(num)
  @ol_num = num.to_i
end
pagebreak() click to toggle source
# File lib/review/latexbuilder.rb, line 690
def pagebreak
  puts '\pagebreak'
end
paragraph(lines) click to toggle source
# File lib/review/latexbuilder.rb, line 255
def paragraph(lines)
  blank
  lines.each do |line|
    puts line
  end
  blank
end
parasep() click to toggle source
# File lib/review/latexbuilder.rb, line 263
def parasep
  puts '\parasep'
end
quote(lines) click to toggle source
# File lib/review/latexbuilder.rb, line 632
def quote(lines)
  latex_block 'quote', lines
end
read(lines) click to toggle source
# File lib/review/latexbuilder.rb, line 267
def read(lines)
  latex_block 'quotation', lines
end
Also aliased as: lead
result_metric(array) click to toggle source
# File lib/review/latexbuilder.rb, line 408
def result_metric(array)
  "#{array.join(',')}"
end
setup_index() click to toggle source
# File lib/review/latexbuilder.rb, line 46
def setup_index
  @index_db = {}
  @index_mecab = nil
  if @book.config["pdfmaker"]["makeindex"]
    @index_db = load_idxdb(@book.config["pdfmaker"]["makeindex_dic"]) if @book.config["pdfmaker"]["makeindex_dic"]
    if @book.config["pdfmaker"]["makeindex_mecab"]
      begin
        require 'MeCab'
        require 'nkf'
        @index_mecab = MeCab::Tagger.new(@book.config["pdfmaker"]["makeindex_mecab_opts"])
      rescue LoadError
        error "not found MeCab"
      end
    end
  end
end
source(lines, caption, lang = nil) click to toggle source
# File lib/review/latexbuilder.rb, line 387
def source(lines, caption, lang = nil)
  if highlight_listings?
    common_code_block_lst(nil, lines, 'reviewsourcelst', 'title', caption, lang)
  else
    common_code_block(nil, lines, 'reviewsource', caption, lang) do |line, idx|
      detab(line) + "\n"
    end
  end
end
table(lines, id = nil, caption = nil) click to toggle source
# File lib/review/latexbuilder.rb, line 496
def table(lines, id = nil, caption = nil)
  rows = []
  sepidx = nil
  lines.each_with_index do |line, idx|
    if /\A[\=\{\-\}]{12}/ =~ line
      # just ignore
      #error "too many table separator" if sepidx
      sepidx ||= idx
      next
    end
    rows.push line.strip.split(/\t+/).map {|s| s.sub(/\A\./, '') }
  end
  rows = adjust_n_cols(rows)

  begin
    table_header id, caption unless caption.nil?
  rescue KeyError
    error "no such table: #{id}"
  end
  return if rows.empty?
  table_begin rows.first.size
  if sepidx
    sepidx.times do
      tr rows.shift.map {|s| th(s) }
    end
    rows.each do |cols|
      tr cols.map {|s| td(s) }
    end
  else
    rows.each do |cols|
      h, *cs = *cols
      tr [th(h)] + cs.map {|s| td(s) }
    end
  end
  table_end
end
table_begin(ncols) click to toggle source
# File lib/review/latexbuilder.rb, line 542
def table_begin(ncols)
  if @latex_tsize
    puts macro('begin', 'reviewtable', @latex_tsize)
  elsif @tsize
    if @tsize =~ /\A[\d., ]+\Z/
      cellwidth = @tsize.split(/\s*,\s*/)
      puts macro('begin', 'reviewtable', '|'+cellwidth.collect{|i| "p{#{i}mm}"}.join('|')+'|')
    else
      puts macro('begin', 'reviewtable', @tsize)
    end
  else
    puts macro('begin', 'reviewtable', (['|'] * (ncols + 1)).join('l'))
  end
  puts '\hline'
  @tsize = nil
  @latex_tsize = nil
end
table_end() click to toggle source
# File lib/review/latexbuilder.rb, line 587
def table_end
  puts macro('end', 'reviewtable')
  if @table_caption
    puts '\end{table}'
  end
  @table_caption = nil
  blank
end
table_header(id, caption) click to toggle source
# File lib/review/latexbuilder.rb, line 533
def table_header(id, caption)
  if caption.present?
    @table_caption = true
    puts '\begin{table}[h]'
    puts macro('reviewtablecaption', compile_inline(caption))
  end
  puts macro('label', table_label(id))
end
table_separator() click to toggle source
# File lib/review/latexbuilder.rb, line 560
def table_separator
  #puts '\hline'
end
td(s) click to toggle source
# File lib/review/latexbuilder.rb, line 573
def td(s)
  ## use shortstack for @<br>
  if /\\/ =~ s
    macro('shortstack[l]', s)
  else
    s
  end
end
texequation(lines) click to toggle source
# File lib/review/latexbuilder.rb, line 646
def texequation(lines)
  blank
  puts macro('begin','equation*')
  lines.each do |line|
    puts unescape_latex(line)
  end
  puts macro('end', 'equation*')
  blank
end
th(s) click to toggle source
# File lib/review/latexbuilder.rb, line 564
def th(s)
  ## use shortstack for @<br>
  if /\\/i =~ s
    macro('reviewth', macro('shortstack[l]', s))
  else
    macro('reviewth', s)
  end
end
tr(rows) click to toggle source
# File lib/review/latexbuilder.rb, line 582
def tr(rows)
  print rows.join(' & ')
  puts ' \\  \hline'
end
ul_begin() click to toggle source
# File lib/review/latexbuilder.rb, line 199
def ul_begin
  blank
  puts '\begin{itemize}'
end
ul_end() click to toggle source
# File lib/review/latexbuilder.rb, line 210
def ul_end
  puts '\end{itemize}'
  blank
end
ul_item(lines) click to toggle source
# File lib/review/latexbuilder.rb, line 204
def ul_item(lines)
  str = lines.join
  str.sub!(/\A(\[)/){'\lbrack{}'}
  puts '\item ' + str
end

Private Instance Methods

bib_label(id) click to toggle source
# File lib/review/latexbuilder.rb, line 467
def bib_label(id)
  "bib:#{id}"
end
blank() click to toggle source
# File lib/review/latexbuilder.rb, line 72
def blank
  @blank_needed = true
end
builder_init_file() click to toggle source
# File lib/review/latexbuilder.rb, line 33
def builder_init_file
  @blank_needed = false
  @latex_tsize = nil
  @tsize = nil
  @table_caption = nil
  @ol_num = nil
  @first_line_num = nil
  @sec_counter = SecCounter.new(5, @chapter)
  setup_index
  initialize_metachars(@book.config["texcommand"])
end
chapter_label() click to toggle source
# File lib/review/latexbuilder.rb, line 451
def chapter_label
  "chap:#{@chapter.id}"
end
column_label(id) click to toggle source
# File lib/review/latexbuilder.rb, line 472
def column_label(id)
  filename = @chapter.id
  num = @chapter.column(id).number
  "column:#{filename}:#{num}"
end
existence(id) click to toggle source
# File lib/review/latexbuilder.rb, line 440
def existence(id)
  @chapter.image(id).bound? ? 'exist' : 'not exist'
end
highlight_listings?() click to toggle source
# File lib/review/latexbuilder.rb, line 273
def highlight_listings?
  @book.config["highlight"] && @book.config["highlight"]["latex"] == "listings"
end
image_label(id, chapter=nil) click to toggle source
# File lib/review/latexbuilder.rb, line 445
def image_label(id, chapter=nil)
  chapter ||= @chapter
  "image:#{chapter.id}:#{id}"
end
latex_block(type, lines) click to toggle source
# File lib/review/latexbuilder.rb, line 656
def latex_block(type, lines)
  blank
  puts macro('begin', type)
  blocked_lines = split_paragraph(lines)
  puts blocked_lines.join("\n\n")
  puts macro('end', type)
  blank
end
print(*s) click to toggle source
Calls superclass method ReVIEW::Builder#print
puts(*s) click to toggle source
Calls superclass method ReVIEW::Builder#puts
# File lib/review/latexbuilder.rb, line 86
def puts(*s)
  if @blank_needed
    @output.puts
    @blank_needed = false
  end
  super
end
sec_label(sec_anchor) click to toggle source
# File lib/review/latexbuilder.rb, line 456
def sec_label(sec_anchor)
  "sec:#{sec_anchor}"
end
table_label(id, chapter=nil) click to toggle source
# File lib/review/latexbuilder.rb, line 461
def table_label(id, chapter=nil)
  chapter ||= @chapter
  "table:#{chapter.id}:#{id}"
end