rake4latex 0.1.1 → 0.1.2

Sign up to get free protection for your applications and to get access to all the features.
Files changed (73) hide show
  1. data/bin/call_rake4latex.rb +7 -1
  2. data/bin/readme_call_rake4latex.txt +1 -0
  3. data/lib/rake4latex.rb +15 -14
  4. data/lib/rake4latex/analyse_texfile.rb +6 -4
  5. data/lib/rake4latex/base.rb +191 -63
  6. data/lib/rake4latex/clean.rb +9 -6
  7. data/lib/rake4latex/glossaries.rb +101 -0
  8. data/lib/rake4latex/latexrunner.rb +16 -27
  9. data/lib/rake4latex/rules.rb +81 -54
  10. data/lib/rake4latex/splitindex.rb +0 -1
  11. data/lib/rake4latex/tex_statistic.rb +18 -6
  12. data/lib/rake4latex_dtx.rb +3 -3
  13. data/lib/rake4latex_dvipdfm.rb +2 -2
  14. data/readme.html +32 -14
  15. data/readme.txt +21 -11
  16. data/test/_expected/bibtex_test.txt +9 -9
  17. data/test/_expected/bibtex_test_bib.txt +4 -4
  18. data/test/_expected/bibtex_test_build_rakefile.txt +3 -0
  19. data/test/_expected/dtx_test.txt +11 -11
  20. data/test/_expected/dvipdfm_test.txt +6 -6
  21. data/test/_expected/error_test.txt +3 -3
  22. data/test/_expected/error_test_ignore_error.txt +4 -4
  23. data/test/_expected/error_test_overview.txt +7 -2
  24. data/test/_expected/error_test_statistic.txt +2 -2
  25. data/test/_expected/gloss_test.txt +15 -15
  26. data/test/_expected/gloss_test_bib.txt +7 -7
  27. data/test/_expected/gloss_test_build_rakefile.txt +3 -0
  28. data/test/_expected/glossaries_test.txt +12 -0
  29. data/test/_expected/includes_test.txt +7 -7
  30. data/test/_expected/includes_test_build_rakefile.txt +3 -0
  31. data/test/_expected/index_test.txt +6 -6
  32. data/test/_expected/longtable_test.txt +5 -5
  33. data/test/_expected/minitoc_test.txt +7 -7
  34. data/test/_expected/ps2pdf_test.txt +7 -7
  35. data/test/_expected/rail_error_test.txt +9 -9
  36. data/test/_expected/rail_test.txt +6 -6
  37. data/test/_expected/splitindex_test.txt +7 -7
  38. data/test/_expected/splitindex_test_build_rakefile.txt +9 -6
  39. data/test/_expected/supertabular_test.txt +5 -5
  40. data/test/_expected/supertabular_test_statistic.txt +1 -1
  41. data/test/_expected/two_tasks_test.txt +15 -0
  42. data/test/_expected/two_tasks_test_statistic.txt +11 -0
  43. data/test/_expected/varioref_test.txt +5 -5
  44. data/test/_expected/varioref_test_ignore_error.txt +7 -7
  45. data/test/_expected/z_complex_test.txt +12 -11
  46. data/test/_expected/z_complex_test_overview.txt +24 -9
  47. data/test/_expected/z_complex_test_overview_file.txt +2 -0
  48. data/test/_expected/z_complex_test_statistic.txt +2 -2
  49. data/test/bibtex/rakefile.rb +4 -2
  50. data/test/dtx/rakefile.rb +3 -3
  51. data/test/dvipdfm/rakefile.rb +4 -2
  52. data/test/error/rakefile.rb +10 -6
  53. data/test/gloss/rakefile.rb +3 -2
  54. data/test/glossaries/rakefile.rb +50 -0
  55. data/test/glossaries/sample.tex +133 -0
  56. data/test/includes/rakefile.rb +7 -6
  57. data/test/index/rakefile.rb +3 -2
  58. data/test/longtable/rakefile.rb +3 -2
  59. data/test/minitoc/rakefile.rb +3 -2
  60. data/test/ps2pdf/rakefile.rb +3 -2
  61. data/test/rail/rakefile.rb +5 -4
  62. data/test/rail_error/rakefile.rb +3 -2
  63. data/test/splitindex/rakefile.rb +7 -5
  64. data/test/supertabular/rakefile.rb +3 -2
  65. data/test/two_tasks/rakefile.rb +50 -0
  66. data/test/two_tasks/testdocument_1.tex +10 -0
  67. data/test/two_tasks/testdocument_2.tex +10 -0
  68. data/test/unittest_rake4latex.rb +27 -4
  69. data/test/unittest_rake4latex_testcases.rb +27 -11
  70. data/test/varioref/rakefile.rb +11 -5
  71. data/test/z_complex/rakefile.rb +8 -6
  72. data/test/z_complex/testdocument.tex +12 -1
  73. metadata +149 -28
@@ -18,21 +18,24 @@
18
18
  # Changes:
19
19
  # * Use File.delete (avoid stderr-messages of rm_r)
20
20
  # * Use LaTeXRunner.logger if available.
21
- # * Add task :basefile as prerequisite.
21
+ # * Use uniq to avoid warnings for just deleted files.
22
22
 
23
- require 'rake'
23
+ require 'rake'
24
24
 
25
25
  CLEAN = Rake::FileList["**/*~", "**/*.bak", "**/core"]
26
26
  CLEAN.clear_exclude.exclude { |fn|
27
27
  fn.pathmap("%f") == 'core' && File.directory?(fn)
28
28
  }
29
+
29
30
 
30
31
  desc "Remove any temporary products."
31
32
  #~ task :clean do
32
- task :clean => :basefile do
33
- logger = Rake4LaTeX::Logger
33
+ task :clean do
34
+ Rake4LaTeX::Basefile.each{|file| file.set4clean } #late call is necessary. doc. says FileList would work without...
35
+
36
+ logger = Rake4LaTeX::Logger
34
37
  logger.info("Clean: delete helpfiles #{CLEAN.inspect}") if logger.info?
35
- CLEAN.each { |fn|
38
+ CLEAN.uniq.each { |fn|
36
39
  #~ rm_r fn rescue nil
37
40
  #~ logger.debug("Clean: delete #{fn}") if logger
38
41
  File.delete(fn) rescue ( logger.warn("Clean: #{fn} not deleted") if logger )
@@ -45,7 +48,7 @@ desc "Remove any generated file."
45
48
  task :clobber => :clean do
46
49
  logger = Rake4LaTeX::Logger
47
50
  logger.info("Clobber: delete helpfiles #{(CLEAN + CLOBBER).inspect}") if logger.info?
48
- CLOBBER.each { |fn|
51
+ CLOBBER.uniq.each { |fn|
49
52
  #~ rm_r fn rescue nil
50
53
  #~ logger.debug("Clobber: delete #{fn}") if logger
51
54
  File.delete(fn) rescue ( logger.warn("Clobber: #{fn} not deleted") if logger )
@@ -0,0 +1,101 @@
1
+ =begin rdoc
2
+ Define tasks for usage of rake4latex with glossaries.sty
3
+
4
+ More about glossaries.sty:
5
+ * http://www.ctan.org/tex-archive/help/Catalogue/entries/glossaries.html
6
+ * http://www.ctan.org/tex-archive/macros/latex/contrib/glossaries/
7
+ * http://theoval.cmp.uea.ac.uk/~nlct/latex/packages/glossaries/glossaries-manual.html
8
+
9
+ ToDo:
10
+ The logs from the glossaries are not analysed by Rake4LaTeX::TeXMessage
11
+ =end
12
+
13
+
14
+ =begin
15
+ AUX-File:
16
+
17
+ \@newglossary{label}{log}{out-ext}{in-ext}
18
+
19
+ \@newglossary{main}{glg}{gls}{glo}
20
+ \@newglossary{ext}{TeX-extensions}{glsext_in}{glsext_out}
21
+ \@istfilename{sample.ist}
22
+
23
+ Anschliessend makeindex rufen.
24
+
25
+ Statt ind/idx werden
26
+ - gls => glo (default)
27
+ - glsext_in => glsext_out (selbstdefiniert)
28
+ verwendet.
29
+
30
+ Zus�tzlich Index-file ist.
31
+ =end
32
+
33
+
34
+ module Rake4LaTeX
35
+ =begin
36
+ Extend the class by accessors for glossaries.sty.
37
+ =end
38
+ class LaTeXRunner
39
+ =begin rdoc
40
+ Store information from glossaries.sty to transport it from
41
+ tex_postrule_check to tex_postrule for 'gls'-task.
42
+ =end
43
+ attr_accessor :glossaries
44
+ =begin rdoc
45
+ Format for the makefindex call neeeded for glossaries.sty.
46
+ =end
47
+ attr_accessor :glossaries_format
48
+ end #LaTeXRunner
49
+ end #Rake4LaTeX
50
+
51
+ =begin
52
+ Check glossaries.sty-infos after a TeX-run.
53
+
54
+ The data are stored in Rake4LaTeX::LaTeXRunner#glossaries
55
+ and Rake4LaTeX::LaTeXRunner#glossaries_format .
56
+ =end
57
+ desc "Build glossary with glossaries.sty"
58
+ tex_postrule_check '.gls' do |args|
59
+ gls = {}
60
+ File.read(args[:task].name.ext('aux')).each{|auxline|
61
+ case auxline
62
+ when /\\@newglossary\{(.*)\}\{(.*)\}\{(.*)\}\{(.*)\}/
63
+ args[:logger].debug("Found Glossary #{$1}-#{$2}-#{$3}-#{$4}")
64
+ gls[$1] = { :log => $2, :out => $3, :in => $4 }
65
+ when /\\@istfilename\{(.*)\}/
66
+ args[:logger].debug("Found Glossary format definition #{$1}")
67
+ args[:texrunner].glossaries_format = $1
68
+ end
69
+ }
70
+
71
+ #Provide glossaries-data to gls-task.
72
+ args[:texrunner].glossaries = gls
73
+ gls.empty? ? false : true
74
+ end
75
+
76
+
77
+ =begin
78
+ Build the glossaries from glossaries.sty.
79
+
80
+ The data are taken from Rake4LaTeX::LaTeXRunner#glossaries
81
+ and Rake4LaTeX::LaTeXRunner#glossaries_format .
82
+ =end
83
+ desc "Call Makeindex for glossaries with glossaries.sty"
84
+ tex_postrule '.gls' => '.glo' do | t |
85
+ #fixme: check for t.texrunner.glossaries
86
+ t.texrunner.logger.info("Prepare glossaries #{t.texrunner.glossaries.keys.inspect}")
87
+ t.texrunner.logger.warn("No makeindex-style available for glossaries") unless t.texrunner.glossaries_format
88
+ t.texrunner.glossaries.each{|key, par|
89
+ cmd = Rake4LaTeX.build_cmd( 'makeindex',
90
+ :file_in => t.name.ext(par[:in]), :file_out => t.name.ext(par[:out]),
91
+ :file_log => t.name.ext(par[:log]), :format => t.texrunner.glossaries_format
92
+ )
93
+ #~ puts cmd
94
+ Rake4LaTeX::Logger.debug("Call #{cmd}")
95
+ stdout, stderr = catch_screen_output{
96
+ sh cmd
97
+ }
98
+ CLEAN.include(FileList.new("#{t.name.ext()}.{#{par[:in]},#{par[:out]},#{par[:log]}}"))
99
+ }#$gls.each
100
+ CLEAN.include(FileList.new(t.texrunner.glossaries_format)) if t.texrunner.glossaries_format
101
+ end
@@ -7,19 +7,7 @@ It calls (pdf|xe|lua)LaTeX and checks if additional tools are needed.
7
7
  class LaTeXRunner
8
8
  #Define Infinity (needed for option maxruns.
9
9
  Infinity = 1.0/0
10
- #
11
- #Define the main settings for the runner.
12
- #
13
- #This values can be overwritten with
14
- # Rake.application.set_latexrunner_default(:loglevel, Log4r::DEBUG)
15
- #
16
- DEFAULT_SETTINGS = {
17
- :main_file => nil, #only needed for key-check. Must be defined later.
18
- :maxruns => 5,
19
- :program => :pdflatex, #Valid entries see PROGRAMS
20
- :loglevel => Log4r::INFO,
21
- :texerrors_allowed => false,
22
- }
10
+
23
11
  =begin rdoc
24
12
  All tasks, which should be executed after a TeX-call.
25
13
 
@@ -56,15 +44,20 @@ Should return true or false.
56
44
  =begin rdoc
57
45
  Define a new runner.
58
46
 
59
- The settings contain the following values:
60
- * main_file, see LaTeXRunner#main_file
61
- * maxruns, see LaTeXRunner#maxruns
47
+ The settings must contain:
48
+ * main_file, see Rake4LaTeX::LaTeXRunner#main_file
49
+ It may contain the following values:
50
+ * maxruns, see Rake4LaTeX::LaTeXRunner#maxruns
51
+ Defaults are defined in Rake4LaTeX::Basefile#settings4LaTeXRunner
62
52
  =end
63
53
  def initialize( settings )
64
54
 
65
- #~ raise ArgumentError, "Task is no RakeTask but #{t.class}" unless task.is_a?(Rake::Task)
55
+ @main_file = settings[:main_file]
56
+ raise MainfileError, "main_file missing" unless @main_file
57
+ #Define or get Basefile
58
+ basefile = Rake4LaTeX::Basefile.set( @main_file )
66
59
 
67
- @logger = Rake4LaTeX::Logger
60
+ @logger = basefile.logger
68
61
  #~ @logger = Log4r::Logger.new("LaTeXRunner #{settings[:main_file]}")
69
62
  #~ @logger.outputters = Log4r::StdoutOutputter.new('log_stdout')
70
63
 
@@ -72,7 +65,7 @@ The settings contain the following values:
72
65
  #This allows us to overwrite the program settings for a special LaTeXRunner.
73
66
  @programms = Programms.dup
74
67
 
75
- DEFAULT_SETTINGS.merge(settings).each{|key, value|
68
+ basefile.settings4LaTeXRunner.merge(settings).each{|key, value|
76
69
  #~ puts "#{key}: #{value}"
77
70
  case key
78
71
  when :main_file; @main_file = value
@@ -87,7 +80,7 @@ The settings contain the following values:
87
80
  raise ArgumentError, "Undefined key #{key} for LaTeXRunner"
88
81
  end
89
82
  }
90
- raise MainfileError, "main_file missing" unless @main_file
83
+
91
84
  raise MainfileError, "main_file #{@main_file} not found" unless File.exist?(@main_file)
92
85
  raise ArgumentError, "Maxrun is no number" unless @maxruns.is_a?( Fixnum ) or @maxruns == Infinity
93
86
 
@@ -95,8 +88,6 @@ The settings contain the following values:
95
88
  @input_dir = File.dirname(@main_file)
96
89
  @full_input_dir = File.expand_path(@input_dir)
97
90
 
98
- #This replacement is global in Rake4LaTeX::Logger -> May be a problem with multiple documents, parallel tasks...
99
- @logger.name.replace("LaTeXRunner #{@basename}") #no, only one global Logger.
100
91
  @logger.info( "StartLaTeXRunner for #{@main_file}")
101
92
 
102
93
  @rerun_necessary = true #initialize
@@ -164,8 +155,6 @@ The settings contain the following values:
164
155
  run_latex_once(cmd)
165
156
  end
166
157
  end
167
- #Guarentee that help files are deleted in clean.
168
- Rake4LaTeX.set4clean( @basename )
169
158
 
170
159
  plural_s = "#{@texruns} run#{@texruns>1 ? 's': ''}"
171
160
  if @rerun_necessary
@@ -187,7 +176,7 @@ The settings contain the following values:
187
176
  checksums = {}
188
177
  FileList["#{@basename.ext('*')}"].each do |file|
189
178
  # Computes a MD5 digest for the given file, reading the file.
190
- File.open(file){|f| checksums[file] = MD5.new(f.read).hexdigest }
179
+ File.open(file){|f| checksums[file] = Digest::MD5.hexdigest(f.read) }
191
180
  end
192
181
 
193
182
  @logger.info("Excute #{cmd}")
@@ -209,7 +198,7 @@ The settings contain the following values:
209
198
  when nil
210
199
  @logger.debug("new file #{file}")
211
200
  checksums[file] = :changed
212
- when File.open(file){|f| MD5.new(f.read).hexdigest}
201
+ when File.open(file){|f| Digest::MD5.hexdigest(f.read) }
213
202
  #no message needed
214
203
  #~ @logger.debug("Unchanged file #{file}")
215
204
  else
@@ -280,7 +269,7 @@ The settings contain the following values:
280
269
  @logger.info("Call target #{post_prereq.name} (#{reason4call})" )
281
270
  post_prereq.invoke()
282
271
  File.open(post_prereq.name){|f|
283
- @rerun_necessary = (MD5.new(f.read).hexdigest != checksums[f.path])
272
+ @rerun_necessary = ( Digest::MD5.hexdigest(f.read) != checksums[f.path])
284
273
  @logger.info("Rerun necessary (#{f.path} changed)" ) if @rerun_necessary
285
274
  } unless @rerun_necessary #check not necessary, if we already need an additional run
286
275
  break #Only one call necessary
@@ -28,7 +28,7 @@ This may be done via different ways. You can select your version on your own:
28
28
 
29
29
  #Some Tools have screen output.
30
30
  #Rake4LaTeX should run silent in background, so we have to redirect the output.
31
- require 'catch_output'
31
+ require 'knut_tools/catch_output'
32
32
  include Catch_output
33
33
 
34
34
  desc "Show compiled source in Adobe Acrobat Reader."
@@ -40,46 +40,16 @@ task :acroread do |t|
40
40
  }
41
41
  end
42
42
 
43
+ =begin
44
+ Alternative definition instead Rake4LaTeX::Basefile.set(filename)
45
+ =end
43
46
  desc "Set the basefile - needed for clean and statistic"
44
47
  task :basefile do |task|
45
48
  task.prerequisites.each{|pre|
46
49
  #~ puts "Set basefile #{pre.inspect}"
47
- Rake4LaTeX.set4clean( pre )
48
- file :statistic => pre
50
+ puts "Task basefile defined for #{pre.inspect} (Please replace it with: Rake4LaTeX::Basefile.set)"
51
+ Rake4LaTeX::Basefile.new(pre)
49
52
  }
50
- task.reenable() #If not the second call for clean will not work.
51
- end
52
- task :default => :basefile
53
-
54
- desc "Build a log-overview file"
55
- task :log_overview => :basefile do
56
- Rake.application[:statistic].prerequisites.each{|pre|
57
- next if pre == 'basefile' #exclude task :basefile
58
- stat = Rake4LaTeX::TeX_Statistic.new(pre)
59
- #Filename also used in set4clean
60
- File.open("#{pre.ext()}.overview.txt", 'w'){|f|
61
- f << stat.overview()
62
- }
63
- }
64
- end
65
-
66
- desc "Archive all log-files to zip-file"
67
- task :log_archive => :basefile do
68
- require 'zip/zipfilesystem'
69
- Zip::ZipFile.open("rake4latex_log_archive.zip", Zip::ZipFile::CREATE ){|zip|
70
- puts "Pack #{zip.name}"
71
- #Store all Files to be deleted
72
- CLEAN.each{|filename|
73
- zip.file.open(File.basename(filename), 'w'){|f| f << File.open(filename,"rb") {|io| io.read} }
74
- }
75
- Rake.application[:statistic].prerequisites.each{|pre|
76
- next if pre == 'basefile' #exclude task :basefile
77
- stat = Rake4LaTeX::TeX_Statistic.new(pre)
78
- zip.file.open("#{pre}.overview.txt", 'w'){|f|
79
- f << stat.overview()
80
- }
81
- }
82
- } #close zip-file
83
53
  end
84
54
 
85
55
  #
@@ -92,6 +62,9 @@ task :touch do |task|
92
62
  }
93
63
  end
94
64
 
65
+ =begin
66
+ Call LaTeX
67
+ =end
95
68
  desc "Build a dvi-file with LaTeX"
96
69
  rule '.dvi' => '.tex' do |task|
97
70
  runner = Rake4LaTeX::LaTeXRunner.new(
@@ -102,9 +75,13 @@ rule '.dvi' => '.tex' do |task|
102
75
  runner.execute #Does all the work and calls the "post-prerequisites"
103
76
  end
104
77
 
78
+ =begin
79
+ Call dvips
80
+ =end
105
81
  desc "Build a ps-file from dvi"
106
82
  rule '.ps' => '.dvi' do |task|
107
- Rake4LaTeX::Logger.info("Call dvips for <#{task.source}>")
83
+
84
+ Rake4LaTeX::Basefile.set(task.source).logger.info("Call dvips for <#{task.source}>")
108
85
  cmd = Rake4LaTeX.build_cmd( 'dvips', :filename => task.source )
109
86
 
110
87
  stdout, stderr = catch_screen_output{
@@ -113,16 +90,18 @@ rule '.ps' => '.dvi' do |task|
113
90
  #stderr -> log.
114
91
  }
115
92
  if $? != 0
116
- Rake4LaTeX::Logger.fatal("There where dvips errors. \n#{stdout}")
93
+ Rake4LaTeX::Basefile.set(task.source).fatal("There where dvips errors. \n#{stdout}")
117
94
  end
118
95
  end
119
96
 
120
-
121
-
97
+ =begin
98
+ Call Makenindex
99
+ =end
122
100
  desc "Call Makeindex"
123
101
  tex_postrule '.ind' => '.idx' do |task|
124
102
  #check for splitidx
125
- splitidx = Rake4LaTeX::Splitindex.new(task.source, Rake4LaTeX::Logger)
103
+ #If you use index.sty you will get an error.
104
+ splitidx = Rake4LaTeX::Splitindex.new(task.source, task.texrunner.logger)
126
105
  if splitidx.makeindex? #standard index, no splitidx
127
106
  #makeindex writes to stderr -> catch it
128
107
  cmd = Rake4LaTeX.build_cmd( 'makeindex', { :file_in => task.source }, task )
@@ -136,6 +115,9 @@ tex_postrule '.ind' => '.idx' do |task|
136
115
  end
137
116
  end
138
117
 
118
+ =begin
119
+ Call BibTeX
120
+ =end
139
121
  desc "Call BibTeX"
140
122
  #Define the precheck
141
123
  tex_postrule_check '.bbl' do |args|
@@ -154,6 +136,13 @@ tex_postrule_check '.bbl' do |args|
154
136
  else
155
137
  args[:logger].warn("\t#{auxfile} not found in bbl-precheck")
156
138
  end
139
+
140
+ #Check, if the bbl is missing.
141
+ #may occur, if the bbl-file was deleted manual, but no change in aux...
142
+ # fixme -- provoziert unn�tige bibtex-laeufe.
143
+ #~ bblfile = args[:task].name.ext('bbl')
144
+ #~ necessary = "#{bblfile} missing" unless File.exist?(bblfile)
145
+
157
146
  #Check all prerequisites.
158
147
  #This should be the aux-file and (optional) bib-files.
159
148
  args[:task].prerequisites.each{|post_prereq_pre|
@@ -192,8 +181,10 @@ tex_postrule '.bbl' => '.aux' do |task|
192
181
  end
193
182
  end
194
183
 
195
- #Support for rail
196
- #http://www.ctan.org/tex-archive/support/rail/
184
+ =begin
185
+ Call Rail
186
+ http://www.ctan.org/tex-archive/support/rail/
187
+ =end
197
188
  desc "Call Rail"
198
189
  tex_postrule '.rao' => '.rai' do |task|
199
190
  #Rail works only with filenames with 8 characters.
@@ -208,7 +199,7 @@ tex_postrule '.rao' => '.rai' do |task|
208
199
  task.texrunner.logger.fatal("There where Rail errors.")
209
200
  error = true
210
201
  end
211
- stderr.each{|errline|
202
+ stderr.each_line{|errline|
212
203
  task.texrunner.logger.error("Rail error: #{errline.strip}")
213
204
  error = true
214
205
  }
@@ -225,15 +216,51 @@ tex_postrule '.rao' => '.rai' do |task|
225
216
  CLEAN.include(task.name)
226
217
  end
227
218
 
219
+ =begin
220
+ End Task and TeX-independend tasks.
228
221
 
229
- desc "Build a statistic for TeX project"
230
- task :statistic => :basefile do |task|
231
- task.prerequisites.each{|pre|
232
- next if pre == 'basefile' #exclude task :basefile
233
- stat = Rake4LaTeX::TeX_Statistic.new(pre)
234
- puts "Statistic for #{pre}:"
235
- puts stat.stat_summary.map{|e| " #{e}"}
236
- #~ puts stat
237
- }
238
- end
222
+ This tasks require a previous Rake4LaTeX::Basefile.set
223
+ =end
224
+
225
+
226
+
227
+ =begin
228
+ Build Statistic.
229
+
230
+ The main action is defined in Rake4LaTeX::Basefile
231
+ =end
232
+ desc "Build a statistic for all TeX project"
233
+ task :statistic
234
+
235
+ =begin
236
+ Show the log-overview
237
+ =end
238
+ desc "Show the log-overview"
239
+ task :log_overview
240
+
241
+ =begin
242
+ Build a log-overview file
243
+ =end
244
+ desc "Build a log-overview file"
245
+ task :log_overview_file
239
246
 
247
+ =begin
248
+ Archive all log-files to zip-file
249
+ =end
250
+ desc "Archive all log-files to zip-file"
251
+ task :log_archive do
252
+ require 'zip/zipfilesystem'
253
+ Zip::ZipFile.open("rake4latex_log_archive.zip", Zip::ZipFile::CREATE ){|zip|
254
+ puts "Pack #{zip.name}"
255
+ #Store all Files to be deleted
256
+ CLEAN.each{|filename|
257
+ zip.file.open(File.basename(filename), 'w'){|f| f << File.open(filename,"rb") {|io| io.read} }
258
+ }
259
+ Rake4LaTeX::Basefile.each{|basefile|
260
+ stat = Rake4LaTeX::TeX_Statistic.new(basefile.basename)
261
+ zip.file.open("#{basefile.basename}.overview.txt", 'w'){|f|
262
+ f << stat.overview()
263
+ }
264
+ }
265
+ } #close zip-file
266
+ end