class Rake4LaTeX::Basefile

Define a basename.

Set the file for clean/clobber, offers the possibility to set defaults, define a logger.

end

Attributes

basename[R]

Basename of the Basefile.

logger[R]

Get the logger

settings4LaTeXRunner[R]

Settings for the LaTeXRunner. May be changed with Rake4LaTeX::Basefile#[]=

Public Class Methods

[](key) click to toggle source

Get the basefile object.

end

# File lib/rake4latex/base.rb, line 201
def self.[](key)
  @@all[key.ext()]
end
each() { |basefile| ... } click to toggle source

Loop on all defined base files

end

# File lib/rake4latex/base.rb, line 207
def self.each()
  @@all.each{|key, basefile| yield basefile }
end
set( basename, options = {} ) click to toggle source

Get the basefile object or create a a new instance.

end

# File lib/rake4latex/base.rb, line 191
def self.set( basename, options = {} )
  basename = basename.ext()
  @@all[basename] = new(basename) unless @@all[basename]
  options.each{|key, value| @@all[basename][key] = value }
  @@all[basename]
end

Private Class Methods

new( basename, options = {} ) click to toggle source

Create a new basefile object.

This is a private method. To create new objects, use Rake4LaTeX::Basefile.set

end

# File lib/rake4latex/base.rb, line 217
def initialize( basename, options = {} )
  @basename = basename.ext('')
  
  @settings4LaTeXRunner = DEFAULT_SETTINGS.dup
  
  @logger = Log4r::Logger.new(@basename)
  @logger.level = @settings4LaTeXRunner[:loglevel]

  options.each{|key, value| self[key] = value }

  @logger.outputters = Log4r::StdoutOutputter.new('log_stdout')
  #~ @logger.info("Define base file #{@basename}")
  
  
  set4clean()
  define_tasks()    
end

Public Instance Methods

[]=( key, option ) click to toggle source

Sets a default option for the LaTeXRunner.

The options are stored and used for new LaTeXRunners.

Examples:

basefile = Rake4LaTeX::Basefile.set('filename')
basefile[:maxruns] =  1
basefile[:loglevel] =  Log4r::DEBUG
basefile[:program] =  :xelatex
basefile[:texerrors_allowed] =  true

end

# File lib/rake4latex/base.rb, line 332
def []=( key, option )
  if ! settings4LaTeXRunner.keys.include?(key)
    raise ArgumentError, "Undefined key #{key.inspect} for LaTeXRunner" unless @latexrunner
    @ogger.warn("Undefined key #{key.inspect} for LaTeXRunner") if @ogger.warn?
  end
  settings4LaTeXRunner[key] = option
  case key
    when :program
    if LaTeXRunner::PROGRAMS.keys.include?( option.to_sym )
      settings4LaTeXRunner[key] = option.to_sym
    else
      @ogger.warn("Undefined programm #{option.inspect} for LaTeXRunner") if @logger.warn?
    end
  end
end
define_tasks() click to toggle source

Defines document specific tasks (statistic, set clean and clobber)

end

# File lib/rake4latex/base.rb, line 245
def define_tasks()    
  
  namespace @basename do
    desc "Create the statistic for #{@basename}" if Rake4LaTeX::TASK_DESCRIPTION 
    task :statistic do
      stat = Rake4LaTeX::TeX_Statistic.new(@basename)
      puts "Statistic for #{@basename}:"
      puts stat.stat_summary.map{|e| "  #{e}"}
    end

    desc "Build a log-overview for #{@basename}" if Rake4LaTeX::TASK_DESCRIPTION 
    task :log_overview do
        stat = Rake4LaTeX::TeX_Statistic.new(@basename)
        puts stat.overview()
    end

    desc "Build a log-overview file for #{@basename}" if Rake4LaTeX::TASK_DESCRIPTION 
    task :log_overview_file do
        stat = Rake4LaTeX::TeX_Statistic.new(@basename)
        #Filename also used in set4clean
        File.open("#{@basename}.overview.txt", 'w'){|f| 
          puts "Create #{f.path}"
          f << stat.overview()
        }
    end

  end  #namespace
  
  #Define the 'global' tasks.
  task :statistic       => "#{@basename}:statistic"
  task :log_overview => "#{@basename}:log_overview"
  task :log_overview_file => "#{@basename}:log_overview_file"
end
inspect() click to toggle source
# File lib/rake4latex/base.rb, line 349
def inspect()
  "#<Rake4LaTeX::Basefile #{@basename}>"
end
set4clean() click to toggle source

Define the files to be deleted with clean and clobber.

There is no global definition to delete all files, only the help file for the selected basename is taken.

This method is called by task ‘basename’ (Basefile#initialize)

end

# File lib/rake4latex/base.rb, line 288
def set4clean()
  cleanlist = FileList.new("#{@basename}.{aux,log,out,toc,lot,lof,nav,snm}")
  cleanlist.add("#{@basename}.{ilg,idx,ind}") #Index
  cleanlist.add("#{@basename}-*.{ilg,idx,ind}") #splitindex.sty
  cleanlist.add("#{@basename}.{blg,bbl}") #BibTeX
  cleanlist.add("#{@basename}.{bcf}") #BibLaTeX
  cleanlist.add("#{@basename}-blx.{bib}") #auxiliary file used by the 'biblatex' package
  cleanlist.add("#{@basename}.*.{blg,bbl,aux}") #gloss.sty
  cleanlist.add("#{@basename}.{maf,ptc*,mtc*,stc*}") #minitoc.sty (stc1, stc2...)
  cleanlist.add("#{@basename}.{glo,gls}") #glossary.sty
  #~ cleanlist.add("#{@basename}.{rai,rao,RAO}") #rail/rail.sty
  cleanlist.add("#{@basename}.{rai,rao}") #rail/rail.sty
  cleanlist.add("#{@basename}.{tdo}") #tdo: todonotes.sty
  cleanlist.add("#{@basename}.{vrb}") #vrb: beamer.sty (verbatim)
  cleanlist.add("#{@basename}.{lox}") #lox: fixme.sty
  cleanlist.add("#{@basename}.{run.xml}") #run.xml: TeXworks (editor)
  cleanlist.add("#{@basename}.{upa,upb}") #pdfcomment.sty

  clobberlist = FileList.new("#{@basename}.{dvi,pdf,ps}")
  #The * is needed.else the filename is added always. With '*' it is checked for existence
  clobberlist.add("#{@basename}.overview*.txt")  #rake4latex, task :log_overview
  
  CLEAN.include(cleanlist)
  CLOBBER.include(clobberlist)

  CLEAN.uniq!
  CLOBBER.uniq!
  
end