docgenerator 0.1.1 → 1.0.2

Sign up to get free protection for your applications and to get access to all the features.
Files changed (152) hide show
  1. data/examples/docgenerator_example.rb +76 -160
  2. data/examples/docgenerator_example_footnote.rb +98 -0
  3. data/examples/docgenerator_example_list.rb +62 -0
  4. data/examples/docgenerator_example_restrictions.rb +59 -0
  5. data/examples/docgenerator_example_tabular.rb +68 -0
  6. data/examples/docgenerator_example_tripfalls.rb +57 -0
  7. data/examples/wiki2docgenerator_example.rb +270 -0
  8. data/lib/docgenerator.rb +159 -0
  9. data/{docgenerator_attribute.rb → lib/docgenerator_attribute.rb} +32 -7
  10. data/{docgenerator_characters.rb → lib/docgenerator_characters.rb} +15 -0
  11. data/{docgenerator_css.rb → lib/docgenerator_css.rb} +6 -1
  12. data/{docgenerator_document.rb → lib/docgenerator_document.rb} +92 -93
  13. data/{docgenerator_element.rb → lib/docgenerator_element.rb} +125 -51
  14. data/{docgenerator_elements.rb → lib/docgenerator_elements.rb} +40 -56
  15. data/{docgenerator_environments.rb → lib/docgenerator_environments.rb} +16 -10
  16. data/{docgenerator_footnote.rb → lib/docgenerator_footnote.rb} +44 -22
  17. data/{docgenerator_lists.rb → lib/docgenerator_lists.rb} +44 -39
  18. data/{docgenerator_sections.rb → lib/docgenerator_sections.rb} +2 -2
  19. data/{docgenerator_tabular.rb → lib/docgenerator_tabular.rb} +71 -39
  20. data/{packages → lib/packages}/docgenerator_attachfile.rb +0 -0
  21. data/{packages → lib/packages}/docgenerator_caption.rb +0 -0
  22. data/{packages → lib/packages}/docgenerator_hyperref.rb +0 -0
  23. data/{packages → lib/packages}/docgenerator_listings.rb +1 -2
  24. data/{packages → lib/packages}/docgenerator_pdfpages.rb +0 -0
  25. data/{packages → lib/packages}/docgenerator_scrlettr2.rb +2 -2
  26. data/{packages → lib/packages}/docgenerator_scrpage2.rb +0 -0
  27. data/{packages → lib/packages}/docgenerator_url.rb +0 -0
  28. data/lib/templates/docgenerator_template.rb +176 -0
  29. data/lib/templates/docgenerator_template.yaml +105 -0
  30. data/lib/wiki2doc/wiki2docgenerator.rb +1161 -0
  31. data/self_docgenerator.rb +161 -0
  32. data/unittest/expected/test_beamer_note.html +1 -0
  33. data/unittest/expected/test_beamer_note.latex +1 -0
  34. data/unittest/expected/test_beamer_note.text +1 -0
  35. data/unittest/expected/test_beamer_note.wiki +1 -0
  36. data/unittest/expected/test_block.html +1 -0
  37. data/unittest/expected/test_block.latex +1 -0
  38. data/unittest/expected/test_block.text +1 -0
  39. data/unittest/expected/test_block.wiki +2 -0
  40. data/unittest/expected/test_css.css +1 -0
  41. data/unittest/expected/test_css2.css +1 -0
  42. data/unittest/expected/test_description.html +1 -0
  43. data/unittest/expected/test_description.latex +3 -0
  44. data/unittest/expected/test_description.text +3 -0
  45. data/unittest/expected/test_description.wiki +3 -0
  46. data/unittest/expected/test_document_article.latex +23 -0
  47. data/unittest/expected/test_document_html.html +14 -0
  48. data/unittest/expected/test_document_replacement_article.latex +23 -0
  49. data/unittest/expected/test_document_replacement_html.html +14 -0
  50. data/unittest/expected/test_document_replacement_text.text +5 -0
  51. data/unittest/expected/test_document_replacement_wiki.wiki +5 -0
  52. data/unittest/expected/test_document_text.text +5 -0
  53. data/unittest/expected/test_document_wiki.wiki +5 -0
  54. data/unittest/expected/test_enumerate.html +1 -0
  55. data/unittest/expected/test_enumerate.latex +3 -0
  56. data/unittest/expected/test_enumerate.text +1 -0
  57. data/unittest/expected/test_enumerate.wiki +2 -0
  58. data/unittest/expected/test_footnote.html +5 -0
  59. data/unittest/expected/test_footnote.latex +11 -0
  60. data/unittest/expected/test_footnote.text +13 -0
  61. data/unittest/expected/test_footnote.wiki +11 -0
  62. data/unittest/expected/test_footnote_group.html +8 -0
  63. data/unittest/expected/test_footnote_group.latex +17 -0
  64. data/unittest/expected/test_footnote_group.wiki +17 -0
  65. data/unittest/expected/test_href.html +2 -0
  66. data/unittest/expected/test_href.latex +8 -0
  67. data/unittest/expected/test_href.text +4 -0
  68. data/unittest/expected/test_html_css.html +1 -0
  69. data/unittest/expected/test_itemize.html +1 -0
  70. data/unittest/expected/test_itemize.latex +3 -0
  71. data/unittest/expected/test_itemize.text +1 -0
  72. data/unittest/expected/test_itemize.wiki +2 -0
  73. data/unittest/expected/test_section.html +8 -0
  74. data/unittest/expected/test_section.latex +20 -0
  75. data/unittest/expected/test_section.text +24 -0
  76. data/unittest/expected/test_section.wiki +20 -0
  77. data/unittest/expected/test_tabular.html +10 -0
  78. data/unittest/expected/test_tabular.latex +10 -0
  79. data/unittest/expected/test_tabular.wiki +31 -0
  80. data/unittest/expected/test_tabular_doc.latex +22 -0
  81. data/unittest/expected/test_wiki.html +6 -0
  82. data/unittest/expected/test_wiki.latex +12 -0
  83. data/unittest/expected/test_wiki.text +14 -0
  84. data/unittest/expected/test_wiki.wiki +12 -0
  85. data/unittest/expected/test_wiki_amazon.html +10 -0
  86. data/unittest/expected/test_wiki_description.html +7 -0
  87. data/unittest/expected/test_wiki_description.latex +11 -0
  88. data/unittest/expected/test_wiki_description.text +6 -0
  89. data/unittest/expected/test_wiki_description.wiki +6 -0
  90. data/unittest/expected/test_wiki_footnote.html +8 -0
  91. data/unittest/expected/test_wiki_footnote.latex +15 -0
  92. data/unittest/expected/test_wiki_footnote.text +12 -0
  93. data/unittest/expected/test_wiki_footnote.wiki +12 -0
  94. data/unittest/expected/test_wiki_footnote_groupid.html +21 -0
  95. data/unittest/expected/test_wiki_html_code.html +7 -0
  96. data/unittest/expected/test_wiki_html_code.latex +10 -0
  97. data/unittest/expected/test_wiki_html_code.text +6 -0
  98. data/unittest/expected/test_wiki_html_code.wiki +6 -0
  99. data/unittest/expected/test_wiki_inline.html +6 -0
  100. data/unittest/expected/test_wiki_inline.latex +12 -0
  101. data/unittest/expected/test_wiki_inline.text +8 -0
  102. data/unittest/expected/test_wiki_inline.wiki +8 -0
  103. data/unittest/expected/test_wiki_label.html +6 -0
  104. data/unittest/expected/test_wiki_link.html +8 -0
  105. data/unittest/expected/test_wiki_link.latex +14 -0
  106. data/unittest/expected/test_wiki_link.log +3 -0
  107. data/unittest/expected/test_wiki_link.wiki +6 -0
  108. data/unittest/expected/test_wiki_list_ol.html +24 -0
  109. data/unittest/expected/test_wiki_list_ol.latex +30 -0
  110. data/unittest/expected/test_wiki_list_ol.text +10 -0
  111. data/unittest/expected/test_wiki_list_ol.wiki +12 -0
  112. data/unittest/expected/test_wiki_list_ol_after_ul.html +16 -0
  113. data/unittest/expected/test_wiki_list_ol_after_ul.latex +24 -0
  114. data/unittest/expected/test_wiki_list_ol_after_ul.text +8 -0
  115. data/unittest/expected/test_wiki_list_ol_after_ul.wiki +10 -0
  116. data/unittest/expected/test_wiki_list_ol_ul.html +24 -0
  117. data/unittest/expected/test_wiki_list_ol_ul.latex +30 -0
  118. data/unittest/expected/test_wiki_list_ol_ul.text +10 -0
  119. data/unittest/expected/test_wiki_list_ol_ul.wiki +12 -0
  120. data/unittest/expected/test_wiki_list_ul.html +24 -0
  121. data/unittest/expected/test_wiki_list_ul.latex +30 -0
  122. data/unittest/expected/test_wiki_list_ul.text +10 -0
  123. data/unittest/expected/test_wiki_list_ul.wiki +12 -0
  124. data/unittest/expected/test_wiki_list_ul_too_much.html +39 -0
  125. data/unittest/expected/test_wiki_list_ul_too_much.latex +51 -0
  126. data/unittest/expected/test_wiki_list_ul_too_much.text +11 -0
  127. data/unittest/expected/test_wiki_list_ul_too_much.wiki +15 -0
  128. data/unittest/expected/test_wiki_picture.html +55 -0
  129. data/unittest/expected/test_wiki_picture.latex +76 -0
  130. data/unittest/expected/test_wiki_picture_thumb.html +5 -0
  131. data/unittest/expected/test_wiki_tab1.html +30 -0
  132. data/unittest/expected/test_wiki_tab1.latex +30 -0
  133. data/unittest/expected/test_wiki_tab1.wiki +29 -0
  134. data/unittest/expected/test_wiki_textformatting.html +7 -0
  135. data/unittest/expected/test_wiki_textformatting.latex +16 -0
  136. data/unittest/expected/test_wiki_textformatting.text +11 -0
  137. data/unittest/expected/test_wiki_textformatting.wiki +9 -0
  138. data/unittest/expected/test_wiki_toc.html +9 -0
  139. data/unittest/expected/test_wiki_toc.latex +18 -0
  140. data/unittest/expected/test_wiki_toc.text +21 -0
  141. data/unittest/expected/test_wiki_toc.wiki +18 -0
  142. data/unittest/expected/test_wiki_ul_multiple_line.html +18 -0
  143. data/unittest/expected/test_wiki_ul_multiple_line.latex +19 -0
  144. data/unittest/expected/test_wiki_ul_multiple_line.text +6 -0
  145. data/unittest/expected/test_wiki_ul_multiple_line.wiki +7 -0
  146. data/unittest/test_docgenerator.rb +85 -0
  147. data/unittest/unittest_docgenerator.rb +454 -0
  148. data/unittest/unittest_wiki2doc.rb +451 -0
  149. metadata +155 -31
  150. data/docgenerator.rb +0 -137
  151. data/docgenerator_template.rb +0 -103
  152. data/packages/docgenerator_beamer.rb +0 -250
data/docgenerator.rb DELETED
@@ -1,137 +0,0 @@
1
- #Generic methods to create documents.
2
- #The target format ia generic, supported are LaTeX and HTML.
3
- #
4
- #==Elements
5
- #A document is structured by elements.
6
- #Each element contains attributes/parameters and content.
7
- #(Think of HTML-attributes and TeX-Parameters and the content of HTML-Tags and TeX-Environments.).
8
- #
9
- #Each element corresponds to a HTML-Tag or a LaTeX-Makro/Environment.
10
- #There is a "translation" between HTML and LaTeX elements.
11
- #
12
- #Elements are defined by Element.get (or the method element() ),
13
- #new element types can be defined with Element.create() ).
14
- #
15
- #Some elements (in fact, most of them) are generated dynamic,
16
- #so they qill not occur in this generated documentation).
17
- #== Examples
18
- #See the file Example_DocGenerator.rb
19
- #
20
- #
21
- #== Open topics
22
- #- control content
23
- # (Tag br in HTML klappt).
24
- #- Wiki-Output
25
- #- ASCII-Output
26
-
27
-
28
- #How to handle the End-Tag for br/hr...
29
- #-false: set <br /> (XHTML)
30
- #-nil: set <br> (HTML)
31
- #~ Problem:
32
- #~ HTML darf keine Endtags haben, XHTML verlangt es.
33
- #~ Die Konstante ENDTAG macht es einstellbar.
34
- #~ Zu machen: Flag im Dokument ob HTML oder XHTML.
35
- #~ Aber woher weiss element in welches Dokument es geh�rt?
36
- #~ Gleiche Problem bei to_s, bzw. Document.target
37
- ENDTAG = false if ! defined?( ENDTAG )
38
- #filled in DocGeneratorTemplate.rb (or elsewhere)
39
- SUPPORTED_LaTeX_TEMPLATES = [] if ! defined?( SUPPORTED_LaTeX_TEMPLATES )
40
- SUPPORTED_HTML_TEMPLATES = [] if ! defined?( SUPPORTED_HTML_TEMPLATES )
41
-
42
- #
43
- #@target @@target hat noch bugs.
44
- #mit UNDER_CONSTRUCTION = true kann der Testmodus
45
- UNDER_CONSTRUCTION = false if ! defined?( UNDER_CONSTRUCTION )
46
-
47
- module Backlinks
48
- def set_backlink( content)
49
- #Prepare backword link
50
- cl = [ content ].flatten #content list
51
- cl.each{|c|
52
- if c.respond_to?( :part_of )
53
- c.part_of << self
54
- end
55
- if c.respond_to?( :part_of_doc )
56
- c.part_of_doc << self.part_of_doc
57
- c.part_of_doc.flatten!
58
- #fixme Hier auch attribute backlink setzen?
59
- if c.part_of_doc.include?( nil )
60
- raise "Add nil as document in #{self.inspect}"
61
- end
62
- end
63
- #Log in case of error.
64
- if UNDER_CONSTRUCTION and
65
- ! ( c.respond_to?( :part_of ) or c.respond_to?( :part_of_doc ) ) and
66
- ! (c.is_a?(String) or c.is_a?(Fixnum) )
67
- puts "set_backlink: Not supported by #{c.inspect} in #{self.inspect} (#{c.respond_to?( :part_of )}/#{c.respond_to?( :part_of_doc )})"
68
- end
69
-
70
- }
71
- return self
72
- end
73
- #List of elements, where this element is part of.
74
- #Filled by << in the superior element.
75
- #Normaly only one element
76
- attr_reader :part_of
77
- #List of documents, where this element is part of.
78
- #Filled by << in the superior element.
79
- #Normaly only one element
80
- attr_reader :part_of_doc
81
- #Return an array with all ancestors.
82
- #contains pairs of: [ ancestor, [array of ancestors ancestors]]
83
- def ancestors
84
- anc = []
85
- @part_of.each{|a|
86
- anc << a
87
- anc << a.ancestors if a.respond_to?(:ancestors)
88
- }
89
- return anc
90
- end
91
- end
92
- require 'docgenerator_element'
93
-
94
- #Returns an element of a type "name".
95
- #Attributes and content are optional parameter.
96
- #
97
- def element( name, attr = {}, content = nil )
98
- element = Element.get( name )
99
- if element
100
- element = element.new(attr, content ) if element
101
- else
102
- element = Element.create( name, {}, true ).new(attr, content )
103
- puts "Usage of undefined element #{name}"
104
- end
105
- return element
106
- end
107
-
108
- require 'docgenerator_template'
109
- require 'docgenerator_css'
110
- require 'docgenerator_attribute'
111
- require 'docgenerator_document'
112
-
113
- #~ require 'DocGenerator_HTML' if __FILE__ != 'DocGenerator_HTML' #and __FILE__ != $0
114
- #~ require 'DocGenerator_LaTeX' if __FILE__ != 'DocGenerator_LaTeX' #and __FILE__ != $0
115
- require 'docgenerator_elements'
116
- require 'docgenerator_environments'
117
- require 'docgenerator_lists' #define environment
118
- require 'docgenerator_sections'
119
- require 'docgenerator_tabular'
120
- require 'docgenerator_footnote'
121
- require 'docgenerator_characters' #special characters (spaces, euro-sign...)
122
-
123
- __END__
124
- class Test
125
- def required?(); true; end
126
- end
127
- test = Test.new()
128
- puts test.required?
129
- Test.class_eval('def required?(); false; end')
130
- puts test.required?
131
-
132
- testclass2 = Class.new( Test )
133
- test2 = testclass2.new()
134
- puts test2.required?
135
- testclass2.class_eval('def required?(); true; end')
136
- puts test2.required?
137
- puts test.required?
@@ -1,103 +0,0 @@
1
- if __FILE__ == $0
2
- require 'DocGenerator'
3
- end
4
-
5
- class DocumentTemplate
6
- @@templates = {}
7
- def DocumentTemplate.add_template( key, target, template)
8
- @@templates[key] = template.gsub(/^\t*/, '') #fixme check uniqi
9
- case target
10
- when nil
11
- when :latex
12
- SUPPORTED_LaTeX_TEMPLATES << key
13
- when :html
14
- SUPPORTED_HTML_TEMPLATES << key
15
- end
16
- end
17
- def DocumentTemplate.[]( key )
18
- if @@templates[key]
19
- return @@templates[key].dup
20
- else
21
- puts "Template unknown: #{key}"
22
- return nil
23
- end
24
- end
25
- def DocumentTemplate.keys()
26
- return @@templates.keys
27
- end
28
- end
29
-
30
-
31
- DocumentTemplate.add_template(
32
- :include, :latex, %q|<<prefix>>
33
- % ----------------------------------------------------------------
34
- <<head>>
35
- % ----------------------------------------------------------------
36
- <<body>>
37
- % ----------------------------------------------------------------
38
- |)
39
-
40
- DocumentTemplate.add_template(
41
- :article, :latex, %q|<<prefix>>
42
- \documentclass[<<classoptions>>]{scrartcl}
43
- \usepackage{babel}
44
- \usepackage[ansinew]{inputenc}
45
- \usepackage{hyperref}
46
- % ----------------------------------------------------------------
47
- <<head>>
48
- % ----------------------------------------------------------------
49
- \begin{document}
50
- <<body>>
51
- \end{document}
52
- % ----------------------------------------------------------------
53
- |)
54
- #~ DocumentTemplate.add_template(
55
- #~ :report, '',
56
- #~ |)
57
- #~ DocumentTemplate.add_template(
58
- #~ :book, '',
59
- #~ |)
60
-
61
- #~ <!doctype html public "-//W3C//DTD XHTML 1.0 Strict//EN" "http://www.w3.org/TR/xhtml1/DTD/xhtml1-strict.dtd">
62
-
63
- DocumentTemplate.add_template(
64
- :html, :html, %q|<!--
65
- <<prefix>>
66
- -->
67
- <!doctype html public "-//W3C//DTD HTML 4.01 Transitional//EN">
68
- <html>
69
- <<head>>
70
- <<body>>
71
- </html>
72
- |)
73
-
74
- {
75
- :xhtml_strict => '<!DOCTYPE HTML PUBLIC "-//W3C//DTD XHTML 1.0 Strict//EN" "http://www.w3.org/TR/xhtml1/DTD/xhtml1-strict.dtd">',
76
- :xhtml_trans => '<!DOCTYPE HTML PUBLIC "-//W3C//DTD XHTML 1.0 Transitional//EN" "http://www.w3.org/TR/xhtml1/DTD/xhtml1-transitional.dtd">',
77
- :html401_strict => '<!DOCTYPE HTML PUBLIC "-//W3C//DTD HTML 4.01//EN" "http://www.w3.org/TR/html4/strict.dtd">',
78
- :html401_trans => '<!DOCTYPE HTML PUBLIC "-//W3C//DTD HTML 4.01 Transitional//EN" "http://www.w3.org/TR/html4/loose.dtd">',
79
- }.each{ |key, doctype|
80
- DocumentTemplate.add_template(
81
- key, :html, %Q|<!--
82
- <<prefix>>
83
- -->
84
- #{doctype}
85
- <html>
86
-
87
- <<head>>
88
-
89
- <<body>>
90
- </html>
91
- |)
92
- }
93
-
94
-
95
-
96
- DocumentTemplate.add_template(
97
- :text, :text, %q|
98
- <<body>>
99
- |)
100
- DocumentTemplate.add_template(
101
- :wiki, :wiki, %q|
102
- <<body>>
103
- |)
@@ -1,250 +0,0 @@
1
- #
2
- # The text 'Beamer' must be part of this template.
3
- # Without it, the title-Class will not use the short version for title.#
4
- #
5
- DocumentTemplate.add_template(:beamer, :latex, %q|<<prefix>>
6
- % ----------------------------------------------------------------
7
- % For Usage with Beamer
8
- % ----------------------------------------------------------------
9
- <<head>>
10
- % ----------------------------------------------------------------
11
- \begin{document}
12
- <<body>>
13
- \end{document}
14
- % ----------------------------------------------------------------
15
- |.gsub(/^\t*/, ''))
16
- DocumentTemplate.add_template(:beamerhead, :latex, %q|<<prefix>>
17
- \documentclass[<<classoptions>>]{beamer}
18
- %<<theme>>
19
- \usepackage{babel}
20
- \usepackage[ansinew]{inputenc}
21
- \usepackage{beamertool}
22
- \usepackage{hyperref}
23
- % ----------------------------------------------------------------
24
- <<head>>
25
- |.gsub(/^\t*/, ''))
26
- [
27
- :beamerthemebars, :beamerthemeboxes, :beamerthemeclassic,
28
- :beamerthemelined, :beamerthemeplain, :beamerthemesidebar,
29
- :beamerthemesidebardark, :beamerthemesidebardarktab,
30
- :beamerthemesidebartab, :beamerthemesplit,
31
- :beamerthemesplitcondensed, :beamerthemetree,
32
- :beamerthemevcd,
33
- ].each{ |theme|
34
- DocumentTemplate.add_template(theme, :latex, DocumentTemplate[:beamerhead].sub(/%<<theme>>/, "\\usepackage{#{theme}}"))
35
- }
36
- DocumentTemplate.add_template(:beamerarticle, :latex, %q|<<prefix>>
37
- \documentclass[class=scrartcl,<<classoptions>>]{beamer}
38
- \usepackage{babel}
39
- \usepackage{beamerbasearticle}
40
- \usepackage[article]{beamertool}
41
- \usepackage[ansinew]{inputenc}
42
- \usepackage{hyperref}
43
- % ----------------------------------------------------------------
44
- <<head>>
45
- |.gsub(/^\t*/, ''))
46
-
47
-
48
- #Define TeX-Kommands
49
-
50
- #frame -- environment.
51
- #options
52
- #~ Element.create( :frame, {}, true, {
53
- #~ :latex => '#{linebreak(@crbefore)}\frame{#{@content}}#{linebreak(@crafter)}'
54
- #~ } )
55
-
56
- class Frame < Element
57
- add_attributes( {
58
- :options => Attribute.create( [ :latex ], [nil, 'fragile', 't', 'b'] ),
59
- }.update( HTML_ATTR_ALL ) )
60
- Element.add( [:frame], Frame)
61
- #Returns a div-element.
62
- #The class for the css is set to 'frame' (if not defined before).
63
- def htmltag( )
64
- if @attr[:class].content.empty?
65
- @attr[:class] << :frame
66
- end
67
- 'div'
68
- end
69
- def to_latex( )
70
- option = "[#{@attr[:options].content.join(',')}]"
71
- option = nil if option == '[]'
72
- #~ return "#{linebreak(@crbefore)}\\frame#{option}{\n#{@content}}#{linebreak(@crafter)}"
73
- return "#{linebreak(@crbefore)}\\begin{frame}#{option}\n#{@content}\n\\end{frame}#{linebreak(@crafter)}"
74
- end
75
- end
76
-
77
- #
78
- #Frametitle.
79
- #Can be changed by
80
- # Element.get( :frametitle ).class_eval( "def htmltag(); 'h4'; end")
81
- Element.create( :frametitle, { }, true, {
82
- :latex => '#{linebreak(@crbefore)}\frametitle{#{@content}}#{linebreak(@crafter)}',
83
- :htmltag => 'p', #'h4',
84
- :html => '#{linebreak(@crbefore)}<#{htmltag} class = "frametitle">#{@content}</#{htmltag}>#{linebreak(@crafter)}',
85
- } )
86
-
87
- Element.create( :block, {
88
- :title => Attribute.create( [ :latex ] ),
89
- }, true, {
90
- :latex => '#{linebreak(@crbefore)}' + '\begin{block}{#{@attr[:title]}}' + '#{linebreak(@crmid)}' + '#{@content}\end{block}' + '#{linebreak(@crafter)}'
91
- } )
92
-
93
- #
94
- # Notes in Beamer.
95
- #
96
- Element.create( :note, { }, true, {
97
- :latex => '#{linebreak(@crbefore)}\note{#{@content}}#{linebreak(@crafter)}',
98
- :htmltag => 'p', #'h4',
99
- :html => '#{linebreak(@crbefore)}<#{htmltag} class = "note">#{@content}</#{htmltag}>#{linebreak(@crafter)}',
100
- } )
101
-
102
- #\framePic{filename}{
103
- # description
104
- #}
105
- #~ Element.create( :framepic, { :file => Attribute.create( [ :required ] ),
106
- #~ :link => Attribute.create( )
107
- #~ }, true, {
108
- #~ :latex => '\framePic{#{@attr[:file]}}{#{@content}}'
109
- #~ } )
110
-
111
- Element.create( :institute, {
112
- }, true, {
113
- :latex => '#{linebreak(@crbefore)}' + '\institute{#{@content}}' + '#{linebreak(@crafter)}'
114
- } )
115
-
116
- Element.create( :subtitle, {
117
- }, true, {
118
- :latex => '#{linebreak(@crbefore)}' + '\subtitle{#{@content}}' + '#{linebreak(@crafter)}'
119
- } )
120
-
121
- begin
122
- #define Knut::Picture
123
- require 'knut_picture'
124
- rescue
125
- #Define Knut::Picture with reduced functionality
126
- module Knut
127
- class Picture
128
- def initialize( filename )
129
- @filename = filename
130
- @basename = File.basename(@filename)
131
- @dir = File.dirname(@filename)
132
- if ! File.exists?( @filename )
133
- puts "#{self.class}: #{@filename} not found"
134
- else
135
- @size = File.size(@filename)
136
- @sizekb = @size / 1024
137
- end
138
- end
139
- #Filename including the path
140
- attr_reader :filename
141
- #Directory of the picture
142
- attr_reader :dir
143
- attr_reader :basename
144
- def tech_description()
145
- "#{@basename} (#{@sizekb}KB)"
146
- end
147
- end
148
- end
149
- end
150
-
151
- class Framepic < Element
152
- Element.add( [:framepic], Framepic)
153
- add_attributes( {
154
- :file => Attribute.create( [ :required ] ),
155
- :link => Attribute.create( ),
156
- }.update( HTML_ATTR_ALL ) )
157
- #container for the picture
158
- def picture()
159
- @picture = Knut::Picture.new( @attr[:file].content.first ) if ! @picture
160
- @picture
161
- end
162
- attr_accessor :div_css
163
- attr_accessor :img_css
164
- attr_accessor :div_class
165
- attr_accessor :img_class
166
- attr_accessor :picwithname
167
- def to_html()
168
- html = [] #element(:div, {:class => :framepic })
169
- #~ if @attr[:link].content.size > 0
170
- #~ html << "[#{@attr[:link]}]"
171
- #~ end
172
-
173
- html << div_img = element(:div ).CR
174
- if self.picture.href
175
- div_img << element(:a, { :href => self.picture.href },
176
- img = element(:img )
177
- )
178
- else
179
- div_img << img = element(:img )
180
- end
181
- if self.picture.thumbname and self.picture.usethumb?
182
- img[:src] << self.picture.thumbname
183
- else
184
- img[:src] << self.picture.filename
185
- end
186
- @div_css = CSS.new() if ! @div_css
187
- div_img[:class] << @div_class if @div_class
188
- div_img[:style] << @div_css
189
- div_img[:align] << 'center' if div_img[:align].content.empty?
190
- img[:class] << @img_class if @img_class
191
- img[:style] << @img_css if @img_css
192
- if picwithname
193
- div_img << element(:br ).cr
194
- div_img << element(:footnotesize, {}, self.picture.tech_description)
195
- end
196
- html << @content
197
- return html.to_s
198
- end
199
- def to_latex()
200
- result = ""
201
- result << "\n" if @crbefore
202
- result << "\\framePic"
203
- if self.div_css #Check alignment
204
- case self.div_css[:float]
205
- when nil, 'left' #standard
206
- when 'right'
207
- result << "[right]"
208
- else
209
- puts "#{__FILE__}##{__LINE__}: Undefined float '#{self.div_css[:float]}' for TeX"
210
- end
211
- end
212
- result << "{#{self.picture.filename}}"
213
- if @attr[:link].content.size > 0
214
- result << "[#{@attr[:link]}]"
215
- end
216
- result << "{"
217
- result << "\n" if @crmid
218
- result << "#{@content}"
219
- result << "\n" if @crmid
220
- result << "}"
221
- result << "\n" if @crafter
222
- return result
223
- end
224
- end
225
-
226
-
227
- Element.create( :includegraphicsJustified, {}, true, {
228
- :latex => '\includegraphicsJustified{#{@content}}',
229
- :html => '<img src = "#{@content}" style = "max-width: 80%" />',
230
- } )
231
-
232
- #fixme --> docgenerator_color ?
233
- class Textcolor < Element
234
- Element.add( [:textcolor], Textcolor)
235
- add_attributes( { :mode => Attribute.create( [ :required ], [:rgb] ),
236
- :color => Attribute.create( [ :required ], [String] ),
237
- } )
238
- def to_latex()
239
- result = ""
240
- result << "\n" if @crbefore
241
- result << "\\textcolor[#{attr[:mode]}]{#{@attr[:color]}}"
242
- result << "\n" if @crmid
243
- result << "{"
244
- result << "#{@content}"
245
- result << "\n" if @crmid
246
- result << "}"
247
- result << "\n" if @crafter
248
- return result
249
- end
250
- end