class ReVIEW::LATEXBuilder
Constants
- BOUTEN
- HEADLINE
Public Instance Methods
bibpaper_bibpaper(_id, _caption, lines)
click to toggle source
# File lib/review/latexbuilder.rb, line 1395 def bibpaper_bibpaper(_id, _caption, lines) if @book.config['join_lines_by_lang'] print split_paragraph(lines).join("\n\n") else print split_paragraph(lines).map(&:chomp).join("\n") end puts '' end
bibpaper_header(id, caption)
click to toggle source
# File lib/review/latexbuilder.rb, line 1390 def bibpaper_header(id, caption) puts "[#{@chapter.bibpaper(id).number}] #{compile_inline(caption)}" puts macro('label', bib_label(id)) end
blankline()
click to toggle source
# File lib/review/latexbuilder.rb, line 1040 def blankline puts '\par\vspace{\baselineskip}\par' end
box(lines, caption = nil)
click to toggle source
# File lib/review/latexbuilder.rb, line 304 def box(lines, caption = nil) blank puts macro('reviewboxcaption', compile_inline(caption)) if caption.present? 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 276 def captionblock(type, lines, caption) check_nested_minicolumn if @book.config.check_version('2', exception: false) type = 'minicolumn' end print "\\begin{review#{type}}" @doc_status[:caption] = true if @book.config.check_version('2', exception: false) puts if caption.present? puts "\\reviewminicolumntitle{#{compile_inline(caption)}}" end else if caption.present? print "[#{compile_inline(caption)}]" end puts end @doc_status[:caption] = nil blocked_lines = split_paragraph(lines) puts blocked_lines.join("\n\n") puts "\\end{review#{type}}" end
center(lines)
click to toggle source
# File lib/review/latexbuilder.rb, line 955 def center(lines) latex_block('center', lines) end
Also aliased as: centering
cmd(lines, caption = nil, lang = nil)
click to toggle source
# File lib/review/latexbuilder.rb, line 458 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) { |line, idx| code_line('cmd', line, idx, nil, caption, lang) } end end
code_line(_type, line, _idx, _id, _caption, _lang)
click to toggle source
# File lib/review/latexbuilder.rb, line 412 def code_line(_type, line, _idx, _id, _caption, _lang) detab(line) + "\n" end
code_line_num(_type, line, first_line_num, idx, _id, _caption, _lang)
click to toggle source
# File lib/review/latexbuilder.rb, line 416 def code_line_num(_type, line, first_line_num, idx, _id, _caption, _lang) detab((idx + first_line_num).to_s.rjust(2) + ': ' + line) + "\n" end
column_begin(level, label, caption)
click to toggle source
# File lib/review/latexbuilder.rb, line 198 def column_begin(level, label, caption) blank @doc_status[:column] = true target = if label "\\hypertarget{#{column_label(label)}}{}" else "\\hypertarget{#{column_label(caption)}}{}" end @doc_status[:caption] = true if @book.config.check_version('2', exception: false) puts '\\begin{reviewcolumn}' puts target puts macro('reviewcolumnhead', nil, compile_inline(caption)) else # ver.3 print '\\begin{reviewcolumn}' puts "[#{compile_inline(caption)}#{target}]" end @doc_status[:caption] = nil 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 225 def column_end(_level) puts '\\end{reviewcolumn}' blank @doc_status[:column] = nil end
comment(lines, comment = nil)
click to toggle source
# File lib/review/latexbuilder.rb, line 1017 def comment(lines, comment = nil) return true unless @book.config['draft'] lines ||= [] unless comment.blank? lines.unshift(escape(comment)) end str = lines.join('\par ') puts macro('pdfcomment', str) end
common_block_begin(type, caption = nil)
click to toggle source
# File lib/review/latexbuilder.rb, line 231 def common_block_begin(type, caption = nil) check_nested_minicolumn if @book.config.check_version('2', exception: false) type = 'minicolumn' end @doc_status[:minicolumn] = type print "\\begin{review#{type}}" @doc_status[:caption] = true if @book.config.check_version('2', exception: false) puts if caption.present? puts "\\reviewminicolumntitle{#{compile_inline(caption)}}" end else if caption.present? print "[#{compile_inline(caption)}]" end puts end @doc_status[:caption] = nil end
common_block_end(type)
click to toggle source
# File lib/review/latexbuilder.rb, line 255 def common_block_end(type) if @book.config.check_version('2', exception: false) type = 'minicolumn' end puts "\\end{review#{type}}" @doc_status[:minicolumn] = nil end
common_code_block(id, lines, command, caption, _lang) { |line, idx| ... }
click to toggle source
# File lib/review/latexbuilder.rb, line 467 def common_code_block(id, lines, command, caption, _lang) @doc_status[:caption] = true captionstr = nil unless @book.config.check_version('2', exception: false) puts '\\begin{reviewlistblock}' end if caption.present? if command =~ /emlist/ || command =~ /cmd/ || command =~ /source/ captionstr = macro(command + 'caption', compile_inline(caption)) else begin captionstr = if get_chap.nil? macro('reviewlistcaption', "#{I18n.t('list')}#{I18n.t('format_number_header_without_chapter', [@chapter.list(id).number])}#{I18n.t('caption_prefix')}#{compile_inline(caption)}") else macro('reviewlistcaption', "#{I18n.t('list')}#{I18n.t('format_number_header', [get_chap, @chapter.list(id).number])}#{I18n.t('caption_prefix')}#{compile_inline(caption)}") end rescue KeyError app_error "no such list: #{id}" end end end @doc_status[:caption] = nil if caption_top?('list') && captionstr puts captionstr 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) if !caption_top?('list') && captionstr puts captionstr end unless @book.config.check_version('2', exception: false) puts '\\end{reviewlistblock}' end 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 512 def common_code_block_lst(_id, lines, command, title, caption, lang, first_line_num: 1) if title == 'title' && caption.blank? && @book.config.check_version('2', exception: false) print '\vspace{-1.5em}' end body = lines.inject('') { |i, j| i + detab(j) + "\n" } args = make_code_block_args(title, caption, lang, first_line_num: first_line_num) puts %Q(\\begin{#{command}}[#{args}]) print body puts %Q(\\end{#{command}}) blank end
compile_href(url, label)
click to toggle source
# File lib/review/latexbuilder.rb, line 1436 def compile_href(url, label) if /\A[a-z]+:/.match?(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 1428 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 1173 def compile_ruby(base, ruby) macro('ruby', escape(base), escape(ruby).gsub('\\textbar{}', '|')) end
dd(lines)
click to toggle source
# File lib/review/latexbuilder.rb, line 369 def dd(lines) if @book.config['join_lines_by_lang'] puts join_lines_to_paragraph(lines) else puts lines.map(&:chomp).join("\n") end end
direct(lines, fmt)
click to toggle source
# File lib/review/latexbuilder.rb, line 1009 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 359 def dl_begin blank puts '\begin{description}' end
dl_end()
click to toggle source
# File lib/review/latexbuilder.rb, line 377 def dl_end puts '\end{description}' blank end
dt(str)
click to toggle source
# File lib/review/latexbuilder.rb, line 364 def dt(str) str = str.gsub('[', '\lbrack{}').gsub(']', '\rbrack{}') puts '\item[' + str + '] \mbox{} \\\\' end
emlist(lines, caption = nil, lang = nil)
click to toggle source
# File lib/review/latexbuilder.rb, line 420 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) { |line, idx| code_line('emlist', line, idx, nil, caption, lang) } end end
emlistnum(lines, caption = nil, lang = nil)
click to toggle source
# File lib/review/latexbuilder.rb, line 429 def emlistnum(lines, caption = nil, lang = nil) blank first_line_num = 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) { |line, idx| code_line_num('emlistnum', line, first_line_num, idx, nil, caption, lang) } end end
emtable(lines, caption = nil)
click to toggle source
# File lib/review/latexbuilder.rb, line 896 def emtable(lines, caption = nil) table(lines, nil, caption) end
extname()
click to toggle source
# File lib/review/latexbuilder.rb, line 26 def extname '.tex' end
flushright(lines)
click to toggle source
# File lib/review/latexbuilder.rb, line 961 def flushright(lines) latex_block('flushright', lines) end
footnote(id, content)
click to toggle source
# File lib/review/latexbuilder.rb, line 1132 def footnote(id, content) if @book.config['footnotetext'] || @foottext[id] if @doc_status[:column] warn "//footnote[#{id}] is in the column block. It is recommended to move out of the column block.", location: location end 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 567 def handle_metric(str) if @book.config['pdfmaker']['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 132 def headline(level, label, caption) _, anchor = headline_prefix(level) headline_name = HEADLINE[level] if @chapter.is_a?(ReVIEW::Book::Part) if @book.config.check_version('2', exception: false) headline_name = 'part' elsif level == 1 headline_name = 'part' puts '\begin{reviewpart}' end end prefix = '' if level > @book.config['secnolevel'] || (@chapter.number.to_s.empty? && level > 1) prefix = '*' end blank unless @output.pos == 0 @doc_status[:caption] = true puts macro(headline_name + prefix, compile_inline(caption)) @doc_status[:caption] = nil 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)) puts macro('label', label) if label end rescue StandardError app_error "unknown level: #{level}" end
highlight?()
click to toggle source
# File lib/review/latexbuilder.rb, line 402 def highlight? @book.config['highlight'] && @book.config['highlight']['latex'] end
hr()
click to toggle source
# File lib/review/latexbuilder.rb, line 1028 def hr puts '\hrule' end
image_dummy(id, caption, lines)
click to toggle source
# File lib/review/latexbuilder.rb, line 615 def image_dummy(id, caption, lines) warn "image not bound: #{id}", location: location puts '\begin{reviewdummyimage}' puts escape("--[[path = #{id} (#{existence(id)})]]--") lines.each do |line| puts "\n" puts detab(line.rstrip) end puts macro('label', image_label(id)) @doc_status[:caption] = true if @book.config.check_version('2', exception: false) puts macro('caption', compile_inline(caption)) if caption.present? elsif caption.present? puts macro('reviewimagecaption', compile_inline(caption)) end @doc_status[:caption] = nil puts '\end{reviewdummyimage}' end
image_ext()
click to toggle source
# File lib/review/latexbuilder.rb, line 1452 def image_ext 'pdf' end
image_header(id, caption)
click to toggle source
# File lib/review/latexbuilder.rb, line 555 def image_header(id, caption) end
image_image(id, caption = '', metric = nil)
click to toggle source
# File lib/review/latexbuilder.rb, line 579 def image_image(id, caption = '', metric = nil) @doc_status[:caption] = true captionstr = if @book.config.check_version('2', exception: false) macro('caption', compile_inline(caption)) + "\n" else macro('reviewimagecaption', compile_inline(caption)) + "\n" end captionstr << macro('label', image_label(id)) @doc_status[:caption] = nil metrics = parse_metric('latex', metric) # image is always bound here puts "\\begin{reviewimage}%%#{id}" if caption_top?('image') puts captionstr end command = 'reviewincludegraphics' if @book.config.check_version('2', exception: false) command = 'includegraphics' end if metrics.present? puts "\\#{command}[#{metrics}]{#{@chapter.image(id).path}}" else puts "\\#{command}[width=\\maxwidth]{#{@chapter.image(id).path}}" end unless caption_top?('image') puts captionstr end puts '\end{reviewimage}' end
imgtable(lines, id, caption = nil, metric = nil)
click to toggle source
# File lib/review/latexbuilder.rb, line 900 def imgtable(lines, id, caption = nil, metric = nil) unless @chapter.image_bound?(id) warn "image not bound: #{id}", location: location image_dummy(id, caption, lines) return end captionstr = nil begin if caption.present? puts "\\begin{table}[h]%%#{id}" @doc_status[:caption] = true captionstr = macro('reviewimgtablecaption', compile_inline(caption)) @doc_status[:caption] = nil if caption_top?('table') puts captionstr end end puts macro('label', table_label(id)) rescue ReVIEW::KeyError app_error "no such table: #{id}" end imgtable_image(id, caption, metric) if caption.present? unless caption_top?('table') puts captionstr end puts '\end{table}' end blank end
imgtable_image(id, _caption, metric)
click to toggle source
# File lib/review/latexbuilder.rb, line 933 def imgtable_image(id, _caption, metric) metrics = parse_metric('latex', metric) # image is always bound here puts "\\begin{reviewimage}%%#{id}" command = 'reviewincludegraphics' if @book.config.check_version('2', exception: false) command = 'includegraphics' end if metrics.present? puts "\\#{command}[#{metrics}]{#{@chapter.image(id).path}}" else puts "\\#{command}[width=\\maxwidth]{#{@chapter.image(id).path}}" end puts '\end{reviewimage}' end
indepimage(lines, id, caption = nil, metric = nil)
click to toggle source
# File lib/review/latexbuilder.rb, line 674 def indepimage(lines, id, caption = nil, metric = nil) metrics = parse_metric('latex', metric) captionstr = nil if caption.present? @doc_status[:caption] = true captionstr = macro('reviewindepimagecaption', %Q(#{I18n.t('numberless_image')}#{I18n.t('caption_prefix')}#{compile_inline(caption)})) @doc_status[:caption] = nil end if @chapter.image(id).path puts "\\begin{reviewimage}%%#{id}" if caption_top?('image') && captionstr puts captionstr end command = 'reviewincludegraphics' if @book.config.check_version('2', exception: false) command = 'includegraphics' end if metrics.present? puts "\\#{command}[#{metrics}]{#{@chapter.image(id).path}}" else puts "\\#{command}[width=\\maxwidth]{#{@chapter.image(id).path}}" end else warn "image not bound: #{id}", location: location puts '\begin{reviewdummyimage}' puts escape("--[[path = #{escape(id)} (#{existence(id)})]]--") lines.each do |line| puts "\n" puts detab(line.rstrip) end end if !caption_top?('image') && captionstr puts captionstr end if @chapter.image(id).path puts '\end{reviewimage}' else puts '\end{reviewdummyimage}' end end
Also aliased as: numberlessimage
index(str)
click to toggle source
# File lib/review/latexbuilder.rb, line 1405 def index(str) # XXX: mendex/upmendex specific sa = str.split('<<>>') sa.map! do |item| if @index_db[item] escape_mendex_key(escape_index(@index_db[item])) + '@' + escape_mendex_display(escape_index(escape(item))) elsif item =~ /\A[[:ascii:]]+\Z/ || @index_mecab.nil? esc_item = escape_mendex_display(escape_index(escape(item))) if esc_item == item esc_item else "#{escape_mendex_key(escape_index(item))}@#{esc_item}" end else yomi = NKF.nkf('-w --hiragana', @index_mecab.parse(item).force_encoding('UTF-8').chomp) escape_mendex_key(escape_index(yomi)) + '@' + escape_mendex_display(escape_index(escape(item))) end end "\\index{#{sa.join('!')}}" end
inline_ami(str)
click to toggle source
# File lib/review/latexbuilder.rb, line 1347 def inline_ami(str) macro('reviewami', escape(str)) end
inline_b(str)
click to toggle source
bold
# File lib/review/latexbuilder.rb, line 1211 def inline_b(str) if @book.config.check_version('2', exception: false) macro('textbf', escape(str)) else macro('reviewbold', escape(str)) end end
inline_balloon(str)
click to toggle source
# File lib/review/latexbuilder.rb, line 1386 def inline_balloon(str) macro('reviewballoon', escape(str)) end
inline_bib(id)
click to toggle source
# File lib/review/latexbuilder.rb, line 1274 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 1169 def inline_bou(str) macro('reviewbou', escape(str)) end
inline_br(_str)
click to toggle source
line break
# File lib/review/latexbuilder.rb, line 1220 def inline_br(_str) "\\\\\n" end
inline_chap(id)
click to toggle source
# File lib/review/latexbuilder.rb, line 1060 def inline_chap(id) if @book.config['chapterlink'] "\\reviewchapref{#{@book.chapter_index.number(id)}}{chap:#{id}}" else @book.chapter_index.number(id) end rescue KeyError app_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 1048 def inline_chapref(id) title = super if @book.config['chapterlink'] "\\reviewchapref{#{title}}{chap:#{id}}" else title end rescue KeyError app_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 1230 def inline_code(str) if @book.config.check_version('2', exception: false) macro('texttt', escape(str)) else macro('reviewcode', escape(str)) end end
inline_column_chap(chapter, id)
click to toggle source
# File lib/review/latexbuilder.rb, line 1315 def inline_column_chap(chapter, id) macro('reviewcolumnref', I18n.t('column', compile_inline(chapter.column(id).caption)), column_label(id, chapter)) rescue KeyError app_error "unknown column: #{id}" end
inline_comment(str)
click to toggle source
# File lib/review/latexbuilder.rb, line 1374 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 1254 def inline_del(str) macro('reviewstrike', escape(str)) end
inline_dtp(_str)
click to toggle source
# File lib/review/latexbuilder.rb, line 1224 def inline_dtp(_str) # ignore '' end
inline_em(str)
click to toggle source
# File lib/review/latexbuilder.rb, line 1335 def inline_em(str) macro('reviewem', escape(str)) end
inline_endnote(id)
click to toggle source
# File lib/review/latexbuilder.rb, line 1154 def inline_endnote(id) macro('endnote', compile_inline(@chapter.endnote(id).content.strip)) rescue KeyError app_error "unknown footnote: #{id}" end
inline_eq(id)
click to toggle source
# File lib/review/latexbuilder.rb, line 1121 def inline_eq(id) chapter, id = extract_chapter_id(id) if get_chap(chapter).nil? macro('reviewequationref', I18n.t('format_number_without_chapter', [chapter.equation(id).number])) else macro('reviewequationref', I18n.t('format_number', [get_chap(chapter), chapter.equation(id).number])) end rescue KeyError app_error "unknown equation: #{id}" end
inline_fn(id)
click to toggle source
# File lib/review/latexbuilder.rb, line 1141 def inline_fn(id) if @book.config['footnotetext'] macro("footnotemark[#{@chapter.footnote(id).number}]", '') elsif @doc_status[:caption] || @doc_status[:table] || @doc_status[:column] || @doc_status[:dt] @foottext[id] = @chapter.footnote(id).number macro('protect\\footnotemark', '') else macro('footnote', compile_inline(@chapter.footnote(id).content.strip)) end rescue KeyError app_error "unknown footnote: #{id}" end
inline_hd_chap(chap, id)
click to toggle source
# File lib/review/latexbuilder.rb, line 1278 def inline_hd_chap(chap, id) n = chap.headline_index.number(id) str = if n.present? && chap.number && over_secnolevel?(n) I18n.t('hd_quote', [chap.headline_index.number(id), compile_inline(chap.headline(id).caption)]) else I18n.t('hd_quote_without_number', compile_inline(chap.headline(id).caption)) end if @book.config['chapterlink'] anchor = n.tr('.', '-') 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 1187 def inline_hi(str) index(str) end
inline_hidx(str)
click to toggle source
hidden index
# File lib/review/latexbuilder.rb, line 1206 def inline_hidx(str) index(str) end
inline_i(str)
click to toggle source
index -> italic
# File lib/review/latexbuilder.rb, line 1192 def inline_i(str) if @book.config.check_version('2', exception: false) macro('textit', escape(str)) else macro('reviewit', escape(str)) end end
inline_icon(id)
click to toggle source
# File lib/review/latexbuilder.rb, line 1351 def inline_icon(id) if @chapter.image(id).path command = 'reviewicon' if @book.config.check_version('2', exception: false) command = 'includegraphics' end macro(command, @chapter.image(id).path) else warn "image not bound: #{id}", location: location "\\verb|--[[path = #{id} (#{existence(id)})]]--|" end end
inline_idx(str)
click to toggle source
index
# File lib/review/latexbuilder.rb, line 1201 def inline_idx(str) escape(str) + index(str) end
inline_img(id)
click to toggle source
# File lib/review/latexbuilder.rb, line 1110 def inline_img(id) chapter, id = extract_chapter_id(id) if get_chap(chapter).nil? macro('reviewimageref', I18n.t('format_number_without_chapter', [chapter.image(id).number]), image_label(id, chapter)) else macro('reviewimageref', I18n.t('format_number', [get_chap(chapter), chapter.image(id).number]), image_label(id, chapter)) end rescue KeyError app_error "unknown image: #{id}" end
inline_ins(str)
click to toggle source
# File lib/review/latexbuilder.rb, line 1250 def inline_ins(str) macro('reviewinsert', escape(str)) end
inline_list(id)
click to toggle source
FIXME: use TeX native label/ref.
# File lib/review/latexbuilder.rb, line 1088 def inline_list(id) chapter, id = extract_chapter_id(id) if get_chap(chapter).nil? macro('reviewlistref', I18n.t('format_number_without_chapter', [chapter.list(id).number])) else macro('reviewlistref', I18n.t('format_number', [get_chap(chapter), chapter.list(id).number])) end rescue KeyError app_error "unknown list: #{id}" end
inline_m(str)
click to toggle source
math
# File lib/review/latexbuilder.rb, line 1178 def inline_m(str) if @book.config.check_version('2', exception: false) " $#{str}$ " else "$#{str}$" end end
inline_pageref(id)
click to toggle source
# File lib/review/latexbuilder.rb, line 1083 def inline_pageref(id) "\\pageref{#{id}}" end
inline_raw(str)
click to toggle source
Calls superclass method
ReVIEW::Builder#inline_raw
# File lib/review/latexbuilder.rb, line 1323 def inline_raw(str) # rubocop:disable Lint/UselessMethodDefinition super end
inline_sec(id)
click to toggle source
Calls superclass method
ReVIEW::Builder#inline_sec
# File lib/review/latexbuilder.rb, line 1293 def inline_sec(id) if @book.config['chapterlink'] n = super anchor = n.tr('.', '-') macro('reviewsecref', n, sec_label(anchor)) else super end rescue KeyError app_error "unknown headline: #{id}" end
inline_sectitle(id)
click to toggle source
Calls superclass method
ReVIEW::Builder#inline_sectitle
# File lib/review/latexbuilder.rb, line 1305 def inline_sectitle(id) if @book.config['chapterlink'] chap, id2 = extract_chapter_id(id) anchor = chap.headline_index.number(id2).tr('.', '-') macro('reviewsecref', super, sec_label(anchor)) else super end end
inline_strong(str)
click to toggle source
# File lib/review/latexbuilder.rb, line 1339 def inline_strong(str) macro('reviewstrong', escape(str)) end
inline_sub(str)
click to toggle source
# File lib/review/latexbuilder.rb, line 1327 def inline_sub(str) macro('textsubscript', escape(str)) end
inline_sup(str)
click to toggle source
# File lib/review/latexbuilder.rb, line 1331 def inline_sup(str) macro('textsuperscript', escape(str)) end
inline_table(id)
click to toggle source
# File lib/review/latexbuilder.rb, line 1099 def inline_table(id) chapter, id = extract_chapter_id(id) if get_chap(chapter).nil? macro('reviewtableref', I18n.t('format_number_without_chapter', [chapter.table(id).number]), table_label(id, chapter)) else macro('reviewtableref', I18n.t('format_number', [get_chap(chapter), chapter.table(id).number]), table_label(id, chapter)) end rescue KeyError app_error "unknown table: #{id}" end
inline_tcy(str)
click to toggle source
# File lib/review/latexbuilder.rb, line 1382 def inline_tcy(str) macro('reviewtcy', escape(str)) end
inline_title(id)
click to toggle source
Calls superclass method
ReVIEW::Builder#inline_title
# File lib/review/latexbuilder.rb, line 1071 def inline_title(id) title = super if @book.config['chapterlink'] "\\reviewchapref{#{title}}{chap:#{id}}" else title end rescue KeyError app_error "unknown chapter: #{id}" nofunc_text("[UnknownChapter:#{id}]") end
inline_tt(str)
click to toggle source
# File lib/review/latexbuilder.rb, line 1242 def inline_tt(str) if @book.config.check_version('2', exception: false) macro('texttt', escape(str)) else macro('reviewtt', escape(str)) end end
inline_ttb(str)
click to toggle source
# File lib/review/latexbuilder.rb, line 1266 def inline_ttb(str) if @book.config.check_version('2', exception: false) macro('texttt', macro('textbf', escape(str))) else macro('reviewttb', escape(str)) end end
inline_tti(str)
click to toggle source
# File lib/review/latexbuilder.rb, line 1258 def inline_tti(str) if @book.config.check_version('2', exception: false) macro('texttt', macro('textit', escape(str))) else macro('reviewtti', escape(str)) end end
inline_u(str)
click to toggle source
# File lib/review/latexbuilder.rb, line 1343 def inline_u(str) macro('reviewunderline', escape(str)) end
inline_uchar(str)
click to toggle source
# File lib/review/latexbuilder.rb, line 1364 def inline_uchar(str) if @texcompiler && @texcompiler.start_with?('platex') # with otf package macro('UTF', escape(str)) else # passthrough [str.to_i(16)].pack('U') end end
label(id)
click to toggle source
# File lib/review/latexbuilder.rb, line 1032 def label(id) puts macro('label', id) end
latextsize(str)
click to toggle source
# File lib/review/latexbuilder.rb, line 1448 def latextsize(str) @latex_tsize = str end
list(lines, id, caption, lang = nil)
click to toggle source
override Builder#list
# File lib/review/latexbuilder.rb, line 440 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) { |line, idx| code_line('list', line, idx, id, caption, lang) } end end
listnum(lines, id, caption, lang = nil)
click to toggle source
override Builder#listnum
# File lib/review/latexbuilder.rb, line 449 def listnum(lines, id, caption, lang = nil) first_line_num = 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) { |line, idx| code_line_num('listnum', line, first_line_num, idx, id, caption, lang) } end end
load_idxdb(file)
click to toggle source
# File lib/review/latexbuilder.rb, line 68 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 524 def make_code_block_args(title, caption, lang, first_line_num: 1) caption_str = compile_inline((caption || '')) if title == 'title' && caption_str == '' && @book.config.check_version('2', exception: false) caption_str = '\relax' ## dummy charactor to remove lstname end lexer = if @book.config['highlight'] && @book.config['highlight']['lang'] @book.config['highlight']['lang'] # default setting else '' end lexer = lang if lang.present? args = "language={#{lexer}}" if title == 'title' && caption_str == '' # ignore else args = "#{title}={#{caption_str}}," + args end 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 185 def nodisp_begin(level, _label, caption) if @output.pos == 0 puts macro('clearpage') else blank end 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 195 def nodisp_end(level) end
nofunc_text(str)
click to toggle source
# File lib/review/latexbuilder.rb, line 1238 def nofunc_text(str) escape(str) end
noindent()
click to toggle source
# File lib/review/latexbuilder.rb, line 1044 def noindent print '\noindent' end
nonum_begin(level, _label, caption)
click to toggle source
# File lib/review/latexbuilder.rb, line 164 def nonum_begin(level, _label, caption) blank unless @output.pos == 0 @doc_status[:caption] = true puts macro(HEADLINE[level] + '*', compile_inline(caption)) @doc_status[:caption] = nil puts macro('addcontentsline', 'toc', HEADLINE[level], compile_inline(caption)) end
nonum_end(level)
click to toggle source
# File lib/review/latexbuilder.rb, line 172 def nonum_end(level) end
notoc_begin(level, _label, caption)
click to toggle source
# File lib/review/latexbuilder.rb, line 175 def notoc_begin(level, _label, caption) blank unless @output.pos == 0 @doc_status[:caption] = true puts macro(HEADLINE[level] + '*', compile_inline(caption)) @doc_status[:caption] = nil end
notoc_end(level)
click to toggle source
# File lib/review/latexbuilder.rb, line 182 def notoc_end(level) end
ol_begin()
click to toggle source
# File lib/review/latexbuilder.rb, line 335 def ol_begin blank puts '\begin{enumerate}' return true unless @ol_num puts "\\setcounter{enumi}{#{@ol_num - 1}}" @ol_num = nil end
ol_end()
click to toggle source
# File lib/review/latexbuilder.rb, line 354 def ol_end puts '\end{enumerate}' blank end
ol_item(lines, _num)
click to toggle source
# File lib/review/latexbuilder.rb, line 344 def ol_item(lines, _num) str = join_lines_to_paragraph(lines) unless @book.config['join_lines_by_lang'] str = lines.map(&:chomp).join("\n") end str.sub!(/\A(\[)/) { '\lbrack{}' } puts '\item ' + str end
olnum(num)
click to toggle source
# File lib/review/latexbuilder.rb, line 1456 def olnum(num) @ol_num = num.to_i end
pagebreak()
click to toggle source
# File lib/review/latexbuilder.rb, line 1036 def pagebreak puts '\pagebreak' end
paragraph(lines)
click to toggle source
# File lib/review/latexbuilder.rb, line 382 def paragraph(lines) blank if @book.config['join_lines_by_lang'] puts join_lines_to_paragraph(lines) else lines.each { |line| puts line } end blank end
parasep()
click to toggle source
# File lib/review/latexbuilder.rb, line 392 def parasep puts '\\parasep' end
parse_metric(type, metric)
click to toggle source
Calls superclass method
ReVIEW::Builder#parse_metric
# File lib/review/latexbuilder.rb, line 558 def parse_metric(type, metric) s = super if @book.config['pdfmaker']['use_original_image_size'] && s.empty? && !metric.present? return ' ' # pass empty to \reviewincludegraphics end s end
printendnotes()
click to toggle source
# File lib/review/latexbuilder.rb, line 1160 def printendnotes @shown_endnotes = true blank puts '\theendnotes' blank end
quote(lines)
click to toggle source
# File lib/review/latexbuilder.rb, line 951 def quote(lines) latex_block('quote', lines) end
read(lines)
click to toggle source
# File lib/review/latexbuilder.rb, line 396 def read(lines) latex_block('quotation', lines) end
Also aliased as: lead
result()
click to toggle source
# File lib/review/latexbuilder.rb, line 100 def result check_printendnotes if @chapter.is_a?(ReVIEW::Book::Part) && !@book.config.check_version('2', exception: false) puts '\end{reviewpart}' end solve_nest(@output.string) end
result_metric(array)
click to toggle source
# File lib/review/latexbuilder.rb, line 575 def result_metric(array) array.join(',') end
separate_tsize(size)
click to toggle source
# File lib/review/latexbuilder.rb, line 821 def separate_tsize(size) ret = [] s = '' brace = nil size.chars.each do |ch| case ch when '|' next when '{' brace = true s << ch when '}' brace = nil s << ch ret << s s = '' else if brace || s.empty? s << ch else ret << s s = ch end end end unless s.empty? ret << s end ret end
setup_index()
click to toggle source
# File lib/review/latexbuilder.rb, line 45 def setup_index @index_db = {} @index_mecab = nil return true unless @book.config['pdfmaker']['makeindex'] if @book.config['pdfmaker']['makeindex_dic'] @index_db = load_idxdb(@book.config['pdfmaker']['makeindex_dic']) end return true unless @book.config['pdfmaker']['makeindex_mecab'] begin begin require 'MeCab' rescue LoadError require 'mecab' end require 'nkf' @index_mecab = MeCab::Tagger.new(@book.config['pdfmaker']['makeindex_mecab_opts']) rescue LoadError warn 'not found MeCab', location: location end end
solve_nest(s)
click to toggle source
# File lib/review/latexbuilder.rb, line 109 def solve_nest(s) check_nest s.gsub("\\end{description}\n\n\x01→dl←\x01\n", "\n"). gsub("\x01→/dl←\x01", "\\end{description}←END\x01"). gsub("\\end{itemize}\n\n\x01→ul←\x01\n", "\n"). gsub("\x01→/ul←\x01", "\\end{itemize}←END\x01"). gsub("\\end{enumerate}\n\n\x01→ol←\x01\n", "\n"). gsub("\x01→/ol←\x01", "\\end{enumerate}←END\x01"). gsub("\\end{description}←END\x01\n\n\\begin{description}", ''). gsub("\\end{itemize}←END\x01\n\n\\begin{itemize}", ''). gsub("\\end{enumerate}←END\x01\n\n\\begin{enumerate}", ''). gsub("←END\x01", '') end
source(lines, caption = nil, lang = nil)
click to toggle source
# File lib/review/latexbuilder.rb, line 547 def source(lines, caption = nil, lang = nil) if highlight_listings? common_code_block_lst(nil, lines, 'reviewsourcelst', 'title', caption, lang) else common_code_block(nil, lines, 'reviewsource', caption, lang) { |line, idx| code_line('source', line, idx, nil, caption, lang) } end end
table(lines, id = nil, caption = nil)
click to toggle source
# File lib/review/latexbuilder.rb, line 725 def table(lines, id = nil, caption = nil) if caption.present? if @book.config.check_version('2', exception: false) puts "\\begin{table}[h]%%#{id}" else puts "\\begin{table}%%#{id}" end end sepidx, rows = parse_table_rows(lines) begin if caption_top?('table') && caption.present? table_header(id, caption) end rescue KeyError app_error "no such table: #{id}" end table_begin(rows.first.size) table_rows(sepidx, rows) table_end if caption.present? unless caption_top?('table') table_header(id, caption) end puts '\end{table}' end blank end
table_begin(ncols)
click to toggle source
# File lib/review/latexbuilder.rb, line 800 def table_begin(ncols) if @latex_tsize @tsize = @latex_tsize end if @tsize if /\A[\d., ]+\Z/.match?(@tsize) @cellwidth = @tsize.split(/\s*,\s*/) @cellwidth.collect! { |i| "p{#{i}mm}" } puts macro('begin', 'reviewtable', '|' + @cellwidth.join('|') + '|') else @cellwidth = separate_tsize(@tsize) puts macro('begin', 'reviewtable', @tsize) end else puts macro('begin', 'reviewtable', (['|'] * (ncols + 1)).join('l')) @cellwidth = ['l'] * ncols end puts '\\hline' end
table_end()
click to toggle source
# File lib/review/latexbuilder.rb, line 889 def table_end puts macro('end', 'reviewtable') @tsize = nil @latex_tsize = nil @cellwidth = nil end
table_header(id, caption)
click to toggle source
# File lib/review/latexbuilder.rb, line 783 def table_header(id, caption) if id.nil? if caption.present? @doc_status[:caption] = true puts macro('reviewtablecaption*', compile_inline(caption)) @doc_status[:caption] = nil end else if caption.present? @doc_status[:caption] = true puts macro('reviewtablecaption', compile_inline(caption)) @doc_status[:caption] = nil end puts macro('label', table_label(id)) end end
table_rows(sepidx, rows)
click to toggle source
# File lib/review/latexbuilder.rb, line 754 def table_rows(sepidx, rows) if sepidx sepidx.times do cno = -1 tr(rows.shift.map do |s| cno += 1 th(s, @cellwidth[cno]) end) end rows.each do |cols| cno = -1 tr(cols.map do |s| cno += 1 td(s, @cellwidth[cno]) end) end else rows.each do |cols| h, *cs = *cols cno = 0 tr([th(h, @cellwidth[0])] + cs.map do |s| cno += 1 td(s, @cellwidth[cno]) end) end end end
table_separator()
click to toggle source
# File lib/review/latexbuilder.rb, line 854 def table_separator # puts '\hline' end
td(s, cellwidth = 'l')
click to toggle source
# File lib/review/latexbuilder.rb, line 871 def td(s, cellwidth = 'l') if /\\\\/.match?(s) if !@book.config.check_version('2', exception: false) && cellwidth =~ /\{/ s.gsub("\\\\\n", '\\newline{}') else ## use shortstack for @<br> macro('shortstack[l]', s) end else s end end
texequation(lines, id = nil, caption = '')
click to toggle source
# File lib/review/latexbuilder.rb, line 965 def texequation(lines, id = nil, caption = '') blank captionstr = nil if id puts macro('begin', 'reviewequationblock') captionstr = if get_chap.nil? macro('reviewequationcaption', "#{I18n.t('equation')}#{I18n.t('format_number_header_without_chapter', [@chapter.equation(id).number])}#{I18n.t('caption_prefix')}#{compile_inline(caption)}") else macro('reviewequationcaption', "#{I18n.t('equation')}#{I18n.t('format_number_header', [get_chap, @chapter.equation(id).number])}#{I18n.t('caption_prefix')}#{compile_inline(caption)}") end end if caption_top?('equation') && captionstr puts captionstr end puts macro('begin', 'equation*') lines.each do |line| puts line end puts macro('end', 'equation*') if !caption_top?('equation') && captionstr puts captionstr end if id puts macro('end', 'reviewequationblock') end blank end
th(s, cellwidth = 'l')
click to toggle source
# File lib/review/latexbuilder.rb, line 858 def th(s, cellwidth = 'l') if /\\\\/.match?(s) if !@book.config.check_version('2', exception: false) && cellwidth =~ /\{/ macro('reviewth', s.gsub("\\\\\n", '\\newline{}')) else ## use shortstack for @<br> macro('reviewth', macro('shortstack[l]', s)) end else macro('reviewth', s) end end
tr(rows)
click to toggle source
# File lib/review/latexbuilder.rb, line 884 def tr(rows) print rows.join(' & ') puts ' \\\\ \hline' end
ul_begin()
click to toggle source
# File lib/review/latexbuilder.rb, line 315 def ul_begin blank puts '\begin{itemize}' end
ul_end()
click to toggle source
# File lib/review/latexbuilder.rb, line 330 def ul_end puts '\end{itemize}' blank end
ul_item(lines)
click to toggle source
# File lib/review/latexbuilder.rb, line 320 def ul_item(lines) str = join_lines_to_paragraph(lines) unless @book.config['join_lines_by_lang'] str = lines.map(&:chomp).join("\n") end str.sub!(/\A(\[)/) { '\lbrack{}' } puts '\item ' + str end
Private Instance Methods
bib_label(id)
click to toggle source
# File lib/review/latexbuilder.rb, line 661 def bib_label(id) "bib:#{id}" end
blank()
click to toggle source
# File lib/review/latexbuilder.rb, line 77 def blank @blank_needed = true end
builder_init_file()
click to toggle source
Calls superclass method
ReVIEW::Builder#builder_init_file
# File lib/review/latexbuilder.rb, line 30 def builder_init_file super @chapter.book.image_types = %w[.ai .eps .pdf .tif .tiff .png .bmp .jpg .jpeg .gif] @blank_needed = false @latex_tsize = nil @tsize = nil @cellwidth = nil @ol_num = nil @first_line_num = nil @foottext = {} setup_index initialize_metachars(@book.config['texcommand']) end
chapter_label()
click to toggle source
# File lib/review/latexbuilder.rb, line 645 def chapter_label "chap:#{@chapter.id}" end
column_label(id, chapter = nil)
click to toggle source
# File lib/review/latexbuilder.rb, line 666 def column_label(id, chapter = nil) chapter ||= @chapter filename = chapter.id num = chapter.column(id).number "column:#{filename}:#{num}" end
existence(id)
click to toggle source
# File lib/review/latexbuilder.rb, line 634 def existence(id) @chapter.image_bound?(id) ? 'exist' : 'not exist' end
highlight_listings?()
click to toggle source
# File lib/review/latexbuilder.rb, line 407 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 639 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 999 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
# File lib/review/latexbuilder.rb, line 82 def print(*s) if @blank_needed @output.puts @blank_needed = false end super end
puts(*s)
click to toggle source
Calls superclass method
ReVIEW::Builder#puts
# File lib/review/latexbuilder.rb, line 91 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 650 def sec_label(sec_anchor) "sec:#{sec_anchor}" end
table_label(id, chapter = nil)
click to toggle source
# File lib/review/latexbuilder.rb, line 655 def table_label(id, chapter = nil) chapter ||= @chapter "table:#{chapter.id}:#{id}" end