docgenerator 0.1.1 → 1.0.2

This diff represents the content of publicly available package versions that have been released to one of the supported registries. The information contained in this diff is provided for informational purposes only and reflects changes between package versions as they appear in their respective public registries.
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