docgenerator 1.2.1 → 2.0.0
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.
- data/build_test_and_doc.rb +505 -0
- data/examples/creole_example.rb +82 -0
- data/examples/creole_example_footnote.rb +67 -0
- data/examples/creole_example_placeholder.rb +77 -0
- data/examples/creole_example_rail.rb +154 -0
- data/examples/creole_example_rubycode.rb +144 -0
- data/examples/creole_example_struktex.rb +169 -0
- data/examples/docgenerator_example.rb +1 -1
- data/examples/docgenerator_example_footnote.rb +1 -0
- data/examples/docgenerator_example_list.rb +3 -0
- data/examples/docgenerator_example_restrictions.rb +1 -1
- data/examples/docgenerator_example_tabular.rb +1 -1
- data/examples/docgenerator_example_tripfalls.rb +2 -2
- data/examples/results/readme +2 -1
- data/examples/wiki2docgenerator_example.rb +61 -32
- data/lib/creole/creole2doc.rb +57 -58
- data/lib/creole/creole_characters.rb +56 -0
- data/lib/creole/creole_inclusion_and_plugins.rb +59 -284
- data/lib/creole/creole_inclusions.rb +142 -0
- data/lib/creole/creole_placeholder.rb +57 -23
- data/lib/creole/creole_plugins.rb +198 -0
- data/lib/creole/creole_tabular.rb +16 -8
- data/lib/creole/plugins/rail.rb +182 -0
- data/lib/creole/plugins/rubycode4creole.rb +136 -0
- data/lib/creole/plugins/struktex.rb +59 -0
- data/lib/creole/plugins/todonotes.rb +70 -0
- data/lib/docgenerator.rb +161 -71
- data/lib/docgenerator/attribute.rb +189 -156
- data/lib/docgenerator/characters.rb +824 -267
- data/lib/docgenerator/compatibility_v1.rb +249 -0
- data/lib/docgenerator/css.rb +53 -32
- data/lib/docgenerator/document.rb +119 -56
- data/lib/docgenerator/element.rb +304 -351
- data/lib/docgenerator/element_meta.rb +303 -0
- data/lib/docgenerator/elements.rb +1112 -481
- data/lib/docgenerator/environments.rb +153 -62
- data/lib/docgenerator/footnote.rb +30 -9
- data/lib/docgenerator/lists.rb +71 -47
- data/lib/docgenerator/packages/attachfile.rb +136 -0
- data/lib/{packages/docgenerator_caption.rb → docgenerator/packages/caption.rb} +28 -19
- data/lib/docgenerator/packages/hyperref.rb +194 -0
- data/lib/docgenerator/packages/listings.rb +179 -0
- data/lib/docgenerator/packages/pdfpages.rb +43 -0
- data/lib/docgenerator/packages/rubycode4doc.rb +227 -0
- data/lib/{packages/docgenerator_scrlettr2.rb → docgenerator/packages/scrlettr2.rb} +25 -16
- data/lib/docgenerator/packages/scrpage2.rb +410 -0
- data/lib/docgenerator/packages/struktex.rb +447 -0
- data/lib/docgenerator/packages/todonotes.rb +85 -0
- data/lib/{packages/docgenerator_url.rb → docgenerator/packages/url.rb} +7 -6
- data/lib/docgenerator/sections.rb +257 -83
- data/lib/docgenerator/standard.rb +19 -11
- data/lib/docgenerator/tabular.rb +234 -118
- data/lib/{templates → docgenerator/templates}/docgenerator_template.rb +52 -44
- data/lib/{templates → docgenerator/templates}/docgenerator_template.yaml +0 -0
- data/lib/{templates → docgenerator/templates}/docgenerator_template_css.rb +22 -16
- data/lib/wiki2doc/plugins/rubycode4wiki.rb +53 -0
- data/lib/wiki2doc/plugins/struktex.rb +12 -0
- data/lib/wiki2doc/wiki2docgenerator.rb +39 -38
- data/lib/wiki2doc/wikimedia_document.rb +24 -0
- data/manpage_elements.rb +10411 -0
- data/readme.rd +34 -24
- data/unittest/creole_testtext.creole +11 -0
- data/unittest/expected/test_document_usepackage_undefined.log +2 -2
- data/unittest/expected/test_runtex.stdout +0 -1
- data/unittest/expected/test_runtex_2.stdout +0 -1
- data/unittest/expected/toc_css.css +3 -2
- data/unittest/expected_creole/test_creole_characters_all.creole +28 -0
- data/unittest/expected_creole/test_creole_characters_all.html +15 -15
- data/unittest/expected_creole/test_creole_characters_all.latex +15 -15
- data/unittest/expected_creole/test_creole_footnotes_groupid.html +15 -0
- data/unittest/expected_creole/test_creole_links_file.html +2 -2
- data/unittest/expected_creole/test_creole_links_file.latex +2 -2
- data/unittest/expected_creole/test_creole_links_file.text +2 -2
- data/unittest/expected_creole/test_creole_picture_link.html +1 -1
- data/unittest/expected_creole_rail/test_rail_creole_object.tex +33 -0
- data/unittest/expected_creole_rail/test_rail_creole_placeholder.tex +40 -0
- data/unittest/expected_rubycode4doc/creole_complete.html +26 -0
- data/unittest/expected_rubycode4doc/creole_complete.tex +40 -0
- data/unittest/expected_rubycode4doc/creole_in_tab.html +4 -0
- data/unittest/expected_rubycode4doc/creole_in_tab.tex +6 -0
- data/unittest/expected_rubycode4doc/creole_inline_ruby.html +7 -0
- data/unittest/expected_rubycode4doc/creole_output.html +2 -0
- data/unittest/expected_rubycode4doc/creole_output.tex +4 -0
- data/unittest/expected_rubycode4doc/creole_rubycode.html +1 -0
- data/unittest/expected_rubycode4doc/creole_rubycode.tex +3 -0
- data/unittest/expected_rubycode4doc/creole_rubycode_evaluated.html +1 -0
- data/unittest/expected_rubycode4doc/creole_rubycode_evaluated.tex +3 -0
- data/unittest/expected_rubycode4doc/creole_rubycode_evaluated_listings.html +3 -0
- data/unittest/expected_rubycode4doc/creole_rubycode_evaluated_listings.tex +5 -0
- data/unittest/expected_rubycode4doc/wiki_1.html +8 -0
- data/unittest/expected_rubycode4doc/wiki_2.html +8 -0
- data/unittest/expected_rubycode4doc/wiki_3.html +9 -0
- data/unittest/expected_rubycode4doc/wiki_immediate_1.html +5 -0
- data/unittest/expected_rubycode4doc/wiki_immediate_2.html +5 -0
- data/unittest/expected_rubycode4doc/wiki_immediate_3.html +8 -0
- data/unittest/expected_rubycode4doc/wiki_immediate_full.html +21 -0
- data/unittest/expected_struktex/test_struktex_krug.creole +15 -0
- data/unittest/expected_struktex/test_struktex_krug.tex +19 -0
- data/unittest/expected_struktex/test_struktex_krug.wiki +15 -0
- data/unittest/expected_struktex/test_struktex_statement.creole +7 -0
- data/unittest/expected_struktex/test_struktex_statement.tex +9 -0
- data/unittest/expected_struktex/test_struktex_statement.wiki +7 -0
- data/unittest/{expected_wiki → expected_wikimedia}/test_wiki.html +0 -0
- data/unittest/{expected_wiki → expected_wikimedia}/test_wiki.latex +0 -0
- data/unittest/{expected_wiki → expected_wikimedia}/test_wiki.text +0 -0
- data/unittest/{expected_wiki → expected_wikimedia}/test_wiki.wiki +0 -0
- data/unittest/{expected_wiki → expected_wikimedia}/test_wiki_description.html +1 -1
- data/unittest/{expected_wiki → expected_wikimedia}/test_wiki_description.latex +1 -1
- data/unittest/{expected_wiki → expected_wikimedia}/test_wiki_description.text +1 -1
- data/unittest/{expected_wiki → expected_wikimedia}/test_wiki_description.wiki +1 -1
- data/unittest/{expected_wiki → expected_wikimedia}/test_wiki_footnote.html +0 -0
- data/unittest/{expected_wiki → expected_wikimedia}/test_wiki_footnote.latex +0 -0
- data/unittest/{expected_wiki → expected_wikimedia}/test_wiki_footnote.text +0 -0
- data/unittest/{expected_wiki → expected_wikimedia}/test_wiki_footnote.wiki +0 -0
- data/unittest/{expected_wiki → expected_wikimedia}/test_wiki_footnote_2.html +0 -0
- data/unittest/{expected_wiki → expected_wikimedia}/test_wiki_footnote_groupid.html +0 -0
- data/unittest/{expected_wiki → expected_wikimedia}/test_wiki_html_code.html +0 -0
- data/unittest/{expected_wiki → expected_wikimedia}/test_wiki_html_code.latex +0 -0
- data/unittest/{expected_wiki → expected_wikimedia}/test_wiki_html_code.text +0 -0
- data/unittest/{expected_wiki → expected_wikimedia}/test_wiki_html_code.wiki +0 -0
- data/unittest/{expected_wiki → expected_wikimedia}/test_wiki_inline.html +0 -0
- data/unittest/{expected_wiki → expected_wikimedia}/test_wiki_inline.latex +0 -0
- data/unittest/{expected_wiki → expected_wikimedia}/test_wiki_inline.text +0 -0
- data/unittest/{expected_wiki → expected_wikimedia}/test_wiki_inline.wiki +0 -0
- data/unittest/{expected_wiki → expected_wikimedia}/test_wiki_label.html +0 -0
- data/unittest/expected_wikimedia/test_wiki_link.html +8 -0
- data/unittest/expected_wikimedia/test_wiki_link.latex +17 -0
- data/unittest/expected_wikimedia/test_wiki_link.wiki +11 -0
- data/unittest/{expected_wiki → expected_wikimedia}/test_wiki_list_ol.html +0 -0
- data/unittest/{expected_wiki → expected_wikimedia}/test_wiki_list_ol.latex +0 -0
- data/unittest/{expected_wiki → expected_wikimedia}/test_wiki_list_ol.text +0 -0
- data/unittest/{expected_wiki → expected_wikimedia}/test_wiki_list_ol.wiki +0 -0
- data/unittest/{expected_wiki → expected_wikimedia}/test_wiki_list_ol_after_ul.html +0 -0
- data/unittest/{expected_wiki → expected_wikimedia}/test_wiki_list_ol_after_ul.latex +0 -0
- data/unittest/{expected_wiki → expected_wikimedia}/test_wiki_list_ol_after_ul.text +0 -0
- data/unittest/{expected_wiki → expected_wikimedia}/test_wiki_list_ol_after_ul.wiki +0 -0
- data/unittest/{expected_wiki → expected_wikimedia}/test_wiki_list_ol_ul.html +0 -0
- data/unittest/{expected_wiki → expected_wikimedia}/test_wiki_list_ol_ul.latex +0 -0
- data/unittest/{expected_wiki → expected_wikimedia}/test_wiki_list_ol_ul.text +0 -0
- data/unittest/{expected_wiki → expected_wikimedia}/test_wiki_list_ol_ul.wiki +0 -0
- data/unittest/{expected_wiki → expected_wikimedia}/test_wiki_list_ul.html +0 -0
- data/unittest/{expected_wiki → expected_wikimedia}/test_wiki_list_ul.latex +0 -0
- data/unittest/{expected_wiki → expected_wikimedia}/test_wiki_list_ul.text +0 -0
- data/unittest/{expected_wiki → expected_wikimedia}/test_wiki_list_ul.wiki +0 -0
- data/unittest/{expected_wiki → expected_wikimedia}/test_wiki_list_ul_too_much.html +0 -0
- data/unittest/{expected_wiki → expected_wikimedia}/test_wiki_list_ul_too_much.latex +0 -0
- data/unittest/{expected_wiki → expected_wikimedia}/test_wiki_list_ul_too_much.text +0 -0
- data/unittest/{expected_wiki → expected_wikimedia}/test_wiki_list_ul_too_much.wiki +0 -0
- data/unittest/expected_wikimedia/test_wiki_picture.html +55 -0
- data/unittest/expected_wikimedia/test_wiki_picture.latex +76 -0
- data/unittest/expected_wikimedia/test_wiki_picture_thumb.html +5 -0
- data/unittest/{expected_wiki → expected_wikimedia}/test_wiki_tab1.html +0 -0
- data/unittest/{expected_wiki → expected_wikimedia}/test_wiki_tab1.latex +0 -0
- data/unittest/{expected_wiki → expected_wikimedia}/test_wiki_tab1.wiki +0 -0
- data/unittest/{expected_wiki → expected_wikimedia}/test_wiki_textformatting.html +0 -0
- data/unittest/{expected_wiki → expected_wikimedia}/test_wiki_textformatting.latex +0 -0
- data/unittest/{expected_wiki → expected_wikimedia}/test_wiki_textformatting.text +0 -0
- data/unittest/{expected_wiki → expected_wikimedia}/test_wiki_textformatting.wiki +0 -0
- data/unittest/{expected_wiki → expected_wikimedia}/test_wiki_toc.html +0 -0
- data/unittest/{expected_wiki → expected_wikimedia}/test_wiki_toc.latex +0 -0
- data/unittest/{expected_wiki → expected_wikimedia}/test_wiki_toc.text +0 -0
- data/unittest/{expected_wiki → expected_wikimedia}/test_wiki_toc.wiki +0 -0
- data/unittest/{expected_wiki → expected_wikimedia}/test_wiki_ul_multiple_line.html +0 -0
- data/unittest/{expected_wiki → expected_wikimedia}/test_wiki_ul_multiple_line.latex +0 -0
- data/unittest/{expected_wiki → expected_wikimedia}/test_wiki_ul_multiple_line.text +0 -0
- data/unittest/{expected_wiki → expected_wikimedia}/test_wiki_ul_multiple_line.wiki +0 -0
- data/unittest/{unittest_creole2doc.rb → unittest_creole.rb} +385 -476
- data/unittest/unittest_creole_placeholders.rb +272 -0
- data/unittest/unittest_creole_plugin_rail.rb +147 -0
- data/unittest/unittest_docgenerator.rb +206 -332
- data/unittest/unittest_docgenerator_characters.rb +650 -0
- data/unittest/unittest_docgenerator_runtex.rb +48 -20
- data/unittest/unittest_packages_struktex.rb +187 -0
- data/unittest/unittest_rubycode4doc.rb +275 -0
- data/unittest/unittest_wikimedia.rb +479 -0
- metadata +245 -172
- data/examples/results_expected/docgenerator_example.html +0 -39
- data/examples/results_expected/docgenerator_example.pdf +0 -0
- data/examples/results_expected/docgenerator_example.tex +0 -56
- data/examples/results_expected/docgenerator_example_footnote.html +0 -40
- data/examples/results_expected/docgenerator_example_footnote.pdf +0 -0
- data/examples/results_expected/docgenerator_example_footnote.tex +0 -50
- data/examples/results_expected/docgenerator_example_list.html +0 -18
- data/examples/results_expected/docgenerator_example_list.pdf +0 -0
- data/examples/results_expected/docgenerator_example_list.tex +0 -46
- data/examples/results_expected/docgenerator_example_restrictions.html +0 -22
- data/examples/results_expected/docgenerator_example_restrictions.pdf +0 -0
- data/examples/results_expected/docgenerator_example_restrictions.tex +0 -31
- data/examples/results_expected/docgenerator_example_tabular.html +0 -37
- data/examples/results_expected/docgenerator_example_tabular.pdf +0 -0
- data/examples/results_expected/docgenerator_example_tabular.tex +0 -41
- data/examples/results_expected/docgenerator_example_tripfalls.html +0 -27
- data/examples/results_expected/docgenerator_example_tripfalls.pdf +0 -0
- data/examples/results_expected/docgenerator_example_tripfalls.tex +0 -31
- data/lib/packages/docgenerator_attachfile.rb +0 -71
- data/lib/packages/docgenerator_hyperref.rb +0 -109
- data/lib/packages/docgenerator_listings.rb +0 -103
- data/lib/packages/docgenerator_pdfpages.rb +0 -24
- data/lib/packages/docgenerator_scrpage2.rb +0 -172
- data/self_docgenerator.rb +0 -163
- data/unittest/expected_wiki/test_wiki_link.html +0 -8
- data/unittest/expected_wiki/test_wiki_link.latex +0 -17
- data/unittest/expected_wiki/test_wiki_link.wiki +0 -11
- data/unittest/expected_wiki/test_wiki_picture.html +0 -55
- data/unittest/expected_wiki/test_wiki_picture.latex +0 -76
- data/unittest/expected_wiki/test_wiki_picture_thumb.html +0 -5
- data/unittest/test_rakefile_docgenerator.rb +0 -43
- data/unittest/unittest_versions.rb +0 -44
- data/unittest/unittest_wiki2doc.rb +0 -464
|
@@ -0,0 +1,303 @@
|
|
|
1
|
+
module Docgenerator
|
|
2
|
+
=begin rdoc
|
|
3
|
+
===Meta-methods
|
|
4
|
+
The Element-class contains meta functions to define the
|
|
5
|
+
behaviour of subclasses.
|
|
6
|
+
|
|
7
|
+
Details see
|
|
8
|
+
* Element.inherited
|
|
9
|
+
* Element.add_id
|
|
10
|
+
* Element.has_no_content
|
|
11
|
+
* Element.add_attribute
|
|
12
|
+
* Element.add_attributes
|
|
13
|
+
* Element.add_output
|
|
14
|
+
* Element.add_latex_output
|
|
15
|
+
* Element.add_html_output
|
|
16
|
+
* Element.add_context_output
|
|
17
|
+
* Element.add_creole_output
|
|
18
|
+
* Element.add_wiki_output
|
|
19
|
+
* Element.add_text_output
|
|
20
|
+
=end
|
|
21
|
+
class Element
|
|
22
|
+
|
|
23
|
+
#Hash with all ids and their corresponding classes.
|
|
24
|
+
@@ids = Hash.new( )
|
|
25
|
+
|
|
26
|
+
=begin rdoc
|
|
27
|
+
Meta-class for metaprogramming
|
|
28
|
+
=end
|
|
29
|
+
class << self #Meta-class Element
|
|
30
|
+
=begin rdoc
|
|
31
|
+
This method is called, when a subclass of this class is defined.
|
|
32
|
+
|
|
33
|
+
The class will be added to the element list with class name, converted to a symbol
|
|
34
|
+
(modules are extracted in adcance).
|
|
35
|
+
The element ma be created with element-method.
|
|
36
|
+
=end
|
|
37
|
+
def inherited( subclass )
|
|
38
|
+
DOCGENERATOR_LOGGER.info("New Element class: #{subclass}") if DOCGENERATOR_LOGGER.debug?
|
|
39
|
+
if subclass.name
|
|
40
|
+
subclass.add_id(subclass.name.split('::').last.downcase.to_sym)
|
|
41
|
+
else
|
|
42
|
+
DOCGENERATOR_LOGGER.warn("New Element class without name: #{subclass}") if DOCGENERATOR_LOGGER.warn?
|
|
43
|
+
end
|
|
44
|
+
end
|
|
45
|
+
=begin rdoc
|
|
46
|
+
Define meta/class accessor to element_ids.
|
|
47
|
+
|
|
48
|
+
@element_ids isd defined in Element.add_id
|
|
49
|
+
|
|
50
|
+
=end
|
|
51
|
+
def element_ids; @element_ids; end
|
|
52
|
+
=begin rdoc
|
|
53
|
+
Add a new element class or assign another name (synonym) for a class.
|
|
54
|
+
The initial call is made by Element.inherited.
|
|
55
|
+
=end
|
|
56
|
+
def add_id(id)
|
|
57
|
+
@element_ids ||= []
|
|
58
|
+
if @@ids[ id ] == nil
|
|
59
|
+
DOCGENERATOR_LOGGER.debug("Element id '#{id}' is new for #{self}") if DOCGENERATOR_LOGGER.debug?
|
|
60
|
+
#All new ids are collected
|
|
61
|
+
@@ids[ id ] = self
|
|
62
|
+
@element_ids << id
|
|
63
|
+
elsif @@ids[ id ] == self
|
|
64
|
+
DOCGENERATOR_LOGGER.warn("Element class '#{id}' is defined double: #{self}") if DOCGENERATOR_LOGGER.warn?
|
|
65
|
+
else
|
|
66
|
+
DOCGENERATOR_LOGGER.error("Error: ID '#{id}' is redefined #{@@ids[id]} -> #{self}") if DOCGENERATOR_LOGGER.error?
|
|
67
|
+
@@ids[id] = self
|
|
68
|
+
@element_ids << id
|
|
69
|
+
end
|
|
70
|
+
end
|
|
71
|
+
#Return a element class.
|
|
72
|
+
def get( name )
|
|
73
|
+
return @@ids[name]
|
|
74
|
+
end
|
|
75
|
+
|
|
76
|
+
=begin rdoc
|
|
77
|
+
Set flag, that the element does not support content.
|
|
78
|
+
|
|
79
|
+
See also Docgenerator::Element#content?
|
|
80
|
+
=end
|
|
81
|
+
def has_no_content(value = nil)
|
|
82
|
+
self.class_eval( "def content?(); #{value.inspect}; end" )
|
|
83
|
+
end
|
|
84
|
+
|
|
85
|
+
=begin rdoc
|
|
86
|
+
Add a attribute to the metaclass
|
|
87
|
+
|
|
88
|
+
Example:
|
|
89
|
+
class XX < Element
|
|
90
|
+
add_attribute :key, Attribute.create( ... )
|
|
91
|
+
}
|
|
92
|
+
end
|
|
93
|
+
=end
|
|
94
|
+
def add_attribute(id, attribute)
|
|
95
|
+
@attr = {} unless @attr
|
|
96
|
+
#~ if ! attribute.is_a?(Attribute)
|
|
97
|
+
#~ DOCGENERATOR_LOGGER.error("Attribute #{id} is no Docgenerator::Attribute but #{attribute.inspect}") if DOCGENERATOR_LOGGER.error?
|
|
98
|
+
#~ end
|
|
99
|
+
@attr[id] = attribute
|
|
100
|
+
end
|
|
101
|
+
=begin rdoc
|
|
102
|
+
Add possible attributes to an element class.
|
|
103
|
+
|
|
104
|
+
Attributes are defined in a hash, each key get a Attribute-instance.
|
|
105
|
+
|
|
106
|
+
Example:
|
|
107
|
+
class XX < Element
|
|
108
|
+
add_attributes {
|
|
109
|
+
:key => Attribute.create( ... ),
|
|
110
|
+
}
|
|
111
|
+
end
|
|
112
|
+
=end
|
|
113
|
+
def add_attributes( attr )
|
|
114
|
+
attr.each{ |k,a |
|
|
115
|
+
self.add_attribute(k,a)
|
|
116
|
+
}
|
|
117
|
+
end
|
|
118
|
+
=begin rdoc
|
|
119
|
+
Return the attributes for the metaclass.
|
|
120
|
+
=end
|
|
121
|
+
def attributes()
|
|
122
|
+
@attr || {}
|
|
123
|
+
end
|
|
124
|
+
|
|
125
|
+
=begin rdoc
|
|
126
|
+
Returns list of attributes.
|
|
127
|
+
Can be used for copying attributes from one class to another class.
|
|
128
|
+
=end
|
|
129
|
+
def get_attribute_list()
|
|
130
|
+
return self.attributes
|
|
131
|
+
end
|
|
132
|
+
|
|
133
|
+
=begin rdoc
|
|
134
|
+
Add an output routine.
|
|
135
|
+
|
|
136
|
+
Called by
|
|
137
|
+
* add_latex_output
|
|
138
|
+
* add_context_output
|
|
139
|
+
* add_html_output
|
|
140
|
+
* add_text_output
|
|
141
|
+
* add_wiki_output
|
|
142
|
+
* add_creole_output
|
|
143
|
+
|
|
144
|
+
The definition can be made in two ways:
|
|
145
|
+
* block
|
|
146
|
+
* result string
|
|
147
|
+
|
|
148
|
+
|
|
149
|
+
For very complex elements, it may be better to
|
|
150
|
+
use the block variant or to redefine to_latex, to_html ...
|
|
151
|
+
|
|
152
|
+
|
|
153
|
+
=Definition with block
|
|
154
|
+
Example:
|
|
155
|
+
add_output(:latex) {|options = {}|
|
|
156
|
+
o = set_option_defaults(options) #define logger
|
|
157
|
+
o[:log].debug("enter to_doc(#{target}) for #{self.inspect}") if o[:log].debug?
|
|
158
|
+
...
|
|
159
|
+
}
|
|
160
|
+
|
|
161
|
+
The block must contain one optional parameter (default {}).
|
|
162
|
+
|
|
163
|
+
|
|
164
|
+
=Definition with result string
|
|
165
|
+
Example:
|
|
166
|
+
add_output( :latex, '\section{#{@content}}' )
|
|
167
|
+
|
|
168
|
+
The string contains the result.
|
|
169
|
+
The string will be interpreted, when the to_xxxx method is called.
|
|
170
|
+
|
|
171
|
+
Examples for string:
|
|
172
|
+
'#{linebreak(@crbefore)}\section{#{@content}}#{linebreak(@crafter)}'
|
|
173
|
+
|
|
174
|
+
=Some special helper to build the result:
|
|
175
|
+
==linebreaks
|
|
176
|
+
linebreak(xx) will create a #linebreak, when xx is true.
|
|
177
|
+
xx may be @crbefore, @crmid, @crafter.
|
|
178
|
+
The variables can be influenced by #cr, #Cr, #cR, #CR.
|
|
179
|
+
|
|
180
|
+
==recursive content
|
|
181
|
+
'@content}' will be replaced by '@content.to_doc( _target_ , o)}'
|
|
182
|
+
|
|
183
|
+
* If you define something like @content.to_html..., please give attention for the options.
|
|
184
|
+
|
|
185
|
+
==Attributes
|
|
186
|
+
Attributes can be accessed with @attr[:key]
|
|
187
|
+
|
|
188
|
+
===Key-val attributes
|
|
189
|
+
#texkeyval add all attributes with flag :texkeyval. (see Attribute#texkeyval?)
|
|
190
|
+
|
|
191
|
+
=end
|
|
192
|
+
def add_output( target, string = nil, &proc )
|
|
193
|
+
|
|
194
|
+
if ! [ :latex, :context, :html, :text, :wiki, :creole ].include?(target)
|
|
195
|
+
DOCGENERATOR_LOGGER.error("#{self}: Undefined target format #{target}") if DOCGENERATOR_LOGGER.error?
|
|
196
|
+
end
|
|
197
|
+
|
|
198
|
+
if block_given?
|
|
199
|
+
if string
|
|
200
|
+
DOCGENERATOR_LOGGER.error("add_output #{target} contains result string and block. Use the block definietion #{self.inspect}") if DOCGENERATOR_LOGGER.error?
|
|
201
|
+
end
|
|
202
|
+
#The (optional) parameter should be {} by default.
|
|
203
|
+
if proc.respond_to?(:parameters) #since ruby 1.9.2
|
|
204
|
+
if proc.parameters.size != 1 #Proc#parameters introduced with ruby 1.9.2
|
|
205
|
+
DOCGENERATOR_LOGGER.error("add_output #{target}: Arity of block not 1 but #{proc.parameters.inspect} #{self.inspect}") if DOCGENERATOR_LOGGER.error?
|
|
206
|
+
elsif proc.parameters.first.first != :opt
|
|
207
|
+
DOCGENERATOR_LOGGER.error("add_output #{target}: Block parameter is not optional #{proc.parameters.inspect} #{self.inspect}") if DOCGENERATOR_LOGGER.error?
|
|
208
|
+
#the optional parameter should have the default {}
|
|
209
|
+
#no way to test it, see http://forum.ruby-portal.de/viewtopic.php?f=22&t=12384
|
|
210
|
+
end
|
|
211
|
+
else #Proc#parameters not supported
|
|
212
|
+
if proc.arity > 1 #makes arity 0 also for optional parameters.
|
|
213
|
+
DOCGENERATOR_LOGGER.error("add_output #{target}: Arity of block not 1 but #{proc.arity} #{self.inspect}") if DOCGENERATOR_LOGGER.error?
|
|
214
|
+
end
|
|
215
|
+
end
|
|
216
|
+
#Define the method.
|
|
217
|
+
define_method( "to_#{target}".to_sym, &proc )
|
|
218
|
+
else #block_given?
|
|
219
|
+
=begin
|
|
220
|
+
Define the output routine, based on a string.
|
|
221
|
+
=end
|
|
222
|
+
if ! string.kind_of?( String )
|
|
223
|
+
DOCGENERATOR_LOGGER.error("<#{self.inspect}>#add_output: #{string.inspect} is no String")
|
|
224
|
+
end
|
|
225
|
+
cmd = <<-code
|
|
226
|
+
def to_#{target}(options = {})
|
|
227
|
+
o = set_option_defaults(options)
|
|
228
|
+
o[:log].debug("enter to_doc(#{target}) for #{self.inspect}, options: \#{options.keys.inspect}") if o[:log].debug?
|
|
229
|
+
code
|
|
230
|
+
template = string.gsub(/\\/, '\\\\\\')
|
|
231
|
+
template.gsub!(/"/, '\"')
|
|
232
|
+
#define recursive to_doc for content.
|
|
233
|
+
#the closing \} is important. Else you replace '@content.to_latex' with @content.to_doc.to_latex'
|
|
234
|
+
template.gsub!(/@content\}/, "@content.to_doc(#{target.inspect}, o)}")
|
|
235
|
+
cmd << " \"#{template}\"\n"
|
|
236
|
+
cmd << "end\n"
|
|
237
|
+
class_eval( cmd )
|
|
238
|
+
cmd #return cmd for unit test
|
|
239
|
+
end #block_given?
|
|
240
|
+
end
|
|
241
|
+
=begin rdoc
|
|
242
|
+
Define the HTML-tag for the to_html method.
|
|
243
|
+
=end
|
|
244
|
+
def add_html_tag( tag )
|
|
245
|
+
self.class_eval( "def htmltag()\n'#{tag}'\nend" )
|
|
246
|
+
end
|
|
247
|
+
=begin rdoc
|
|
248
|
+
Define the output routine for html.
|
|
249
|
+
See Element.add_output for details.
|
|
250
|
+
=end
|
|
251
|
+
def add_html_output( output = nil, &cmd )
|
|
252
|
+
self.add_output(:html, output, &cmd )
|
|
253
|
+
end
|
|
254
|
+
=begin rdoc
|
|
255
|
+
Define the output routine for LaTeX.
|
|
256
|
+
See Element.add_output for details.
|
|
257
|
+
=end
|
|
258
|
+
def add_latex_output( output = nil, &cmd )
|
|
259
|
+
self.add_output(:latex, output, &cmd )
|
|
260
|
+
end
|
|
261
|
+
=begin rdoc
|
|
262
|
+
Define the output routine for conTeXt.
|
|
263
|
+
See Element.add_output for details.
|
|
264
|
+
=end
|
|
265
|
+
def add_context_output( output = nil, &cmd )
|
|
266
|
+
self.add_output(:context, output, &cmd )
|
|
267
|
+
end
|
|
268
|
+
=begin rdoc
|
|
269
|
+
Define the output routine for text.
|
|
270
|
+
See Element.add_output for details.
|
|
271
|
+
=end
|
|
272
|
+
def add_text_output( output = nil, &cmd )
|
|
273
|
+
self.add_output(:text, output, &cmd )
|
|
274
|
+
end
|
|
275
|
+
=begin rdoc
|
|
276
|
+
Define the output routine for wiki.
|
|
277
|
+
See Element.add_output for details.
|
|
278
|
+
=end
|
|
279
|
+
def add_wiki_output( output = nil, &cmd )
|
|
280
|
+
self.add_output(:wiki, output, &cmd )
|
|
281
|
+
end
|
|
282
|
+
=begin rdoc
|
|
283
|
+
Define the output routine for creole.
|
|
284
|
+
See Element.add_output for details.
|
|
285
|
+
=end
|
|
286
|
+
def add_creole_output( output = nil, &cmd )
|
|
287
|
+
self.add_output(:creole, output, &cmd )
|
|
288
|
+
end
|
|
289
|
+
|
|
290
|
+
end #Meta-class Element
|
|
291
|
+
|
|
292
|
+
=begin rdoc
|
|
293
|
+
Return all id's of the class.
|
|
294
|
+
The ids are filled via Element.add_id
|
|
295
|
+
=end
|
|
296
|
+
def element_ids()
|
|
297
|
+
#~ myids = []
|
|
298
|
+
#~ @@ids.each{|k,v| myids << k if v == self.class and k.class != Class }
|
|
299
|
+
return self.class.element_ids
|
|
300
|
+
end
|
|
301
|
+
|
|
302
|
+
end #Element
|
|
303
|
+
end #Docgenerator
|
|
@@ -1,74 +1,107 @@
|
|
|
1
|
-
|
|
2
|
-
|
|
3
|
-
|
|
1
|
+
=begin rdoc
|
|
2
|
+
Definition of basic elements for docgenerator.rb
|
|
3
|
+
=end
|
|
4
4
|
|
|
5
5
|
#
|
|
6
|
-
|
|
7
|
-
|
|
8
|
-
|
|
6
|
+
module Docgenerator
|
|
7
|
+
=begin rdoc
|
|
8
|
+
Module to collect subclasses of class Element
|
|
9
|
+
=end
|
|
10
|
+
module Elements
|
|
9
11
|
|
|
10
12
|
#
|
|
11
13
|
#Main document control.
|
|
12
14
|
#
|
|
13
|
-
|
|
14
|
-
|
|
15
|
-
|
|
16
|
-
|
|
17
|
-
|
|
18
|
-
|
|
19
|
-
|
|
20
|
-
|
|
21
|
-
|
|
22
|
-
|
|
23
|
-
|
|
24
|
-
|
|
25
|
-
|
|
26
|
-
|
|
27
|
-
}
|
|
28
|
-
|
|
29
|
-
|
|
30
|
-
|
|
31
|
-
|
|
32
|
-
|
|
33
|
-
|
|
34
|
-
|
|
35
|
-
|
|
36
|
-
|
|
37
|
-
|
|
38
|
-
|
|
39
|
-
|
|
40
|
-
|
|
41
|
-
|
|
42
|
-
|
|
43
|
-
|
|
44
|
-
|
|
45
|
-
|
|
46
|
-
|
|
47
|
-
}
|
|
15
|
+
|
|
16
|
+
=begin rdoc
|
|
17
|
+
Define Element ':head'
|
|
18
|
+
|
|
19
|
+
Create an instance with
|
|
20
|
+
element( :head, [ attributes, [content]] )
|
|
21
|
+
|
|
22
|
+
Head.new( [ attributes, [content]] )
|
|
23
|
+
=end
|
|
24
|
+
class Head < Element
|
|
25
|
+
add_html_tag 'head'
|
|
26
|
+
add_latex_output '#{@content}'
|
|
27
|
+
add_context_output '#{@content}'
|
|
28
|
+
add_text_output '#{@content}'
|
|
29
|
+
add_wiki_output '#{@content}'
|
|
30
|
+
add_creole_output '#{@content}'
|
|
31
|
+
end #Head
|
|
32
|
+
|
|
33
|
+
=begin rdoc
|
|
34
|
+
Define Docgenerator::Element ':body'
|
|
35
|
+
=end
|
|
36
|
+
class Body < Element
|
|
37
|
+
add_attributes HTML_ATTR_CORE
|
|
38
|
+
add_attributes HTML_ATTR_I18N
|
|
39
|
+
add_attribute :lang, ATTR_LANG
|
|
40
|
+
add_attribute :bgcolor, Attribute.create( [ :html ] )
|
|
41
|
+
add_attribute :text, Attribute.create( [ :html ] )
|
|
42
|
+
add_attribute :link, Attribute.create( [ :html ] )
|
|
43
|
+
add_attribute :vlink, Attribute.create( [ :html ] )
|
|
44
|
+
add_attribute :alink, Attribute.create( [ :html ] )
|
|
45
|
+
|
|
46
|
+
add_html_tag 'body'
|
|
47
|
+
add_latex_output '#{@content}'
|
|
48
|
+
add_context_output '#{@content}'
|
|
49
|
+
add_text_output '#{@content}'
|
|
50
|
+
add_wiki_output '#{@content}'
|
|
51
|
+
add_creole_output '#{@content}'
|
|
52
|
+
end #Body
|
|
53
|
+
|
|
54
|
+
=begin rdoc
|
|
55
|
+
Define Element :latexdummy, :latexonly
|
|
56
|
+
|
|
57
|
+
Usefull, if you have LaTeX-only text in your document.
|
|
58
|
+
(e.g. \\newcommands in the header).
|
|
59
|
+
=end
|
|
60
|
+
class Latexdummy < Element
|
|
61
|
+
add_id :latexonly
|
|
62
|
+
add_html_output ''
|
|
63
|
+
add_latex_output '#{@content}'
|
|
64
|
+
add_context_output ''
|
|
65
|
+
add_text_output ''
|
|
66
|
+
add_wiki_output ''
|
|
67
|
+
add_creole_output ''
|
|
68
|
+
end #Latexdummy
|
|
69
|
+
|
|
70
|
+
=begin rdoc
|
|
71
|
+
Define Element :htmldummy, :htmlonly
|
|
72
|
+
=end
|
|
73
|
+
class Htmldummy < Element
|
|
74
|
+
add_id :htmlonly
|
|
75
|
+
add_html_output '#{@content}'
|
|
76
|
+
add_latex_output ''
|
|
77
|
+
add_context_output ''
|
|
78
|
+
add_text_output ''
|
|
79
|
+
add_wiki_output ''
|
|
80
|
+
add_creole_output ''
|
|
81
|
+
end #Htmldummy
|
|
48
82
|
|
|
49
83
|
|
|
50
84
|
=begin rdoc
|
|
51
85
|
Titlepage
|
|
52
86
|
|
|
53
|
-
This parameter are better set with
|
|
87
|
+
This parameter are better set with
|
|
88
|
+
Docgenerator::Document.new(
|
|
89
|
+
:title => 'title'
|
|
90
|
+
)
|
|
54
91
|
=end
|
|
55
92
|
class Title < Element
|
|
56
|
-
|
|
57
|
-
|
|
58
|
-
|
|
59
|
-
}.update(HTML_ATTR_ALL)
|
|
60
|
-
)
|
|
93
|
+
add_attributes HTML_ATTR_ALL
|
|
94
|
+
add_attribute :short, Attribute.create( [ :html ], nil, 1 )
|
|
95
|
+
|
|
61
96
|
=begin rdoc
|
|
62
97
|
Does the LaTeX-class support the shorttitle-option?
|
|
63
98
|
|
|
64
99
|
beamer.sty does it, others not.
|
|
65
|
-
|
|
66
|
-
#Unsaubere realisierung .. fixme
|
|
67
100
|
=end
|
|
68
101
|
def shortoption( options = {} )
|
|
69
102
|
@attr[:short].content.compact! #delete nils.
|
|
70
103
|
return nil if ! @attr[:short].filled?
|
|
71
|
-
o =
|
|
104
|
+
o = set_option_defaults(options)
|
|
72
105
|
o[:log].debug("enter shortoption") if o[:log].debug?
|
|
73
106
|
if o[:document]
|
|
74
107
|
#Check for known classes, which support the optional short title
|
|
@@ -83,100 +116,161 @@ beamer.sty does it, others not.
|
|
|
83
116
|
end
|
|
84
117
|
return nil
|
|
85
118
|
end
|
|
86
|
-
|
|
87
|
-
|
|
88
|
-
|
|
89
|
-
|
|
119
|
+
=begin rdoc
|
|
120
|
+
Add shorttitle as a meta-tag., options should contain :log
|
|
121
|
+
=end
|
|
122
|
+
def shorttitle_html(options = {})
|
|
123
|
+
return nil unless @attr[:short].filled?
|
|
124
|
+
return element( :meta, {:name => 'shorttitle', :content => @attr[:short].content}).to_html(:log => options[:log])
|
|
90
125
|
end
|
|
91
126
|
|
|
127
|
+
=begin rdoc
|
|
128
|
+
Define output routines.
|
|
129
|
+
=end
|
|
92
130
|
add_output( :latex, '#{linebreak(@crbefore)}\title#{shortoption(o)}{#{@content}}#{linebreak(@crmid)}\hypersetup{pdftitle={#{@content}}}#{linebreak(@crafter)}')
|
|
93
131
|
#~ add_output( :latex, '#{linebreak(@crbefore)}\title{#{@content}}#{linebreak(@crmid)}\hypersetup{pdftitle={#{@content}}}#{linebreak(@crafter)}')
|
|
94
|
-
add_output( :html, '#{linebreak(@crbefore)}<title>#{@content}</title>#{linebreak(@crmid) if shorttitle_html}#{shorttitle_html}#{linebreak(@crafter)}')
|
|
132
|
+
add_output( :html, '#{linebreak(@crbefore)}<title>#{@content}</title>#{linebreak(@crmid) if shorttitle_html(o)}#{shorttitle_html(o)}#{linebreak(@crafter)}')
|
|
95
133
|
|
|
96
134
|
add_output( :text, "\n" + '#{linebreak(@crbefore)}#{@content}#{linebreak(@crafter)}' + "\n")
|
|
97
135
|
add_output( :wiki, '#{linebreak(@crbefore)}' + '=#{@content}=' + ' #{linebreak(@crafter)}')
|
|
98
136
|
add_output( :creole, '#{linebreak(@crbefore)}' + '=#{@content}' + ' #{linebreak(@crafter)}')
|
|
99
137
|
end #Title
|
|
100
138
|
|
|
101
|
-
|
|
102
|
-
|
|
103
|
-
|
|
104
|
-
|
|
105
|
-
|
|
106
|
-
|
|
107
|
-
|
|
108
|
-
|
|
109
|
-
|
|
110
|
-
|
|
111
|
-
|
|
112
|
-
|
|
113
|
-
|
|
114
|
-
|
|
115
|
-
|
|
116
|
-
|
|
117
|
-
|
|
118
|
-
|
|
119
|
-
|
|
120
|
-
|
|
121
|
-
|
|
122
|
-
|
|
123
|
-
|
|
124
|
-
|
|
125
|
-
|
|
126
|
-
|
|
127
|
-
|
|
128
|
-
|
|
129
|
-
|
|
130
|
-
|
|
131
|
-
|
|
132
|
-
|
|
133
|
-
|
|
134
|
-
|
|
135
|
-
|
|
136
|
-
|
|
137
|
-
|
|
138
|
-
|
|
139
|
-
|
|
140
|
-
|
|
141
|
-
|
|
142
|
-
|
|
143
|
-
|
|
144
|
-
|
|
145
|
-
|
|
146
|
-
|
|
147
|
-
|
|
148
|
-
|
|
149
|
-
|
|
150
|
-
|
|
151
|
-
|
|
152
|
-
|
|
153
|
-
|
|
154
|
-
|
|
155
|
-
|
|
156
|
-
|
|
157
|
-
|
|
158
|
-
|
|
159
|
-
|
|
160
|
-
|
|
161
|
-
|
|
162
|
-
|
|
163
|
-
|
|
164
|
-
|
|
165
|
-
|
|
166
|
-
|
|
167
|
-
|
|
139
|
+
=begin rdoc
|
|
140
|
+
Define Element :meta
|
|
141
|
+
=end
|
|
142
|
+
class Meta < Element
|
|
143
|
+
has_no_content false
|
|
144
|
+
add_attribute :name, Attribute.create( [ :html, :required ], nil, 1 )
|
|
145
|
+
add_attribute :content, Attribute.create( [ :html, :required ], nil, 2 )
|
|
146
|
+
add_html_tag 'meta'
|
|
147
|
+
add_latex_output ''
|
|
148
|
+
add_context_output ''
|
|
149
|
+
add_wiki_output ''
|
|
150
|
+
add_creole_output ''
|
|
151
|
+
add_text_output ''
|
|
152
|
+
end #Meta
|
|
153
|
+
|
|
154
|
+
=begin rdoc
|
|
155
|
+
Define Element :meta2
|
|
156
|
+
|
|
157
|
+
Like Meta, but without name.
|
|
158
|
+
=end
|
|
159
|
+
class Meta2 < Element
|
|
160
|
+
has_no_content ENDTAG
|
|
161
|
+
add_attribute :"http-equiv", Attribute.create( [ :html, :required ], nil, 1 )
|
|
162
|
+
add_attribute :content, Attribute.create( [ :html, :required ], nil, 2 )
|
|
163
|
+
add_html_tag 'meta'
|
|
164
|
+
add_latex_output ''
|
|
165
|
+
end #Meta2
|
|
166
|
+
|
|
167
|
+
=begin rdoc
|
|
168
|
+
Define Element :author
|
|
169
|
+
|
|
170
|
+
Create an instance with
|
|
171
|
+
element( :author, [ attributes, [content]] )
|
|
172
|
+
or
|
|
173
|
+
Author.new( [ attributes, [content]] )
|
|
174
|
+
|
|
175
|
+
Attributes are not defined for this element.
|
|
176
|
+
=end
|
|
177
|
+
class Author < Element
|
|
178
|
+
add_html_output '<meta name="author" content="#{@content}"> #{linebreak(@crafter)}'
|
|
179
|
+
add_latex_output '#{linebreak(@crbefore)}\author{#{@content}}#{linebreak(@crmid)}\hypersetup{pdfauthor={#{@content}}}#{linebreak(@crafter)}'
|
|
180
|
+
end #Author
|
|
181
|
+
|
|
182
|
+
=begin rdoc
|
|
183
|
+
Define Element :date
|
|
184
|
+
|
|
185
|
+
Create an instance with
|
|
186
|
+
element( :date, [ attributes, [content]] )
|
|
187
|
+
or
|
|
188
|
+
Date.new( [ attributes, [content]] )
|
|
189
|
+
=end
|
|
190
|
+
class Date < Element
|
|
191
|
+
add_html_output '<meta name="creation-date" content="#{@content}"> #{linebreak(@crafter)}'
|
|
192
|
+
add_latex_output '#{linebreak(@crbefore)}\date{#{@content}}#{linebreak(@crafter)}'
|
|
193
|
+
end #Date
|
|
194
|
+
|
|
195
|
+
=begin rdoc
|
|
196
|
+
Define Element :keywords
|
|
197
|
+
|
|
198
|
+
Create an instance with
|
|
199
|
+
element( :keywords, [ attributes, [content]] )
|
|
200
|
+
or
|
|
201
|
+
Keywords.new( [ attributes, [content]] )
|
|
202
|
+
|
|
203
|
+
Attributes are not defined for this element.
|
|
204
|
+
=end
|
|
205
|
+
class Keywords < Element
|
|
206
|
+
add_html_output '<meta name="keywords" content="#{@content}"> #{linebreak(@crafter)}'
|
|
207
|
+
add_latex_output '#{linebreak(@crbefore)}\hypersetup{pdfkeywords={#{@content}}}#{linebreak(@crafter)}'
|
|
208
|
+
end #Keywords
|
|
209
|
+
|
|
210
|
+
=begin rdoc
|
|
211
|
+
Define Element :metadescription
|
|
212
|
+
|
|
213
|
+
Create an instance with
|
|
214
|
+
element( :metadescription, [ attributes, [content]] )
|
|
215
|
+
or
|
|
216
|
+
Metadescription.new( [ attributes, [content]] )
|
|
217
|
+
|
|
218
|
+
Attributes are not defined for this element.
|
|
219
|
+
=end
|
|
220
|
+
class Metadescription < Element
|
|
221
|
+
add_html_output '<meta name="description" content="#{@content}"> #{linebreak(@crafter)}'
|
|
222
|
+
add_latex_output '#{linebreak(@crbefore)}\hypersetup{pdfsubject={#{@content}}}#{linebreak(@crafter)}'
|
|
223
|
+
end #Metadescription
|
|
224
|
+
|
|
225
|
+
=begin rdoc
|
|
226
|
+
Define Element :creator
|
|
227
|
+
|
|
228
|
+
Create an instance with
|
|
229
|
+
element( :creator, [ attributes, [content]] )
|
|
230
|
+
or
|
|
231
|
+
Creator.new( [ attributes, [content]] )
|
|
232
|
+
Attributes are not defined for this element.
|
|
233
|
+
=end
|
|
234
|
+
class Creator < Element
|
|
235
|
+
add_html_output '<meta name="creator" content="#{@content}"> #{linebreak(@crafter)}'
|
|
236
|
+
add_latex_output '#{linebreak(@crbefore)}\hypersetup{pdfcreator={#{@content}}}#{linebreak(@crafter)}'
|
|
237
|
+
end #Creator
|
|
238
|
+
|
|
239
|
+
=begin rdoc
|
|
240
|
+
Define Element :maketitle
|
|
241
|
+
|
|
242
|
+
Create an instance with
|
|
243
|
+
element( :maketitle, [ attributes, [content]] )
|
|
244
|
+
or
|
|
245
|
+
Maketitle.new( [ attributes, [content]] )
|
|
246
|
+
Attributes are not defined for this element.
|
|
247
|
+
=end
|
|
248
|
+
class Maketitle < Element
|
|
249
|
+
has_no_content false
|
|
250
|
+
add_html_tag 'span'
|
|
251
|
+
add_html_output "<!-- maketitle -->\n"
|
|
252
|
+
add_latex_output '#{linebreak(@crbefore)}\maketitle #{linebreak(@crafter)}'
|
|
253
|
+
end #Maketitle
|
|
254
|
+
|
|
255
|
+
=begin rdoc
|
|
256
|
+
Build table of contents.
|
|
257
|
+
|
|
258
|
+
This element requires a related document.
|
|
259
|
+
|
|
260
|
+
For LaTeX \tableofcontents is created, with attribute :as_list you can create a list.
|
|
261
|
+
=end
|
|
168
262
|
class Tableofcontents < Element
|
|
169
|
-
|
|
170
|
-
add_attributes
|
|
171
|
-
|
|
172
|
-
|
|
173
|
-
|
|
174
|
-
|
|
175
|
-
|
|
176
|
-
|
|
177
|
-
|
|
263
|
+
|
|
264
|
+
add_attributes HTML_ATTR_ALL
|
|
265
|
+
add_attribute :level , Attribute.create( [ :html, :latex ], [Fixnum], 1 )
|
|
266
|
+
add_attribute :pre , Attribute.create( [ :html, :latex ], nil, 2 )
|
|
267
|
+
add_attribute :post , Attribute.create( [ :html, :latex ], nil, 2 )
|
|
268
|
+
add_attribute :as_list , Attribute.create( [ :latex ], [true, false], 2 )
|
|
269
|
+
|
|
270
|
+
has_no_content false
|
|
271
|
+
|
|
178
272
|
def to_doc( target, options = {} )
|
|
179
|
-
o =
|
|
273
|
+
o = set_option_defaults(options)
|
|
180
274
|
o[:log].debug("enter to_doc(#{target}) for #{self.inspect}, options: #{options.keys.inspect}") if o[:log].debug?
|
|
181
275
|
tocoptions = {
|
|
182
276
|
:level => @attr[:level].content.first,
|
|
@@ -210,7 +304,7 @@ class Tableofcontents < Element
|
|
|
210
304
|
end
|
|
211
305
|
#Build toc, if there is a related document.
|
|
212
306
|
def to_html( options = {} )
|
|
213
|
-
o =
|
|
307
|
+
o = set_option_defaults(options)
|
|
214
308
|
o[:log].debug("enter to_html for #{self.inspect}, options: #{options.keys.inspect}") if o[:log].debug?
|
|
215
309
|
if o[:document]
|
|
216
310
|
return o[:document].toc(options).to_html(options)
|
|
@@ -220,149 +314,376 @@ class Tableofcontents < Element
|
|
|
220
314
|
end
|
|
221
315
|
end
|
|
222
316
|
end
|
|
223
|
-
Element.create( [:addcontentsline], {
|
|
224
|
-
:file => Attribute.create( [ :latex, :required ], [ 'toc', 'lof', 'lot' ] ),
|
|
225
|
-
:depth => Attribute.create( [ :latex, :required ], [ -1, 0,1,2,3,4,5,6] ),
|
|
226
|
-
}, true,
|
|
227
|
-
{ #:htmltag => 'span', #Empty span
|
|
228
|
-
#:html => "<!-- tableofcontents -->\n",
|
|
229
|
-
:latex => '#{linebreak(@crbefore)}' + '\addcontentsline{#{@attr[:file]}}{#{@attr[:depth]}}{#{@content}}' + ' #{linebreak(@crafter)}'
|
|
230
|
-
} )
|
|
231
|
-
Element.create( [:addtocontents], {
|
|
232
|
-
:file => Attribute.create( [ :latex, :required ], [ 'toc', 'lof', 'lot' ] ),
|
|
233
|
-
}, true,
|
|
234
|
-
{ #:htmltag => 'span', #Empty span
|
|
235
|
-
#:html => "<!-- tableofcontents -->\n",
|
|
236
|
-
:latex => '#{linebreak(@crbefore)}' + '\addtocontents{#{@attr[:file]}}{#{@content}}' + ' #{linebreak(@crafter)}'
|
|
237
|
-
} )
|
|
238
317
|
|
|
239
|
-
|
|
240
|
-
|
|
241
|
-
#
|
|
242
|
-
Element.create( [:par, :p], HTML_ATTR_ALL, true,
|
|
243
|
-
{ :htmltag => 'p',
|
|
244
|
-
:latex => "\n\n" + '#{@content}' + "\n\n",
|
|
245
|
-
:context => "\n\n" + '#{@content}' + "\n\n",
|
|
246
|
-
:text => "\n" + '#{@content}' + "\n", #siehe experimente/textformat.rb
|
|
247
|
-
:wiki => "\n" + '#{@content}' + "\n", #
|
|
248
|
-
:creole => "\n" + '#{@content}' + "\n\n",
|
|
249
|
-
} )
|
|
250
|
-
#~ par.add_output( :html, '<p>#{@attr[:content]}</p>')
|
|
251
|
-
#~ par.add_output( :latex, '#{@content}\par')
|
|
252
|
-
|
|
253
|
-
Element.create( [:nobr], HTML_ATTR_ALL, true,
|
|
254
|
-
{ :htmltag => 'nobr',
|
|
255
|
-
:latex => '#{linebreak(@crbefore)}\mbox{#{@content}}#{linebreak(@crafter)}'
|
|
256
|
-
#~ :text => "\n" + '#{@content}' + "\n",
|
|
257
|
-
} )
|
|
258
|
-
|
|
259
|
-
Element.create( [:br, 'br/', 'br', :newline], {
|
|
260
|
-
:clear=> Attribute.create( [ :html ], ['all'] ),
|
|
261
|
-
},ENDTAG,
|
|
262
|
-
{ :htmltag => 'br',
|
|
263
|
-
:latex => '#{linebreak(@crbefore)}\newline' + ' #{linebreak(@crafter)}',
|
|
264
|
-
:text => "\n",
|
|
265
|
-
:wiki => '{{newline}}#{linebreak(@crafter)}',
|
|
266
|
-
} )
|
|
267
|
-
Element.create( [:hr, 'hr/', 'hr', :hrulefill], {
|
|
268
|
-
:clear=> Attribute.create( [ :html ], ['all'] ),
|
|
269
|
-
},ENDTAG,
|
|
270
|
-
{ :htmltag => 'hr',
|
|
271
|
-
:wiki => '----',
|
|
272
|
-
:text => '-' * 25,
|
|
273
|
-
:latex => '#{linebreak(@crbefore)}' + '\hrulefill' + ' #{linebreak(@crafter)}'
|
|
274
|
-
} )
|
|
275
|
-
|
|
276
|
-
Element.create( [:vfill], {},false,
|
|
277
|
-
{ :htmltag => nil,
|
|
278
|
-
:latex => '#{linebreak(@crbefore)}\vfill #{linebreak(@crafter)}'
|
|
279
|
-
} )
|
|
280
|
-
Element.create( [:hfill], {},false,
|
|
281
|
-
{ :htmltag => nil,
|
|
282
|
-
:latex => '#{linebreak(@crbefore)}\hfill #{linebreak(@crafter)}'
|
|
283
|
-
} )
|
|
284
|
-
|
|
285
|
-
Element.create( [:relax], {},false,
|
|
286
|
-
{ :htmltag => nil,
|
|
287
|
-
:latex => '#{linebreak(@crbefore)}\relax #{linebreak(@crafter)}'
|
|
288
|
-
} )
|
|
318
|
+
=begin rdoc
|
|
319
|
+
Define Element :listoffigures
|
|
289
320
|
|
|
290
|
-
|
|
291
|
-
|
|
292
|
-
|
|
293
|
-
|
|
294
|
-
|
|
295
|
-
|
|
296
|
-
|
|
297
|
-
|
|
298
|
-
|
|
299
|
-
|
|
300
|
-
|
|
301
|
-
divattr = { :align => HTML_ATTR_ALIGN}
|
|
302
|
-
divattr.update( HTML_ATTR_CORE )
|
|
303
|
-
Element.create( [:div, :Group], divattr, true,
|
|
304
|
-
{ :htmltag => 'div',
|
|
305
|
-
:latex => '#{linebreak(@crbefore)}' +
|
|
306
|
-
'\begingroup ' + '#{linebreak(@crmid)}' +
|
|
307
|
-
'#{@content}' + '#{linebreak(@crmid)}' +
|
|
308
|
-
'\endgroup ' + '#{linebreak(@crafter)}',
|
|
309
|
-
:text => '#{@content}',
|
|
310
|
-
:wiki => '#{@content}',
|
|
311
|
-
} )
|
|
312
|
-
|
|
313
|
-
|
|
314
|
-
#Make a separator lin in code
|
|
315
|
-
Element.create( [:sepline], {}, false,
|
|
316
|
-
{ :html => "\n<!--" + '-' * 50 + " -->\n",
|
|
317
|
-
:latex => "\n%" + '-' * 50 + "\n"
|
|
318
|
-
} )
|
|
319
|
-
#Make a comment in code
|
|
320
|
-
Element.create( [:comment], {}, true,
|
|
321
|
-
{ :htmltag => '<!-- #{@content} -->',
|
|
322
|
-
:latex => '#{linebreak(@crbefore)}' + '% ------- #{@content} -------' + ' #{linebreak(@crafter)}'
|
|
323
|
-
} )
|
|
321
|
+
Create an instance with
|
|
322
|
+
element( :listoffigures, [ attributes, [content]] )
|
|
323
|
+
or
|
|
324
|
+
Listoffigures.new( [ attributes, [content]] )
|
|
325
|
+
Attributes are not defined for this element.
|
|
326
|
+
=end
|
|
327
|
+
class Listoffigures < Element
|
|
328
|
+
has_no_content false
|
|
329
|
+
add_latex_output '#{linebreak(@crbefore)}\listoffigures #{linebreak(@crafter)}'
|
|
330
|
+
end #Listoffigures
|
|
324
331
|
|
|
325
|
-
#
|
|
326
|
-
#Links
|
|
327
|
-
#
|
|
328
|
-
#Better: \hypertarget, hyperlink (pdf)
|
|
329
|
-
Element.create( [ :url ],
|
|
330
|
-
HTML_ATTR_ALL,
|
|
331
|
-
true,
|
|
332
|
-
{
|
|
333
|
-
:html => '#{linebreak(@crbefore)}<a href="#{@content}">#{@content}</a>#{linebreak(@crafter)}',
|
|
334
|
-
:latex => '#{linebreak(@crbefore)}\url{#{@content}}#{linebreak(@crafter)}',
|
|
335
|
-
} )
|
|
336
|
-
|
|
337
|
-
Element.create( [ :ensuremath ],
|
|
338
|
-
{},
|
|
339
|
-
true,
|
|
340
|
-
{
|
|
341
|
-
:html => '#{@content}',
|
|
342
|
-
:latex => '\ensuremath{#{@content}}',
|
|
343
|
-
} )
|
|
344
332
|
|
|
345
|
-
|
|
346
|
-
|
|
347
|
-
|
|
348
|
-
|
|
349
|
-
|
|
350
|
-
|
|
333
|
+
=begin rdoc
|
|
334
|
+
Define Element :addcontentsline
|
|
335
|
+
|
|
336
|
+
Create an instance with
|
|
337
|
+
element( :addcontentsline, [ attributes, [content]] )
|
|
338
|
+
or
|
|
339
|
+
Addcontentsline.new( [ attributes, [content]] )
|
|
340
|
+
Attributes may be:
|
|
341
|
+
* :file: [ 'toc', 'lof', 'lot' ]
|
|
342
|
+
* :depth: [ -1, 0,1,2,3,4,5,6]
|
|
343
|
+
=end
|
|
344
|
+
class Addcontentsline < Element
|
|
345
|
+
add_attribute :file, Attribute.create( [ :latex, :required ], [ 'toc', 'lof', 'lot' ] )
|
|
346
|
+
add_attribute :depth, Attribute.create( [ :latex, :required ], [ -1, 0,1,2,3,4,5,6] )
|
|
347
|
+
add_latex_output '#{linebreak(@crbefore)}\addcontentsline{#{@attr[:file]}}{#{@attr[:depth]}}{#{@content}} #{linebreak(@crafter)}'
|
|
348
|
+
end #Addcontentsline
|
|
349
|
+
|
|
350
|
+
=begin rdoc
|
|
351
|
+
Define Element :addtocontents
|
|
352
|
+
|
|
353
|
+
Create an instance with
|
|
354
|
+
element( :addtocontents, [ attributes, [content]] )
|
|
355
|
+
or
|
|
356
|
+
Addtocontents.new( [ attributes, [content]] )
|
|
357
|
+
Attributes may be:
|
|
358
|
+
* :file: [ 'toc', 'lof', 'lot' ]
|
|
359
|
+
=end
|
|
360
|
+
class Addtocontents < Element
|
|
361
|
+
add_attribute :file, Attribute.create( [ :latex, :required ], [ 'toc', 'lof', 'lot' ] )
|
|
362
|
+
add_latex_output '#{linebreak(@crbefore)}\addtocontents{#{@attr[:file]}}{#{@content}} #{linebreak(@crafter)}'
|
|
363
|
+
end #Addtocontents
|
|
364
|
+
|
|
365
|
+
=begin rdoc
|
|
366
|
+
Define Element :par, :p
|
|
367
|
+
|
|
368
|
+
Generell paragraph handling.
|
|
369
|
+
|
|
370
|
+
Create an instance with
|
|
371
|
+
element( :par, [ attributes, [content]] )
|
|
372
|
+
element( :p, [ attributes, [content]] )
|
|
373
|
+
or
|
|
374
|
+
Par.new( [ attributes, [content]] )
|
|
375
|
+
Attributes may be:
|
|
376
|
+
* HTML_ATTR_CORE
|
|
377
|
+
* HTML_ATTR_I18N
|
|
378
|
+
* HTML_ATTR_EVENTS
|
|
379
|
+
* :lang, ATTR_LANG
|
|
380
|
+
=end
|
|
381
|
+
class Par < Element
|
|
382
|
+
add_id :p
|
|
383
|
+
add_attributes HTML_ATTR_CORE
|
|
384
|
+
add_attributes HTML_ATTR_I18N
|
|
385
|
+
add_attributes HTML_ATTR_EVENTS
|
|
386
|
+
add_attribute :lang, ATTR_LANG
|
|
387
|
+
add_html_tag 'p'
|
|
388
|
+
add_latex_output "\n\n" + '#{@content}' + "\n\n"
|
|
389
|
+
add_context_output "\n\n" + '#{@content}' + "\n\n"
|
|
390
|
+
add_text_output "\n" + '#{@content}' + "\n"
|
|
391
|
+
add_wiki_output "\n" + '#{@content}' + "\n"
|
|
392
|
+
add_creole_output "\n" + '#{@content}' + "\n\n"
|
|
393
|
+
end #Par
|
|
394
|
+
|
|
395
|
+
=begin rdoc
|
|
396
|
+
Define Element :nobr
|
|
397
|
+
|
|
398
|
+
Create an instance with
|
|
399
|
+
element( :nobr, [ attributes, [content]] )
|
|
400
|
+
or
|
|
401
|
+
Nobr.new( [ attributes, [content]] )
|
|
402
|
+
Attributes may be:
|
|
403
|
+
* HTML_ATTR_CORE
|
|
404
|
+
* HTML_ATTR_I18N
|
|
405
|
+
* HTML_ATTR_EVENTS
|
|
406
|
+
* :lang, ATTR_LANG
|
|
407
|
+
=end
|
|
408
|
+
class Nobr < Element
|
|
409
|
+
add_attributes HTML_ATTR_CORE
|
|
410
|
+
add_attributes HTML_ATTR_I18N
|
|
411
|
+
add_attributes HTML_ATTR_EVENTS
|
|
412
|
+
add_attribute :lang, ATTR_LANG
|
|
413
|
+
add_html_tag 'nobr'
|
|
414
|
+
add_latex_output '#{linebreak(@crbefore)}\mbox{#{@content}}#{linebreak(@crafter)}'
|
|
415
|
+
end #Nobr
|
|
416
|
+
|
|
417
|
+
=begin rdoc
|
|
418
|
+
Define Element :br, "br/", "br", :newline
|
|
419
|
+
|
|
420
|
+
Create an instance with
|
|
421
|
+
element( :br, [ attributes, [content]] )
|
|
422
|
+
element( "br/", [ attributes, [content]] )
|
|
423
|
+
element( "br", [ attributes, [content]] )
|
|
424
|
+
element( :newline, [ attributes, [content]] )
|
|
425
|
+
or
|
|
426
|
+
Br.new( [ attributes, [content]] )
|
|
427
|
+
Attributes may be:
|
|
428
|
+
* :clear: ['all']
|
|
429
|
+
=end
|
|
430
|
+
class Newline < Element
|
|
431
|
+
add_id "br/"
|
|
432
|
+
add_id "br"
|
|
433
|
+
add_id :br
|
|
434
|
+
has_no_content ENDTAG
|
|
435
|
+
add_attribute :clear, Attribute.create( [ :html ], ['all'] )
|
|
436
|
+
add_html_tag 'br'
|
|
437
|
+
add_latex_output '#{linebreak(@crbefore)}\newline #{linebreak(@crafter)}'
|
|
438
|
+
add_text_output "\n"
|
|
439
|
+
add_wiki_output '{{newline}}#{linebreak(@crafter)}'
|
|
440
|
+
add_creole_output '\\\\#{linebreak(@crafter)}'
|
|
441
|
+
end #Br
|
|
442
|
+
|
|
443
|
+
=begin rdoc
|
|
444
|
+
Define Element :hr, "hr/", "hr", :hrulefill
|
|
445
|
+
|
|
446
|
+
Create an instance with
|
|
447
|
+
element( :hr, [ attributes, [content]] )
|
|
448
|
+
element( "hr/", [ attributes, [content]] )
|
|
449
|
+
element( "hr", [ attributes, [content]] )
|
|
450
|
+
element( :hrulefill, [ attributes, [content]] )
|
|
451
|
+
or
|
|
452
|
+
Hrulefill.new( [ attributes, [content]] )
|
|
453
|
+
Attributes may be:
|
|
454
|
+
* :clear:
|
|
455
|
+
=end
|
|
456
|
+
class Hrulefill < Element
|
|
457
|
+
add_id "hr/"
|
|
458
|
+
add_id "hr"
|
|
459
|
+
add_id :hr
|
|
460
|
+
has_no_content ENDTAG
|
|
461
|
+
add_attribute :clear, Attribute.create( [ :html ], ['all'] )
|
|
462
|
+
add_html_tag 'hr'
|
|
463
|
+
add_wiki_output '----'
|
|
464
|
+
add_text_output '-------------------------'
|
|
465
|
+
add_latex_output '#{linebreak(@crbefore)}\hrulefill #{linebreak(@crafter)}'
|
|
466
|
+
end #Hr
|
|
467
|
+
|
|
468
|
+
=begin rdoc
|
|
469
|
+
Define Element :vspace
|
|
470
|
+
|
|
471
|
+
Create an instance with
|
|
472
|
+
element( :vspace, [ attributes, [content]] )
|
|
473
|
+
or
|
|
474
|
+
Vspace.new( [ attributes, [content]] )
|
|
475
|
+
Attributes are not defined for this element.
|
|
476
|
+
=end
|
|
477
|
+
class Vspace < Element
|
|
478
|
+
add_latex_output '#{linebreak(@crbefore)}\vspace{#{@content}} #{linebreak(@crafter)}'
|
|
479
|
+
#:htmltag => 'hr',
|
|
480
|
+
#~ :wiki => '----',
|
|
481
|
+
#~ :text => '-' * 25,
|
|
482
|
+
end #Vspace
|
|
483
|
+
|
|
484
|
+
=begin rdoc
|
|
485
|
+
Define Element :hspace
|
|
486
|
+
|
|
487
|
+
Create an instance with
|
|
488
|
+
element( :hspace, [ attributes, [content]] )
|
|
489
|
+
or
|
|
490
|
+
Hspace.new( [ attributes, [content]] )
|
|
491
|
+
Attributes are not defined for this element.
|
|
492
|
+
|
|
493
|
+
Only for LaTeX
|
|
494
|
+
=end
|
|
495
|
+
class Hspace < Element
|
|
496
|
+
add_latex_output '#{linebreak(@crbefore)}\hspace{#{@content}} #{linebreak(@crafter)}'
|
|
497
|
+
end #Hspace
|
|
498
|
+
|
|
499
|
+
=begin rdoc
|
|
500
|
+
Define Element :vfill
|
|
501
|
+
|
|
502
|
+
Create an instance with
|
|
503
|
+
element( :vfill, [ attributes, [content]] )
|
|
504
|
+
or
|
|
505
|
+
Vfill.new( [ attributes, [content]] )
|
|
506
|
+
Attributes are not defined for this element.
|
|
507
|
+
|
|
508
|
+
Only for LaTeX
|
|
509
|
+
=end
|
|
510
|
+
class Vfill < Element
|
|
511
|
+
has_no_content
|
|
512
|
+
add_latex_output '#{linebreak(@crbefore)}\vfill #{linebreak(@crafter)}'
|
|
513
|
+
end #Vfill
|
|
514
|
+
|
|
515
|
+
=begin rdoc
|
|
516
|
+
Define Element :hfill
|
|
517
|
+
|
|
518
|
+
Create an instance with
|
|
519
|
+
element( :hfill, [ attributes, [content]] )
|
|
520
|
+
or
|
|
521
|
+
Hfill.new( [ attributes, [content]] )
|
|
522
|
+
Attributes are not defined for this element.
|
|
523
|
+
|
|
524
|
+
Only for LaTeX
|
|
525
|
+
=end
|
|
526
|
+
class Hfill < Element
|
|
527
|
+
has_no_content false
|
|
528
|
+
add_latex_output '#{linebreak(@crbefore)}\hfill #{linebreak(@crafter)}'
|
|
529
|
+
end #Hfill
|
|
530
|
+
|
|
531
|
+
=begin rdoc
|
|
532
|
+
Define Element :relax
|
|
533
|
+
|
|
534
|
+
Create an instance with
|
|
535
|
+
element( :relax, [ attributes, [content]] )
|
|
536
|
+
or
|
|
537
|
+
Relax.new( [ attributes, [content]] )
|
|
538
|
+
Attributes are not defined for this element.
|
|
539
|
+
=end
|
|
540
|
+
class Relax < Element
|
|
541
|
+
has_no_content
|
|
542
|
+
add_html_tag nil
|
|
543
|
+
add_latex_output '#{linebreak(@crbefore)}\relax #{linebreak(@crafter)}'
|
|
544
|
+
end #Relax
|
|
545
|
+
|
|
546
|
+
|
|
547
|
+
=begin rdoc
|
|
548
|
+
Define Element :span, :group
|
|
549
|
+
|
|
550
|
+
Can be used to group something.
|
|
551
|
+
|
|
552
|
+
Create an instance with
|
|
553
|
+
element( :span, [ attributes, [content]] )
|
|
554
|
+
element( :group, [ attributes, [content]] )
|
|
555
|
+
or
|
|
556
|
+
Span.new( [ attributes, [content]] )
|
|
557
|
+
Attributes may be:
|
|
558
|
+
* HTML_ATTR_CORE
|
|
559
|
+
=end
|
|
560
|
+
class Span < Element
|
|
561
|
+
add_id :group
|
|
562
|
+
add_attributes HTML_ATTR_CORE
|
|
563
|
+
add_html_tag 'span'
|
|
564
|
+
add_latex_output '#{linebreak(@crbefore)}\bgroup #{linebreak(@crmid)}#{@content}#{linebreak(@crmid)}\egroup #{linebreak(@crafter)}'
|
|
565
|
+
end #Span
|
|
566
|
+
|
|
567
|
+
=begin rdoc
|
|
568
|
+
Define Element :div, :Group
|
|
569
|
+
|
|
570
|
+
Create an instance with
|
|
571
|
+
element( :div, [ attributes, [content]] )
|
|
572
|
+
element( :Group, [ attributes, [content]] )
|
|
573
|
+
or
|
|
574
|
+
Div.new( [ attributes, [content]] )
|
|
575
|
+
Attributes may be:
|
|
576
|
+
* :align:
|
|
577
|
+
* :id:
|
|
578
|
+
* :class:
|
|
579
|
+
* :style:
|
|
580
|
+
* :title:
|
|
581
|
+
=end
|
|
582
|
+
class Div < Element
|
|
583
|
+
add_id :Group
|
|
584
|
+
add_attributes HTML_ATTR_CORE
|
|
585
|
+
add_attribute :align, HTML_ATTR_ALIGN
|
|
586
|
+
add_html_tag 'div'
|
|
587
|
+
add_latex_output '#{linebreak(@crbefore)}\begingroup #{linebreak(@crmid)}#{@content}#{linebreak(@crmid)}\endgroup #{linebreak(@crafter)}'
|
|
588
|
+
add_text_output '#{@content}'
|
|
589
|
+
add_wiki_output '#{@content}'
|
|
590
|
+
end #Div
|
|
591
|
+
|
|
592
|
+
|
|
593
|
+
=begin rdoc
|
|
594
|
+
Define Element :sepline
|
|
595
|
+
|
|
596
|
+
Make a separator line in code
|
|
597
|
+
|
|
598
|
+
Create an instance with
|
|
599
|
+
element( :sepline, [ attributes, [content]] )
|
|
600
|
+
or
|
|
601
|
+
Sepline.new( [ attributes, [content]] )
|
|
602
|
+
Attributes are not defined for this element.
|
|
603
|
+
=end
|
|
604
|
+
class Sepline < Element
|
|
605
|
+
has_no_content false
|
|
606
|
+
add_html_output "\n<!--" + '-' * 50 + " -->\n"
|
|
607
|
+
add_latex_output "\n%" + '-' * 50 + "\n"
|
|
608
|
+
end #Sepline
|
|
609
|
+
|
|
610
|
+
=begin rdoc
|
|
611
|
+
Define Element :comment
|
|
612
|
+
|
|
613
|
+
Make a comment in code
|
|
614
|
+
|
|
615
|
+
Create an instance with
|
|
616
|
+
element( :comment, [ attributes, [content]] )
|
|
617
|
+
or
|
|
618
|
+
Comment.new( [ attributes, [content]] )
|
|
619
|
+
Attributes are not defined for this element.
|
|
620
|
+
=end
|
|
621
|
+
class Comment < Element
|
|
622
|
+
add_html_tag '<!-- #{@content} -->'
|
|
623
|
+
add_latex_output '#{linebreak(@crbefore)}% ------- #{@content} ------- #{linebreak(@crafter)}'
|
|
624
|
+
end #Comment
|
|
625
|
+
|
|
626
|
+
=begin rdoc
|
|
627
|
+
Define Element :url
|
|
628
|
+
|
|
629
|
+
Links
|
|
630
|
+
|
|
631
|
+
Better: \hypertarget, hyperlink (pdf)
|
|
632
|
+
|
|
633
|
+
Create an instance with
|
|
634
|
+
element( :url, [ attributes, [content]] )
|
|
635
|
+
or
|
|
636
|
+
Url.new( [ attributes, [content]] )
|
|
637
|
+
Attributes may be:
|
|
638
|
+
* HTML_ATTR_CORE
|
|
639
|
+
* HTML_ATTR_I18N
|
|
640
|
+
* HTML_ATTR_EVENTS
|
|
641
|
+
* ATTR_LANG
|
|
642
|
+
=end
|
|
643
|
+
class Url < Element
|
|
644
|
+
add_attributes HTML_ATTR_CORE
|
|
645
|
+
add_attributes HTML_ATTR_I18N
|
|
646
|
+
add_attributes HTML_ATTR_EVENTS
|
|
647
|
+
add_attribute :lang, ATTR_LANG
|
|
648
|
+
add_html_output '#{linebreak(@crbefore)}<a href="#{@content}">#{@content}</a>#{linebreak(@crafter)}'
|
|
649
|
+
add_latex_output '#{linebreak(@crbefore)}\url{#{@content}}#{linebreak(@crafter)}'
|
|
650
|
+
end #Url
|
|
651
|
+
|
|
652
|
+
=begin rdoc
|
|
653
|
+
Define Element :ensuremath
|
|
654
|
+
|
|
655
|
+
Create an instance with
|
|
656
|
+
element( :ensuremath, [ attributes, [content]] )
|
|
657
|
+
or
|
|
658
|
+
Ensuremath.new( [ attributes, [content]] )
|
|
659
|
+
Attributes are not defined for this element.
|
|
660
|
+
=end
|
|
661
|
+
class Ensuremath < Element
|
|
662
|
+
add_html_output '#{@content}'
|
|
663
|
+
add_latex_output '\ensuremath{#{@content}}'
|
|
664
|
+
add_context_output '\math{#{@content}}' #http://www.ntg.nl/pipermail/ntg-context/2010/051451.html
|
|
665
|
+
end #Ensuremath
|
|
666
|
+
|
|
667
|
+
=begin rdoc
|
|
668
|
+
Internal reference
|
|
669
|
+
The href-parameter is expected with a leading # (HTML)
|
|
670
|
+
The corresponding label should be defined in the same document/file.
|
|
671
|
+
|
|
672
|
+
For external links use :href.
|
|
673
|
+
=end
|
|
351
674
|
class Href < Element
|
|
352
|
-
|
|
353
|
-
|
|
354
|
-
|
|
355
|
-
|
|
356
|
-
|
|
357
|
-
|
|
358
|
-
|
|
359
|
-
|
|
360
|
-
|
|
361
|
-
|
|
362
|
-
|
|
363
|
-
|
|
364
|
-
)
|
|
365
|
-
def htmltag(); 'a'; end
|
|
675
|
+
add_id :a
|
|
676
|
+
add_attribute :href, Attribute.create( [ :html, :required ], [String], 1 )
|
|
677
|
+
add_attribute :hreflang, ATTR_LANG
|
|
678
|
+
add_attribute :alt, Attribute.create( [ :html ], [String], 2 )
|
|
679
|
+
add_attribute :name, Attribute.create( [ :html ], [String] )
|
|
680
|
+
add_attribute :longdesc, Attribute.create( [ :html ], [String] )
|
|
681
|
+
add_attribute :value, Attribute.create( [ :html ] )
|
|
682
|
+
add_attribute :shape, Attribute.create( [ :html ] )
|
|
683
|
+
add_attribute :coords,Attribute.create( [ :html ] )
|
|
684
|
+
add_attribute :target, Attribute.create( [ :html ], [ '_blank', '_parent', '_self', '_top' ] )
|
|
685
|
+
add_attributes HTML_ATTR_ALL
|
|
686
|
+
add_html_tag 'a'
|
|
366
687
|
def to_wiki( options = {} )
|
|
367
688
|
"[#{@attr[:href].to_s} #{@content.to_doc(:wiki, options)}]"
|
|
368
689
|
end
|
|
@@ -387,82 +708,118 @@ class Href < Element
|
|
|
387
708
|
end
|
|
388
709
|
end
|
|
389
710
|
|
|
390
|
-
|
|
391
|
-
|
|
392
|
-
#~ :hreflang => ATTR_LANG,
|
|
393
|
-
#~ :alt => Attribute.create( [ :html ], [String], 2 ),
|
|
394
|
-
#~ :name => Attribute.create( [ :html ], [String] ),
|
|
395
|
-
#~ :longdesc => Attribute.create( [ :html ], [String] ),
|
|
396
|
-
#~ :value => Attribute.create( [ :html ] ),
|
|
397
|
-
#~ :shape => Attribute.create( [ :html ] ),
|
|
398
|
-
#~ :coords => Attribute.create( [ :html ] ),
|
|
399
|
-
#~ :target => Attribute.create( [ :html ], [ '_blank', '_parent', '_self', '_top' ] ),
|
|
400
|
-
#~ }.update( HTML_ATTR_ALL ),
|
|
401
|
-
#~ true,
|
|
402
|
-
#~ {
|
|
403
|
-
#~ :htmltag => 'a',
|
|
404
|
-
#~ :latex => '\href{#{@attr[:href]}}{#{@content}}',
|
|
405
|
-
#~ } )
|
|
406
|
-
|
|
407
|
-
Element.create( [ :label ],
|
|
408
|
-
{
|
|
409
|
-
:name => Attribute.create( [ :html, :latex, :required ] ),
|
|
410
|
-
}.update( HTML_ATTR_ALL ),
|
|
411
|
-
true,
|
|
412
|
-
{
|
|
413
|
-
#~ :htmltag => 'a',
|
|
414
|
-
:html => '#{linebreak(@crbefore)}<a name="#{@attr[:name]}">#{linebreak(@crmid)}#{@content}</a>#{linebreak(@crafter)}',
|
|
415
|
-
:latex => '#{linebreak(@crbefore)}\label{#{@attr[:name]}}#{linebreak(@crmid)}\hypertarget{#{@attr[:name]}}{#{@content}}#{linebreak(@crafter)}',
|
|
416
|
-
:text => '(#{@attr[:name]}) #{@content}',
|
|
417
|
-
:wiki => '#{linebreak(@crbefore)}[[??#{@attr[:name]}]]#{@content}#{linebreak(@crafter)}', #fixme wrong
|
|
418
|
-
} )
|
|
419
|
-
|
|
420
|
-
Element.create( [ :hypertarget ],
|
|
421
|
-
{ :href => Attribute.create( [ :html, :required ] ),
|
|
422
|
-
:alt => Attribute.create( [ :html ] ),
|
|
423
|
-
:longdesc => Attribute.create( [ :html ] ),
|
|
424
|
-
:value => Attribute.create( [ :html ] ),
|
|
425
|
-
:shape => Attribute.create( [ :html ] ),
|
|
426
|
-
:coords => Attribute.create( [ :html ] ),
|
|
427
|
-
}.update( HTML_ATTR_ALL ),
|
|
428
|
-
true,
|
|
429
|
-
{
|
|
430
|
-
#~ :htmltag => 'a',
|
|
431
|
-
:latex => '#{linebreak(@crbefore)}\hypertarget{#{@attr[:href]}}{#{@content}}#{linebreak(@crafter)}',
|
|
432
|
-
} )
|
|
433
|
-
|
|
434
|
-
Element.create( [ :link ],
|
|
435
|
-
{ :href => Attribute.create( [ :html, :required ], nil, 1 ),
|
|
436
|
-
:rel => Attribute.create( [ :html ], [String], 2 ),
|
|
437
|
-
:title => Attribute.create( [ :html ], nil, 3 ),
|
|
438
|
-
:type => Attribute.create( [ :html ], nil, 4 ),
|
|
439
|
-
}.update( HTML_ATTR_ALL ),
|
|
440
|
-
ENDTAG,
|
|
441
|
-
{
|
|
442
|
-
:htmltag => 'link',
|
|
443
|
-
#~ :latex => '',
|
|
444
|
-
} )
|
|
711
|
+
=begin rdoc
|
|
712
|
+
Define Element :label
|
|
445
713
|
|
|
446
|
-
|
|
714
|
+
Create an instance with
|
|
715
|
+
element( :label, [ attributes, [content]] )
|
|
716
|
+
or
|
|
717
|
+
Label.new( [ attributes, [content]] )
|
|
718
|
+
Attributes may be:
|
|
719
|
+
* :name:
|
|
720
|
+
* HTML_ATTR_CORE
|
|
721
|
+
* HTML_ATTR_I18N
|
|
722
|
+
* HTML_ATTR_EVENTS
|
|
723
|
+
* ATTR_LANG
|
|
724
|
+
=end
|
|
725
|
+
class Label < Element
|
|
726
|
+
add_attributes HTML_ATTR_CORE
|
|
727
|
+
add_attributes HTML_ATTR_I18N
|
|
728
|
+
add_attributes HTML_ATTR_EVENTS
|
|
729
|
+
add_attribute :lang, ATTR_LANG
|
|
730
|
+
add_attribute :name, Attribute.create( [ :html, :latex, :required ] )
|
|
731
|
+
add_html_output '#{linebreak(@crbefore)}<a name="#{@attr[:name]}">#{linebreak(@crmid)}#{@content}</a>#{linebreak(@crafter)}'
|
|
732
|
+
add_latex_output '#{linebreak(@crbefore)}\label{#{@attr[:name]}}#{linebreak(@crmid)}\hypertarget{#{@attr[:name]}}{#{@content}}#{linebreak(@crafter)}'
|
|
733
|
+
add_text_output '(#{@attr[:name]}) #{@content}'
|
|
734
|
+
add_wiki_output '#{linebreak(@crbefore)}[[??#{@attr[:name]}]]#{@content}#{linebreak(@crafter)}'
|
|
735
|
+
end #Label
|
|
736
|
+
|
|
737
|
+
=begin rdoc
|
|
738
|
+
Define Element :hypertarget
|
|
739
|
+
|
|
740
|
+
Create an instance with
|
|
741
|
+
element( :hypertarget, [ attributes, [content]] )
|
|
742
|
+
or
|
|
743
|
+
Hypertarget.new( [ attributes, [content]] )
|
|
744
|
+
Attributes may be:
|
|
745
|
+
* :href:
|
|
746
|
+
* :alt:
|
|
747
|
+
* :longdesc:
|
|
748
|
+
* :value:
|
|
749
|
+
* :shape:
|
|
750
|
+
* :coords:
|
|
751
|
+
* HTML_ATTR_CORE
|
|
752
|
+
* HTML_ATTR_I18N
|
|
753
|
+
* HTML_ATTR_EVENTS
|
|
754
|
+
* ATTR_LANG
|
|
755
|
+
=end
|
|
756
|
+
class Hypertarget < Element
|
|
757
|
+
add_attributes HTML_ATTR_CORE
|
|
758
|
+
add_attributes HTML_ATTR_I18N
|
|
759
|
+
add_attributes HTML_ATTR_EVENTS
|
|
760
|
+
add_attribute :lang, ATTR_LANG
|
|
761
|
+
add_attribute :href, Attribute.create( [ :html, :required ] )
|
|
762
|
+
add_attribute :alt, Attribute.create( [ :html ] )
|
|
763
|
+
add_attribute :longdesc, Attribute.create( [ :html ] )
|
|
764
|
+
add_attribute :value, Attribute.create( [ :html ] )
|
|
765
|
+
add_attribute :shape, Attribute.create( [ :html ] )
|
|
766
|
+
add_attribute :coords, Attribute.create( [ :html ] )
|
|
767
|
+
add_latex_output '#{linebreak(@crbefore)}\hypertarget{#{@attr[:href]}}{#{@content}}#{linebreak(@crafter)}'
|
|
768
|
+
end #Hypertarget
|
|
769
|
+
|
|
770
|
+
|
|
771
|
+
=begin rdoc
|
|
772
|
+
Define Element :link
|
|
773
|
+
|
|
774
|
+
Create an instance with
|
|
775
|
+
element( :link, [ attributes, [content]] )
|
|
776
|
+
or
|
|
777
|
+
Link.new( [ attributes, [content]] )
|
|
778
|
+
Attributes may be:
|
|
779
|
+
* :href:
|
|
780
|
+
* :rel:
|
|
781
|
+
* :title:
|
|
782
|
+
* :type:
|
|
783
|
+
* :lang:
|
|
784
|
+
* HTML_ATTR_CORE
|
|
785
|
+
* HTML_ATTR_I18N
|
|
786
|
+
* HTML_ATTR_EVENTS
|
|
787
|
+
* ATTR_LANG
|
|
788
|
+
=end
|
|
789
|
+
class Link < Element
|
|
790
|
+
has_no_content
|
|
791
|
+
add_attributes HTML_ATTR_CORE
|
|
792
|
+
add_attributes HTML_ATTR_I18N
|
|
793
|
+
add_attributes HTML_ATTR_EVENTS
|
|
794
|
+
add_attribute :lang, ATTR_LANG
|
|
795
|
+
add_attribute :href, Attribute.create( [ :html, :required ], nil, 1 )
|
|
796
|
+
add_attribute :rel, Attribute.create( [ :html ], [String], 2 )
|
|
797
|
+
add_attribute :title, Attribute.create( [ :html ], nil, 3 )
|
|
798
|
+
add_attribute :type, Attribute.create( [ :html ], nil, 4 )
|
|
799
|
+
add_html_tag 'link'
|
|
800
|
+
end #Link
|
|
447
801
|
|
|
448
802
|
#
|
|
449
|
-
|
|
450
|
-
|
|
451
|
-
|
|
452
|
-
|
|
453
|
-
|
|
803
|
+
|
|
804
|
+
=begin rdoc
|
|
805
|
+
Add a TeX-Makro usepackage.
|
|
806
|
+
|
|
807
|
+
This method tries to load the package specific definitions in a file
|
|
808
|
+
docgenerator_<<packagename>>
|
|
809
|
+
=end
|
|
454
810
|
class Usepackage < Element
|
|
455
|
-
#Make the key known to the complete key-list of elements.
|
|
456
|
-
Element.add( [:usepackage], Usepackage)
|
|
457
811
|
#~ add_attributes( HTML_ATTR_ALL )
|
|
458
|
-
|
|
812
|
+
add_attribute :option, Attribute.create( )
|
|
459
813
|
|
|
460
|
-
|
|
461
|
-
|
|
814
|
+
=begin rdoc
|
|
815
|
+
With usepackage additional command may be defined.
|
|
816
|
+
|
|
817
|
+
Here we load this special commands/elements if available.
|
|
818
|
+
=end
|
|
462
819
|
def << ( content )
|
|
463
820
|
@content << content
|
|
464
821
|
#Load new additionals makros if available
|
|
465
|
-
makrodefinitions = 'packages/
|
|
822
|
+
makrodefinitions = 'docgenerator/packages/' + content + '.rb'
|
|
466
823
|
begin
|
|
467
824
|
@log.debug("usepackage: Try to load #{makrodefinitions}") if @log.debug?
|
|
468
825
|
require makrodefinitions
|
|
@@ -471,9 +828,11 @@ class Usepackage < Element
|
|
|
471
828
|
end
|
|
472
829
|
end
|
|
473
830
|
|
|
474
|
-
|
|
475
|
-
|
|
476
|
-
|
|
831
|
+
=begin rdoc
|
|
832
|
+
Redefine standard output.
|
|
833
|
+
Options are given, if an option is available.
|
|
834
|
+
=end
|
|
835
|
+
#~ add_latex_output '\usepackage[#{@attr[:option]}]{#{@content}}'
|
|
477
836
|
def to_latex( options = {} )
|
|
478
837
|
cmd = linebreak(@crbefore)
|
|
479
838
|
cmd << '\usepackage'
|
|
@@ -483,6 +842,9 @@ class Usepackage < Element
|
|
|
483
842
|
cmd << linebreak(@crafter)
|
|
484
843
|
return cmd
|
|
485
844
|
end
|
|
845
|
+
=begin rdoc
|
|
846
|
+
Not used in HTML
|
|
847
|
+
=end
|
|
486
848
|
def to_html( options = {} )
|
|
487
849
|
return ''
|
|
488
850
|
end
|
|
@@ -492,147 +854,416 @@ end #Usepackage
|
|
|
492
854
|
|
|
493
855
|
#~ :em => {}, #complete it
|
|
494
856
|
#~ :code => {}, #complete it
|
|
495
|
-
Element.create( [:font], {
|
|
496
|
-
:size => Attribute.create([:html], [ Fixnum ]),
|
|
497
|
-
},true,
|
|
498
|
-
{ :htmltag => 'font',
|
|
499
|
-
#~ :latex => '\tiny ' #+ ' #{linebreak(@crafter)}'
|
|
500
|
-
} )
|
|
501
|
-
#Fixme: Jeweils :tinytex f�r ungeklammerte
|
|
502
|
-
Element.create( [:tiny ], {},true,
|
|
503
|
-
{ :html => '<span style="font-size:xx-small">#{@content}</span>',
|
|
504
|
-
:latex => '#{linebreak(@crbefore)}{\tiny #{@content}}#{linebreak(@crafter)}' #+ ' #{linebreak(@crafter)}'
|
|
505
|
-
} )
|
|
506
|
-
Element.create( [:scriptsize ], {},true,
|
|
507
|
-
{ :html => '<span style="font-size:x-small">#{@content}</span>',
|
|
508
|
-
:latex => '#{linebreak(@crbefore)}{\scriptsize #{@content}}#{linebreak(@crafter)}' #+ ' #{linebreak(@crafter)}'
|
|
509
|
-
} )
|
|
510
|
-
Element.create( [:footnotesize ], {},true,
|
|
511
|
-
{ :html => '<span style="font-size:x-small">#{@content}</span>',
|
|
512
|
-
:latex => '#{linebreak(@crbefore)}{\footnotesize #{@content}}#{linebreak(@crafter)}' #+ ' #{linebreak(@crafter)}'
|
|
513
|
-
} )
|
|
514
|
-
#fixme \small oder {\small ..}
|
|
515
|
-
Element.create( [:small ], {},true,
|
|
516
|
-
{ #:html => '<span style="font-size:small">#{@content}</span>',
|
|
517
|
-
:htmltag => 'small',
|
|
518
|
-
:latex => '#{linebreak(@crbefore)}{\small #{@content}}#{linebreak(@crafter)}' #+ ' #{linebreak(@crafter)}'
|
|
519
|
-
} )
|
|
520
|
-
Element.create( [:normalsize ], {},true,
|
|
521
|
-
{ :html => '<span style="font-size:medium">#{@content}</span>',
|
|
522
|
-
:latex => '#{linebreak(@crbefore)}{\normalsize #{@content}}#{linebreak(@crafter)}' #+ ' #{linebreak(@crafter)}'
|
|
523
|
-
} )
|
|
524
|
-
Element.create( [:large ], {},true,
|
|
525
|
-
{ :html => '<span style="font-size:large">#{@content}</span>',
|
|
526
|
-
:latex => '#{linebreak(@crbefore)}{\large #{@content}}#{linebreak(@crafter)}' #+ ' #{linebreak(@crafter)}'
|
|
527
|
-
} )
|
|
528
|
-
Element.create( [:Large ], {},true,
|
|
529
|
-
{ :html => '<span style="font-size:x-large">#{@content}</span>',
|
|
530
|
-
:latex => '#{linebreak(@crbefore)}{\Large #{@content}}#{linebreak(@crafter)}' #+ ' #{linebreak(@crafter)}'
|
|
531
|
-
} )
|
|
532
|
-
Element.create( [:huge ], {},true,
|
|
533
|
-
{ :html => '<span style="font-size:xx-large">#{@content}</span>',
|
|
534
|
-
:latex => '#{linebreak(@crbefore)}{\huge #{@content}}#{linebreak(@crafter)}' #+ ' #{linebreak(@crafter)}'
|
|
535
|
-
} )
|
|
536
|
-
Element.create( [:Huge ], {},true,
|
|
537
|
-
{ :html => '<span style="font-size:xx-large">#{@content}</span>',
|
|
538
|
-
:latex => '#{linebreak(@crbefore)}{\Huge #{@content}}#{linebreak(@crafter)}' #+ ' #{linebreak(@crafter)}'
|
|
539
|
-
} )
|
|
540
|
-
|
|
541
|
-
Element.create( [:textbf, :strong ], {},true,
|
|
542
|
-
{ :htmltag => 'strong',
|
|
543
|
-
:latex => '#{linebreak(@crbefore)}\textbf{#{@content}}#{linebreak(@crafter)}',
|
|
544
|
-
:wiki => %q|#{linebreak(@crbefore)}'''#{@content}'''#{linebreak(@crafter)}|,
|
|
545
|
-
:text => '#{linebreak(@crbefore)}#{@content}#{linebreak(@crafter)}',
|
|
546
|
-
} )
|
|
547
|
-
Element.create( [:emph ], {},true,
|
|
548
|
-
{ :htmltag => 'em',
|
|
549
|
-
:latex => '#{linebreak(@crbefore)}\emph{#{@content}}#{linebreak(@crafter)}',
|
|
550
|
-
:wiki => '#{linebreak(@crbefore)}''#{@content}''#{linebreak(@crafter)}',
|
|
551
|
-
:text => '#{linebreak(@crbefore)}#{@content}#{linebreak(@crafter)}',
|
|
552
|
-
} )
|
|
553
|
-
|
|
554
|
-
Element.create( [:stroke ], {},true,
|
|
555
|
-
{ #:html => '<span style="font-size:small">#{@content}</span>',
|
|
556
|
-
:htmltag => 's',
|
|
557
|
-
#~ :latex => '#{linebreak(@crbefore)}{\stroke #{@content}}#{linebreak(@crafter)}' #+ ' #{linebreak(@crafter)}'
|
|
558
|
-
} )
|
|
559
|
-
|
|
560
|
-
Element.create( [:underline ], {},true,
|
|
561
|
-
{ #:html => '<span style="font-size:small">#{@content}</span>',
|
|
562
|
-
:htmltag => 'undeline',
|
|
563
|
-
:latex => '#{linebreak(@crbefore)}{\underline#{@content}}#{linebreak(@crafter)}' #+ ' #{linebreak(@crafter)}'
|
|
564
|
-
} )
|
|
565
|
-
|
|
566
|
-
Element.create( [:sup, :textsuperscript ], {}.update(HTML_ATTR_ALL),true,
|
|
567
|
-
{ :htmltag => 'sup',
|
|
568
|
-
:latex => '#{linebreak(@crbefore)}\textsuperscript{#{@content}}#{linebreak(@crafter)}',
|
|
569
|
-
:wiki => '#{linebreak(@crbefore)}^#{@content}^#{linebreak(@crafter)}',
|
|
570
|
-
:text => '#{linebreak(@crbefore)}^#{@content}^#{linebreak(@crafter)}'
|
|
571
|
-
} )
|
|
572
857
|
|
|
573
|
-
|
|
574
|
-
|
|
575
|
-
|
|
576
|
-
|
|
577
|
-
|
|
578
|
-
|
|
858
|
+
=begin rdoc
|
|
859
|
+
Define Element :font
|
|
860
|
+
|
|
861
|
+
Create an instance with
|
|
862
|
+
element( :font, [ attributes, [content]] )
|
|
863
|
+
or
|
|
864
|
+
Font.new( [ attributes, [content]] )
|
|
865
|
+
Attributes may be:
|
|
866
|
+
* :size:
|
|
867
|
+
=end
|
|
868
|
+
class Font < Element
|
|
869
|
+
add_attribute :size, Attribute.create([:html], [ Fixnum ])
|
|
870
|
+
add_html_tag 'font'
|
|
871
|
+
end #Font
|
|
872
|
+
|
|
873
|
+
=begin rdoc
|
|
874
|
+
Define Element :tiny
|
|
875
|
+
|
|
876
|
+
Create an instance with
|
|
877
|
+
element( :tiny, [ attributes, [content]] )
|
|
878
|
+
or
|
|
879
|
+
Tiny.new( [ attributes, [content]] )
|
|
880
|
+
Attributes are not defined for this element.
|
|
881
|
+
=end
|
|
882
|
+
class Tiny < Element
|
|
883
|
+
add_html_output '<span style="font-size:xx-small">#{@content}</span>'
|
|
884
|
+
add_latex_output '#{linebreak(@crbefore)}{\tiny #{@content}}#{linebreak(@crafter)}'
|
|
885
|
+
end #Tiny
|
|
886
|
+
|
|
887
|
+
=begin rdoc
|
|
888
|
+
Define Element :scriptsize
|
|
889
|
+
|
|
890
|
+
Create an instance with
|
|
891
|
+
element( :scriptsize, [ attributes, [content]] )
|
|
892
|
+
or
|
|
893
|
+
Scriptsize.new( [ attributes, [content]] )
|
|
894
|
+
Attributes are not defined for this element.
|
|
895
|
+
=end
|
|
896
|
+
class Scriptsize < Element
|
|
897
|
+
add_html_output '<span style="font-size:x-small">#{@content}</span>'
|
|
898
|
+
add_latex_output '#{linebreak(@crbefore)}{\scriptsize #{@content}}#{linebreak(@crafter)}'
|
|
899
|
+
end #Scriptsize
|
|
900
|
+
|
|
901
|
+
=begin rdoc
|
|
902
|
+
Define Element :footnotesize
|
|
903
|
+
|
|
904
|
+
Create an instance with
|
|
905
|
+
element( :footnotesize, [ attributes, [content]] )
|
|
906
|
+
or
|
|
907
|
+
Footnotesize.new( [ attributes, [content]] )
|
|
908
|
+
Attributes are not defined for this element.
|
|
909
|
+
=end
|
|
910
|
+
class Footnotesize < Element
|
|
911
|
+
add_html_output '<span style="font-size:x-small">#{@content}</span>'
|
|
912
|
+
add_latex_output '#{linebreak(@crbefore)}{\footnotesize #{@content}}#{linebreak(@crafter)}'
|
|
913
|
+
end #Footnotesize
|
|
914
|
+
|
|
915
|
+
=begin rdoc
|
|
916
|
+
Define Element :small
|
|
917
|
+
|
|
918
|
+
Create an instance with
|
|
919
|
+
element( :small, [ attributes, [content]] )
|
|
920
|
+
or
|
|
921
|
+
Small.new( [ attributes, [content]] )
|
|
922
|
+
Attributes are not defined for this element.
|
|
923
|
+
=end
|
|
924
|
+
class Small < Element
|
|
925
|
+
add_html_tag 'small'
|
|
926
|
+
add_latex_output '#{linebreak(@crbefore)}{\small #{@content}}#{linebreak(@crafter)}'
|
|
927
|
+
end #Small
|
|
928
|
+
|
|
929
|
+
=begin rdoc
|
|
930
|
+
Define Element :normalsize
|
|
931
|
+
|
|
932
|
+
Create an instance with
|
|
933
|
+
element( :normalsize, [ attributes, [content]] )
|
|
934
|
+
or
|
|
935
|
+
Normalsize.new( [ attributes, [content]] )
|
|
936
|
+
Attributes are not defined for this element.
|
|
937
|
+
=end
|
|
938
|
+
class Normalsize < Element
|
|
939
|
+
add_html_output '<span style="font-size:medium">#{@content}</span>'
|
|
940
|
+
add_latex_output '#{linebreak(@crbefore)}{\normalsize #{@content}}#{linebreak(@crafter)}'
|
|
941
|
+
end #Normalsize
|
|
942
|
+
|
|
943
|
+
=begin rdoc
|
|
944
|
+
Define Element :large
|
|
945
|
+
|
|
946
|
+
Create an instance with
|
|
947
|
+
element( :large, [ attributes, [content]] )
|
|
948
|
+
or
|
|
949
|
+
Large.new( [ attributes, [content]] )
|
|
950
|
+
Attributes are not defined for this element.
|
|
951
|
+
=end
|
|
952
|
+
class Large < Element
|
|
953
|
+
add_html_output '<span style="font-size:large">#{@content}</span>'
|
|
954
|
+
add_latex_output '#{linebreak(@crbefore)}{\large #{@content}}#{linebreak(@crafter)}'
|
|
955
|
+
end #Large
|
|
956
|
+
|
|
957
|
+
=begin rdoc
|
|
958
|
+
Define Element :Large
|
|
959
|
+
|
|
960
|
+
Create an instance with
|
|
961
|
+
element( :Large, [ attributes, [content]] )
|
|
962
|
+
or
|
|
963
|
+
LLarge.new( [ attributes, [content]] )
|
|
964
|
+
Attributes are not defined for this element.
|
|
965
|
+
=end
|
|
966
|
+
class LLarge < Element
|
|
967
|
+
add_id :Large
|
|
968
|
+
add_html_output '<span style="font-size:x-large">#{@content}</span>'
|
|
969
|
+
add_latex_output '#{linebreak(@crbefore)}{\Large #{@content}}#{linebreak(@crafter)}'
|
|
970
|
+
end #Large
|
|
971
|
+
|
|
972
|
+
=begin rdoc
|
|
973
|
+
Define Element :huge
|
|
974
|
+
|
|
975
|
+
Create an instance with
|
|
976
|
+
element( :huge, [ attributes, [content]] )
|
|
977
|
+
or
|
|
978
|
+
Huge.new( [ attributes, [content]] )
|
|
979
|
+
Attributes are not defined for this element.
|
|
980
|
+
=end
|
|
981
|
+
class Huge < Element
|
|
982
|
+
add_html_output '<span style="font-size:xx-large">#{@content}</span>'
|
|
983
|
+
add_latex_output '#{linebreak(@crbefore)}{\huge #{@content}}#{linebreak(@crafter)}'
|
|
984
|
+
end #Huge
|
|
985
|
+
|
|
986
|
+
=begin rdoc
|
|
987
|
+
Define Element :Huge
|
|
988
|
+
|
|
989
|
+
Create an instance with
|
|
990
|
+
element( :Huge, [ attributes, [content]] )
|
|
991
|
+
or
|
|
992
|
+
Huge.new( [ attributes, [content]] )
|
|
993
|
+
Attributes are not defined for this element.
|
|
994
|
+
=end
|
|
995
|
+
class HHuge < Element
|
|
996
|
+
add_id :Huge
|
|
997
|
+
add_html_output '<span style="font-size:xx-large">#{@content}</span>'
|
|
998
|
+
add_latex_output '#{linebreak(@crbefore)}{\Huge #{@content}}#{linebreak(@crafter)}'
|
|
999
|
+
end #Huge
|
|
1000
|
+
|
|
1001
|
+
=begin rdoc
|
|
1002
|
+
Define Element :textbf, :strong
|
|
1003
|
+
|
|
1004
|
+
Create an instance with
|
|
1005
|
+
element( :textbf, [ attributes, [content]] )
|
|
1006
|
+
element( :strong, [ attributes, [content]] )
|
|
1007
|
+
or
|
|
1008
|
+
Textbf.new( [ attributes, [content]] )
|
|
1009
|
+
Attributes are not defined for this element.
|
|
1010
|
+
=end
|
|
1011
|
+
class Textbf < Element
|
|
1012
|
+
add_id :strong
|
|
1013
|
+
add_html_tag 'strong'
|
|
1014
|
+
add_latex_output '#{linebreak(@crbefore)}\textbf{#{@content}}#{linebreak(@crafter)}'
|
|
1015
|
+
add_wiki_output '#{linebreak(@crbefore)}'''#{@content}'''#{linebreak(@crafter)}'
|
|
1016
|
+
add_text_output '#{linebreak(@crbefore)}#{@content}#{linebreak(@crafter)}'
|
|
1017
|
+
end #Textbf
|
|
1018
|
+
|
|
1019
|
+
=begin rdoc
|
|
1020
|
+
Define Element :emph
|
|
1021
|
+
|
|
1022
|
+
Create an instance with
|
|
1023
|
+
element( :emph, [ attributes, [content]] )
|
|
1024
|
+
or
|
|
1025
|
+
Emph.new( [ attributes, [content]] )
|
|
1026
|
+
Attributes are not defined for this element.
|
|
1027
|
+
=end
|
|
1028
|
+
class Emph < Element
|
|
1029
|
+
add_html_tag 'em'
|
|
1030
|
+
add_latex_output '#{linebreak(@crbefore)}\emph{#{@content}}#{linebreak(@crafter)}'
|
|
1031
|
+
add_wiki_output '#{linebreak(@crbefore)}#{@content}#{linebreak(@crafter)}'
|
|
1032
|
+
add_text_output '#{linebreak(@crbefore)}#{@content}#{linebreak(@crafter)}'
|
|
1033
|
+
end #Emph
|
|
1034
|
+
|
|
1035
|
+
=begin rdoc
|
|
1036
|
+
Define Element :stroke
|
|
1037
|
+
|
|
1038
|
+
Create an instance with
|
|
1039
|
+
element( :stroke, [ attributes, [content]] )
|
|
1040
|
+
or
|
|
1041
|
+
Stroke.new( [ attributes, [content]] )
|
|
1042
|
+
Attributes are not defined for this element.
|
|
1043
|
+
|
|
1044
|
+
Not defined for LaTeX (use of xout-package?)
|
|
1045
|
+
=end
|
|
1046
|
+
class Stroke < Element
|
|
1047
|
+
add_html_tag 's'
|
|
1048
|
+
end #Stroke
|
|
1049
|
+
|
|
1050
|
+
=begin rdoc
|
|
1051
|
+
Define Element :underline
|
|
1052
|
+
|
|
1053
|
+
Create an instance with
|
|
1054
|
+
element( :underline, [ attributes, [content]] )
|
|
1055
|
+
or
|
|
1056
|
+
Underline.new( [ attributes, [content]] )
|
|
1057
|
+
Attributes are not defined for this element.
|
|
1058
|
+
=end
|
|
1059
|
+
class Underline < Element
|
|
1060
|
+
add_html_tag 'u'
|
|
1061
|
+
add_latex_output '#{linebreak(@crbefore)}\underline{#{@content}}#{linebreak(@crafter)}'
|
|
1062
|
+
end #Underline
|
|
1063
|
+
|
|
1064
|
+
=begin rdoc
|
|
1065
|
+
Define Element :sup, :textsuperscript
|
|
1066
|
+
|
|
1067
|
+
Create an instance with
|
|
1068
|
+
element( :sup, [ attributes, [content]] )
|
|
1069
|
+
element( :textsuperscript, [ attributes, [content]] )
|
|
1070
|
+
or
|
|
1071
|
+
Sup.new( [ attributes, [content]] )
|
|
1072
|
+
Attributes may be:
|
|
1073
|
+
* :lang:
|
|
1074
|
+
* HTML_ATTR_CORE, HTML_ATTR_I18N, HTML_ATTR_EVENTS
|
|
1075
|
+
=end
|
|
1076
|
+
class Sup < Element
|
|
1077
|
+
add_id :textsuperscript
|
|
1078
|
+
add_attributes HTML_ATTR_CORE
|
|
1079
|
+
add_attributes HTML_ATTR_I18N
|
|
1080
|
+
add_attributes HTML_ATTR_EVENTS
|
|
1081
|
+
add_attribute :lang, ATTR_LANG
|
|
1082
|
+
add_html_tag 'sup'
|
|
1083
|
+
add_latex_output '#{linebreak(@crbefore)}\textsuperscript{#{@content}}#{linebreak(@crafter)}'
|
|
1084
|
+
add_wiki_output '#{linebreak(@crbefore)}^#{@content}^#{linebreak(@crafter)}'
|
|
1085
|
+
add_text_output '#{linebreak(@crbefore)}^#{@content}^#{linebreak(@crafter)}'
|
|
1086
|
+
end #Sup
|
|
1087
|
+
=begin rdoc
|
|
1088
|
+
Define Element :sub
|
|
1089
|
+
|
|
1090
|
+
Create an instance with
|
|
1091
|
+
element( :sub, [ attributes, [content]] )
|
|
1092
|
+
or
|
|
1093
|
+
Sub.new( [ attributes, [content]] )
|
|
1094
|
+
Attributes may be:
|
|
1095
|
+
* :lang:
|
|
1096
|
+
* HTML_ATTR_CORE, HTML_ATTR_I18N, HTML_ATTR_EVENTS
|
|
1097
|
+
=end
|
|
1098
|
+
class Sub < Element
|
|
1099
|
+
add_attributes HTML_ATTR_CORE
|
|
1100
|
+
add_attributes HTML_ATTR_I18N
|
|
1101
|
+
add_attributes HTML_ATTR_EVENTS
|
|
1102
|
+
add_attribute :lang, ATTR_LANG
|
|
1103
|
+
add_html_tag 'sub'
|
|
1104
|
+
end #Sub
|
|
1105
|
+
|
|
1106
|
+
=begin rdoc
|
|
1107
|
+
Define Element :newpage
|
|
1108
|
+
|
|
1109
|
+
Create an instance with
|
|
1110
|
+
element( :newpage, [ attributes, [content]] )
|
|
1111
|
+
or
|
|
1112
|
+
Newpage.new( [ attributes, [content]] )
|
|
1113
|
+
Attributes are not defined for this element.
|
|
1114
|
+
=end
|
|
1115
|
+
class Newpage < Element
|
|
1116
|
+
has_no_content
|
|
1117
|
+
add_latex_output '#{linebreak(@crbefore)}\newpage #{linebreak(@crafter)}'
|
|
1118
|
+
end #Newpage
|
|
1119
|
+
|
|
1120
|
+
=begin rdoc
|
|
1121
|
+
Define Element :clearpage
|
|
1122
|
+
|
|
1123
|
+
Create an instance with
|
|
1124
|
+
element( :clearpage, [ attributes, [content]] )
|
|
1125
|
+
or
|
|
1126
|
+
Clearpage.new( [ attributes, [content]] )
|
|
1127
|
+
Attributes are not defined for this element.
|
|
1128
|
+
=end
|
|
1129
|
+
class Clearpage < Element
|
|
1130
|
+
has_no_content
|
|
1131
|
+
add_latex_output '#{linebreak(@crbefore)}\clearpage #{linebreak(@crafter)}'
|
|
1132
|
+
end #Clearpage
|
|
1133
|
+
|
|
1134
|
+
=begin rdoc
|
|
1135
|
+
Define Element :twocolumn
|
|
1136
|
+
|
|
1137
|
+
Create an instance with
|
|
1138
|
+
element( :twocolumn, [ attributes, [content]] )
|
|
1139
|
+
or
|
|
1140
|
+
Twocolumn.new( [ attributes, [content]] )
|
|
1141
|
+
Attributes are not defined for this element.
|
|
1142
|
+
=end
|
|
1143
|
+
class Twocolumn < Element
|
|
1144
|
+
has_no_content
|
|
1145
|
+
add_latex_output '#{linebreak(@crbefore)}\twocolumn #{linebreak(@crafter)}'
|
|
1146
|
+
end #Twocolumn
|
|
1147
|
+
|
|
1148
|
+
=begin rdoc
|
|
1149
|
+
Define Element :centering
|
|
1150
|
+
|
|
1151
|
+
Please check also Center.
|
|
1152
|
+
Maybe, thats the better soultion.
|
|
1153
|
+
|
|
1154
|
+
Create an instance with
|
|
1155
|
+
element( :centering, [ attributes, [content]] )
|
|
1156
|
+
or
|
|
1157
|
+
Centering.new( [ attributes, [content]] )
|
|
1158
|
+
Attributes are not defined for this element.
|
|
1159
|
+
|
|
1160
|
+
|
|
1161
|
+
fixme: TeX kein content, HTML hat content
|
|
1162
|
+
=end
|
|
1163
|
+
class Centering < Element
|
|
1164
|
+
has_no_content false
|
|
1165
|
+
add_html_tag 'center'
|
|
1166
|
+
add_latex_output '\centering #{linebreak(@crafter)}'
|
|
1167
|
+
end #Centering
|
|
1168
|
+
|
|
1169
|
+
|
|
1170
|
+
=begin rdoc
|
|
1171
|
+
Define Element :input
|
|
1172
|
+
|
|
1173
|
+
Only LaTeX
|
|
1174
|
+
|
|
1175
|
+
Create an instance with
|
|
1176
|
+
element( :input, [ attributes, [content]] )
|
|
1177
|
+
or
|
|
1178
|
+
Input.new( [ attributes, [content]] )
|
|
1179
|
+
Attributes are not defined for this element.
|
|
1180
|
+
=end
|
|
1181
|
+
class Input < Element
|
|
1182
|
+
add_latex_output '#{linebreak(@crbefore)}\input{#{@content}}#{linebreak(@crafter)}'
|
|
1183
|
+
end #Input
|
|
1184
|
+
|
|
1185
|
+
=begin rdoc
|
|
1186
|
+
Define Element :include
|
|
1187
|
+
|
|
1188
|
+
Create an instance with
|
|
1189
|
+
element( :include, [ attributes, [content]] )
|
|
1190
|
+
or
|
|
1191
|
+
Include.new( [ attributes, [content]] )
|
|
1192
|
+
Attributes are not defined for this element.
|
|
1193
|
+
=end
|
|
1194
|
+
class Include < Element
|
|
1195
|
+
add_latex_output '#{linebreak(@crbefore)}\include{#{@content}}#{linebreak(@crafter)}'
|
|
1196
|
+
end #Include
|
|
1197
|
+
|
|
1198
|
+
=begin rdoc
|
|
1199
|
+
Define Element :img, :includegraphics
|
|
1200
|
+
|
|
1201
|
+
Create an instance with
|
|
1202
|
+
element( :img, [ attributes, [content]] )
|
|
1203
|
+
element( :includegraphics, [ attributes, [content]] )
|
|
1204
|
+
or
|
|
1205
|
+
Img.new( [ attributes, [content]] )
|
|
1206
|
+
Attributes may be:
|
|
1207
|
+
* :src:
|
|
1208
|
+
* :alt:
|
|
1209
|
+
* :width: String for \textwidth... for HTML use CSS
|
|
1210
|
+
* :height: String for \textwidth... for HTML use CSS
|
|
1211
|
+
* :border:
|
|
1212
|
+
* :longdesc:
|
|
1213
|
+
* :usemap:
|
|
1214
|
+
* :name:
|
|
1215
|
+
* :angle:
|
|
1216
|
+
* :align:
|
|
1217
|
+
* :id:
|
|
1218
|
+
* :class:
|
|
1219
|
+
* :title:
|
|
1220
|
+
* HTML_ATTR_CORE
|
|
1221
|
+
=end
|
|
1222
|
+
class Img < Element
|
|
1223
|
+
add_id :includegraphics
|
|
1224
|
+
has_no_content ENDTAG
|
|
1225
|
+
add_attributes HTML_ATTR_CORE
|
|
1226
|
+
add_attribute :align, HTML_ATTR_ALIGN
|
|
1227
|
+
add_attribute :src, Attribute.create([:html, :latex, :required], [ String ], 1)
|
|
1228
|
+
add_attribute :alt, Attribute.create([:html], [String], 2 )
|
|
1229
|
+
add_attribute :width, Attribute.create([:texkeyval], [Integer, String] )#String for \textwidth... for HTML use CSS
|
|
1230
|
+
add_attribute :height, Attribute.create([:texkeyval], [Integer, String] )
|
|
1231
|
+
add_attribute :border, Attribute.create([:html], [Integer] )
|
|
1232
|
+
add_attribute :longdesc, Attribute.create([:html], [String] )
|
|
1233
|
+
add_attribute :usemap, Attribute.create([:html], [String] )
|
|
1234
|
+
add_attribute :name, Attribute.create([:html], [String] )
|
|
1235
|
+
add_attribute :angle, Attribute.create([:texkeyval], [Integer] )
|
|
1236
|
+
add_attribute :align, HTML_ATTR_ALIGN
|
|
1237
|
+
add_html_tag 'img'
|
|
1238
|
+
add_latex_output '#{linebreak(@crbefore)}\includegraphics[#{texkeyval}]{#{@attr[:src]}}#{linebreak(@crafter)}'
|
|
1239
|
+
end #Img
|
|
1240
|
+
|
|
1241
|
+
=begin rdoc
|
|
1242
|
+
Define Element :verb
|
|
1243
|
+
|
|
1244
|
+
Create an instance with
|
|
1245
|
+
element( :verb, [ attributes, [content]] )
|
|
1246
|
+
or
|
|
1247
|
+
Verb.new( [ attributes, [content]] )
|
|
1248
|
+
Attributes may be:
|
|
1249
|
+
* HTML_ATTR_CORE
|
|
1250
|
+
|
|
1251
|
+
See also Environments::Verbatim
|
|
1252
|
+
=end
|
|
1253
|
+
class Verb < Element
|
|
1254
|
+
add_attributes HTML_ATTR_CORE
|
|
1255
|
+
#This builds a new block
|
|
1256
|
+
#~ :htmltag => 'pre',
|
|
1257
|
+
#With "display: inline" the element is continued correct, but <pre starts on new line.
|
|
1258
|
+
#~ :html => '#{linebreak(@crbefore)}<pre style = "display: inline">#{@content}</pre>#{linebreak(@crafter)}',
|
|
1259
|
+
#fixme font tt
|
|
1260
|
+
#~ :html => '#{linebreak(@crbefore)}<span style = "display: inline;white-space:pre;font-family:monospace">#{@content}</span>#{linebreak(@crafter)}',
|
|
1261
|
+
add_html_output '#{linebreak(@crbefore)}<span style = "display: inline;white-space:pre;font-family:monospace">#{@content.join.gsub(/</, \'<\').gsub(/>/, \'>\')}</span>#{linebreak(@crafter)}'
|
|
1262
|
+
add_latex_output '#{linebreak(@crbefore)}\verb|#{@content}|#{linebreak(@crafter)}'
|
|
1263
|
+
add_text_output '#{linebreak(@crbefore)}#{@content}#{linebreak(@crafter)}'
|
|
1264
|
+
end #Verb
|
|
579
1265
|
|
|
580
|
-
Element.create( [:sub ], {}.update(HTML_ATTR_ALL),true,
|
|
581
|
-
{ :htmltag => 'sub',
|
|
582
|
-
#:latex => '\emph{#{@content}}'
|
|
583
|
-
} )
|
|
584
1266
|
|
|
585
|
-
|
|
586
|
-
Element.create( [:newpage ], {},false,
|
|
587
|
-
{ #:htmltag => '',
|
|
588
|
-
:latex => '#{linebreak(@crbefore)}\newpage #{linebreak(@crafter)}'
|
|
589
|
-
} )
|
|
590
|
-
Element.create( [:clearpage ], {},false,
|
|
591
|
-
{ #:htmltag => '',
|
|
592
|
-
:latex => '#{linebreak(@crbefore)}' + '\clearpage ' + ' #{linebreak(@crafter)}'
|
|
593
|
-
} )
|
|
594
|
-
Element.create( [:twocolumn ], {},false,
|
|
595
|
-
{ #:htmltag => '',
|
|
596
|
-
:latex => '#{linebreak(@crbefore)}' + '\twocolumn ' + ' #{linebreak(@crafter)}'
|
|
597
|
-
} )
|
|
598
|
-
#fixme: TeX kein content, HTML hat content
|
|
599
|
-
Element.create( [:centering ], {},false,
|
|
600
|
-
{ :htmltag => 'center',
|
|
601
|
-
:latex => '\centering ' + ' #{linebreak(@crafter)}'
|
|
602
|
-
} )
|
|
603
|
-
|
|
604
|
-
#~ :link => {}, #complete it
|
|
605
|
-
#~ :center => {}, #complete it
|
|
606
|
-
#~ :map => all.update({}), #complete it
|
|
607
|
-
#~ :area => all.update({}), #complete it
|
|
608
|
-
#~ :option=> {:value=>nil}, #complete it
|
|
609
|
-
#~ :select=> events.update({}), #complete it
|
|
610
|
-
|
|
611
|
-
Element.create( :input, {}, true, {
|
|
612
|
-
:latex => '#{linebreak(@crbefore)}\input{#{@content}}#{linebreak(@crafter)}'
|
|
613
|
-
} )
|
|
614
|
-
Element.create( :include, {}, true, {
|
|
615
|
-
:latex => '#{linebreak(@crbefore)}\include{#{@content}}#{linebreak(@crafter)}'
|
|
616
|
-
} )
|
|
617
|
-
|
|
618
|
-
|
|
619
|
-
Element.create( [:img, :includegraphics],
|
|
620
|
-
{
|
|
621
|
-
:src => Attribute.create([:html, :latex, :required], [ String ], 1),
|
|
622
|
-
:alt => Attribute.create([:html], [String], 2 ),
|
|
623
|
-
:style => Attribute.create([:html], [String] ),
|
|
624
|
-
:width => Attribute.create([:texkeyval], [Integer, String] ), #String for \textwidth... for HTML use CSS
|
|
625
|
-
:height => Attribute.create([:texkeyval], [Integer, String] ), #String for \textwidth... for HTML use CSS
|
|
626
|
-
:border => Attribute.create([:html], [Integer] ),
|
|
627
|
-
:longdesc => Attribute.create([:html], [String] ),
|
|
628
|
-
:usemap => Attribute.create([:html], [String] ),
|
|
629
|
-
:name => Attribute.create([:html], [String] ),
|
|
630
|
-
:angle => Attribute.create([:texkeyval], [Integer] ), #Rotation angle.
|
|
631
|
-
:align => HTML_ATTR_ALIGN,
|
|
632
|
-
}.update(HTML_ATTR_CORE), ENDTAG,
|
|
633
|
-
{ #:html => '<span style="font-size:xx-small">#{@content}</span>',
|
|
634
|
-
:htmltag => 'img',
|
|
635
|
-
:latex => '#{linebreak(@crbefore)}\includegraphics[#{texkeyval}]{#{@attr[:src]}}#{linebreak(@crafter)}'
|
|
636
|
-
}
|
|
637
|
-
)
|
|
638
1267
|
|
|
1268
|
+
end #module Elements
|
|
1269
|
+
end #module Docgenerator
|