erbook 8.0.0 → 9.0.0

Sign up to get free protection for your applications and to get access to all the features.
@@ -23,12 +23,13 @@
23
23
  * [Project home](<%= $website %>) --- the <%= $project %> project home page.
24
24
 
25
25
  To get help or provide feedback, simply
26
- <%= xref "License", "contact the author(s)" %>.
26
+ %= xref "License", "contact the author(s)."
27
27
 
28
28
 
29
29
  %|section "Features"
30
30
 
31
31
  <%= $project %> is exciting because:
32
+
32
33
  * Its documents are scriptable [eRuby templates](<%= eruby_url %>).
33
34
  * It lets you <%= xref "HelloWorld", "define your own document formats" %>.
34
35
  * It emits beautiful <%= xref "xhtml", "XHTML (web page)" %> documents.
@@ -47,11 +48,12 @@
47
48
 
48
49
  %|section "Credits" |n|
49
50
 
50
- %= $logo = n.xref_link("![#{$project} logo](#{$program}.png)".to_inline_xhtml)
51
+ %= $logo = n.xref_link("![#{$project} logo](#{$program}.png)".to_xhtml)
51
52
 
52
53
  %< "README"
53
54
 
54
- <%= $project %> is made possible by
55
+ %= $project
56
+ is made possible by
55
57
  %= xref "History", "contributions"
56
58
  from users like you:
57
59
 
@@ -26,14 +26,14 @@
26
26
  %|td
27
27
  Ruby language interpreter
28
28
  %|td
29
- Version 1.8.7 or newer is required.
29
+ Version 1.8.7 and 1.9.1 have been tested successfully.
30
30
  %|tr
31
31
  %|td
32
32
  [RubyGems](http://rubygems.org)
33
33
  %|td
34
34
  Ruby packaging system
35
35
  %|td
36
- Version 1.0.0 or newer is required.
36
+ Version 1.3.5 or newer is required.
37
37
 
38
38
 
39
39
  %|section "Installation"
@@ -44,20 +44,24 @@
44
44
 
45
45
  To check whether the installation was sucessful, run this command:
46
46
 
47
- <%= $program %> -v
47
+ <%= $program %> --version
48
48
 
49
49
  If the installation was successful, you will see output like this:
50
50
 
51
- <pre><%= verbatim `ruby bin/#{$program} -v` %></pre>
51
+ %|text
52
+ %= verbatim `ruby bin/#{$program} --version`
52
53
 
53
- Otherwise, you can <%= xref "License", "contact the author" %> for help.
54
+ If you do not see such output, you may
55
+ %= xref "License", "ask the author(s)"
56
+ for help.
54
57
 
55
58
 
56
59
  %|section "Package contents"
57
60
 
58
- You will see the following items inside <%= $project %>'s installation directory, whose path you can determine by running this command:
61
+ You will see the following items inside <%= $project %>'s installation
62
+ directory, whose path you can determine by running this command:
59
63
 
60
- <%= $program %> -v
64
+ <%= $program %> --version
61
65
 
62
66
  * <tt>bin/</tt>
63
67
 
@@ -78,15 +82,17 @@
78
82
 
79
83
  * <tt>rdoc.rb</tt> --- provides RDoc parse trees to Ruby code.
80
84
 
81
- * <tt>doc/</tt> --- contains this manual and other documentation.
85
+ * <tt>doc/</tt>
86
+
87
+ * <tt>api/</tt> --- API reference documentation.
82
88
 
83
89
  * <tt><%= $program %>.svg</tt> --- source file of the <%= $project %> logo.
84
90
 
85
91
  * <tt>index.erb</tt> --- source file of this manual.
86
92
 
87
- * <tt>api/</tt> --- API reference documentation.
93
+ * <tt>LICENSE</tt> --- copyright notice and legal conditions.
88
94
 
89
- * <tt>LICENSE</tt> --- project license and copyright notice.
95
+ * <tt>CREDITS</tt> --- attribution of project contributors.
90
96
 
91
97
 
92
98
  %|section "Version numbers"
@@ -367,7 +367,6 @@
367
367
  `String`
368
368
  %|td
369
369
  Path of the current format specification file.
370
- %|tr
371
370
 
372
371
  % output_template_table_builder.call lambda {
373
372
  %|tr
@@ -419,14 +418,16 @@
419
418
 
420
419
  %|example! "HelloWorld format specification file", "HelloWorld.spec"
421
420
 
422
- <code lang="rhtml"><%= verbatim File.read('doc/HelloWorld.spec') %></code>
421
+ %|code :rhtml
422
+ %= verbatim File.read('doc/HelloWorld.spec')
423
423
 
424
424
 
425
425
  %|example! "Input document for HelloWorld format", "HelloWorld.input"
426
426
 
427
427
  Note that this input document uses the [*shorthand* eRuby directive syntax](<%= Ember::WEBSITE %>#Directives) and the [implicit <tt><%% end %></tt> inference](<%= Ember::WEBSITE %>#Infer-block-endings) features of the [<%= Ember::PROJECT %>](<%= Ember::WEBSITE %>) <%= Ember::TAGLINE %>.
428
428
 
429
- <code lang="rhtml"><%= verbatim File.read('doc/HelloWorld.input') %></code>
429
+ %|code :rhtml
430
+ %= verbatim File.read('doc/HelloWorld.input')
430
431
 
431
432
 
432
433
  %|example! "Output of HelloWorld format", "HelloWorld.output"
@@ -8,7 +8,14 @@
8
8
 
9
9
  %|section "Command-line interface"
10
10
 
11
- <pre><%= `ruby bin/#{$program} -h` %></pre>
11
+ When you run this command:
12
+
13
+ <%= $program %> --help
14
+
15
+ You will see this output:
16
+
17
+ %|text
18
+ %= verbatim `ruby bin/#{$program} --help`
12
19
 
13
20
  The first command-line argument to <%= $project %> is either the name of a predefined format (FormatName) or the path to a <%= xref "SpecFile", "format specification file" %> (FormatFile).
14
21
 
@@ -33,9 +40,9 @@
33
40
  Otherwise, Microsoft web browsers _will not display_ your XHTML document and will instead prompt the reader to save your XHTML document as a file on their computer. See [this detailed explanation](http://www.howtocreate.co.uk/wrongWithIE/?chapter=XHTML) for details.
34
41
 
35
42
 
36
- %|section "Unindenting nodes hierarchically"
43
+ %|section "Unindenting nodes hierarchically"
37
44
 
38
- When writing <%= $project %> documents, I prefer to indent the content of nodes according to their depth because my [text editor of choice](http://jedit.org) automatically folds blocks of text based on indentation.
45
+ When writing <%= $project %> documents, I prefer to indent the content of nodes according to their depth because my [text editor of choice](http://jedit.org) automatically folds blocks of text based on indentation.
39
46
 
40
- If you also prefer to write documents in this way, be sure to pass the <tt>--unindent</tt> option to <%= $project %> so that the indentation will not affect the resulting output.
47
+ If you also prefer to write documents in this way, be sure to pass the <tt>--unindent</tt> option to <%= $project %> so that the indentation will not affect the resulting output.
41
48
 
@@ -9,7 +9,7 @@ code: |
9
9
  ICONS_DIR = File.join(ERBook::FORMATS_DIR, 'xhtml', 'icons')
10
10
  JQUERY_DIR = File.join(ERBook::FORMATS_DIR, 'xhtml', 'jquery')
11
11
 
12
- # load the String#to_xhtml and String#to_inline_xhtml methods
12
+ # load the String#to_xhtml methods
13
13
  require 'erbook/to_xhtml'
14
14
 
15
15
  class String
@@ -93,7 +93,7 @@ code: |
93
93
  data = base_64_encode_file(path)
94
94
 
95
95
  require 'mime/types'
96
- mime = MIME::Types.of(path)
96
+ mime = MIME::Types.of(path).to_a.join(',')
97
97
 
98
98
  base_64_embed data, mime
99
99
  end
@@ -124,15 +124,21 @@ code: |
124
124
  # Returns a CSS url() containing embedded image data.
125
125
  #
126
126
  def data_css
127
- %{url("#{data_uri}")}
127
+ %{url(#{embed_uri})}
128
128
  end
129
129
 
130
130
  ##
131
- # Returns an <img/> tag that renders an embedded data URI.
131
+ # Returns a temporary data URI that will be replaced
132
+ # with the actual data URI at runtime by javascript.
133
+ #
134
+ alias embed_uri object_id
135
+
136
+ ##
137
+ # Returns an image tag that renders an embedded data URI.
132
138
  #
133
139
  def to_xhtml atts = {}
134
140
  atts[:alt] ||= name
135
- atts[:src] = data_uri
141
+ atts[:src] = embed_uri
136
142
  atts[:class] = :icon
137
143
  "<img#{atts.to_xml_atts}/>"
138
144
  end
@@ -169,7 +175,7 @@ code: |
169
175
  end
170
176
 
171
177
  ##
172
- # Returns an <img/> tag that embeds the given image file.
178
+ # Returns an image tag that embeds the given image file.
173
179
  #
174
180
  # [path]
175
181
  # path to the image file
@@ -178,7 +184,7 @@ code: |
178
184
  # format of the image file (e.g. PNG, JPEG, GIF, etc.)
179
185
  #
180
186
  # [atts]
181
- # additional attributes for the <img> tag
187
+ # additional attributes for the image tag
182
188
  #
183
189
  def embed_image_file path, format = path[/\w+/], atts = {}
184
190
  data = ERBook.base_64_encode File.read(path)
@@ -186,7 +192,7 @@ code: |
186
192
  end
187
193
 
188
194
  ##
189
- # Returns an <img/> tag that embeds the given raw image data.
195
+ # Returns an image tag that embeds the given raw image data.
190
196
  #
191
197
  # [data]
192
198
  # raw image data
@@ -195,7 +201,7 @@ code: |
195
201
  # format of the image file (e.g. PNG, JPEG, GIF, etc.)
196
202
  #
197
203
  # [atts]
198
- # additional attributes for the <img> tag
204
+ # additional attributes for the image tag
199
205
  #
200
206
  def embed_image_data data, format, atts = {}
201
207
  atts[:src] = ERBook.base_64_embed_image_data(data, format)
@@ -242,7 +248,7 @@ code: |
242
248
  # Returns the title of this node as XHTML.
243
249
  #
244
250
  def title_xhtml
245
- title.to_s.to_inline_xhtml
251
+ title.to_s.to_xhtml
246
252
  end
247
253
 
248
254
  ##
@@ -253,10 +259,12 @@ code: |
253
259
  end
254
260
 
255
261
  ##
256
- # Returns the content of this node as inline XHTML.
262
+ # Returns the result of wrapping
263
+ # this node's content in the given
264
+ # tag and converting it into XHTML.
257
265
  #
258
- def content_inline_xhtml
259
- content.join.to_inline_xhtml
266
+ def wrap_content_xhtml tag, atts = {}
267
+ %{<#{tag}#{atts.to_xml_atts}>#{content.join}</#{tag}>}.to_xhtml
260
268
  end
261
269
 
262
270
  ##
@@ -321,7 +329,7 @@ code: |
321
329
  %{<div class="tabs"><ul>} +
322
330
 
323
331
  pc.map do |c|
324
- %{<li><a href="##{c.here_frag}">#{c.title.to_s.to_inline_xhtml}</a></li>}
332
+ %{<li><a href="##{c.here_frag}">#{c.title.to_s.to_xhtml}</a></li>}
325
333
  end.join +
326
334
 
327
335
  %{</ul>}
@@ -385,7 +393,7 @@ code: |
385
393
  [prefix, (%{"#{title}"} if label && title)].compact.join('. ')
386
394
  end
387
395
 
388
- label_xhtml = (label || title).to_s.to_inline_xhtml
396
+ label_xhtml = (label || title).to_s.to_xhtml
389
397
 
390
398
  %{<a class="xref" href="##{here_frag}" title="#{::ERB::Util.h caption}">#{label_xhtml}</a>}
391
399
  end
@@ -429,17 +437,28 @@ code: |
429
437
  nodes:
430
438
  # theory
431
439
 
432
- node: &wrapper
440
+ node: &node
433
441
  index: false
442
+ chain: false
434
443
  number: false
435
- inline: true
436
444
  silent: false
445
+ inline: true
437
446
  output: <%= @node.content_xhtml %>
438
447
 
448
+ text: &text
449
+ <<: *node
450
+ inline: false
451
+ output: <%= @node.wrap_content_xhtml :pre %>
452
+
453
+ code:
454
+ <<: *text
455
+ params: language
456
+ output: <%= @node.wrap_content_xhtml :code, :lang => @node.language %>
457
+
439
458
  # structure
440
459
 
441
460
  header: &header
442
- <<: *wrapper
461
+ <<: *node
443
462
  silent: true
444
463
 
445
464
  header_outside_above: &header_insert
@@ -460,7 +479,7 @@ nodes:
460
479
  footer_outside_below: *header_insert
461
480
 
462
481
  abstract:
463
- <<: *wrapper
482
+ <<: *node
464
483
  output: |
465
484
  <div id="<%= @node.type_frag %>">
466
485
  <h1 class="title"><%= @node.type_label %></h1>
@@ -471,9 +490,10 @@ nodes:
471
490
 
472
491
  part: &latex
473
492
  index: tree
493
+ chain: true
474
494
  number: section
475
- inline: false
476
495
  silent: false
496
+ inline: false
477
497
  params: [title, id]
478
498
  output: |
479
499
  <%= @node.parent_tabs_begin %>
@@ -521,11 +541,17 @@ nodes:
521
541
 
522
542
  float:
523
543
  index: list
544
+ chain: true
524
545
  number: ordinal
525
- inline: false
526
546
  silent: false
547
+ inline: false
527
548
  params: [title, id, type]
528
549
  output: |
550
+ <%
551
+ if @node.type == 'command' and @node.title
552
+ @node.title = "<tt>#{verbatim @node.title}</tt>"
553
+ end
554
+ %>
529
555
  <%= @node.parent_tabs_begin %>
530
556
  <div class="<%= @node.type %>" id="<%= @node.here_frag %>">
531
557
  <%= @node.navigation %>
@@ -544,22 +570,20 @@ nodes:
544
570
  # tables
545
571
 
546
572
  table: &table
547
- index: false
548
- number: false
549
- inline: true
550
- silent: false
573
+ <<: *node
574
+ inline: false
551
575
  params: [xml_atts]
552
576
  output: |
553
- <table border="1"<%=
577
+ <ins><table border="1"<%=
554
578
  (@node.xml_atts || {}).to_xml_atts
555
- %>><%= @node.content_xhtml %></table>
579
+ %>><%= @node.content_xhtml %></table></ins>
556
580
 
557
581
  thead: &table_child
558
582
  <<: *table
559
583
  output: |
560
584
  <<%= @node.type %><%=
561
585
  (@node.xml_atts || {}).to_xml_atts
562
- %>><%= @node.content_inline_xhtml %></<%= @node.type %>>
586
+ %>><%= @node.content_xhtml %></<%= @node.type %>>
563
587
 
564
588
  tbody: *table_child
565
589
  tfoot: *table_child
@@ -569,10 +593,7 @@ nodes:
569
593
 
570
594
  # cross-references
571
595
  xref:
572
- index: false
573
- number: false
574
- inline: true
575
- silent: false
596
+ <<: *node
576
597
  params: [query, label]
577
598
  output: |
578
599
  <%=
@@ -591,16 +612,14 @@ nodes:
591
612
 
592
613
  reference: &reference
593
614
  index: false
615
+ chain: false
594
616
  number: ordinal
595
- inline: false
596
617
  silent: true
618
+ inline: false
597
619
  params: [title, id]
598
620
 
599
621
  cite:
600
- index: false
601
- number: false
602
- inline: true
603
- silent: false
622
+ <<: *node
604
623
  params: [target]
605
624
  output: |
606
625
  <%=
@@ -644,7 +663,7 @@ output: |
644
663
  (n.section_number.to_s + '&nbsp;&nbsp;' if n.section_number),
645
664
  n.list_frag,
646
665
  n.here_frag,
647
- n.title.to_s.to_inline_xhtml
666
+ n.title.to_s.to_xhtml
648
667
  ]
649
668
 
650
669
  %{<li>#{entry}#{"<ul>#{nested}</ul>" if nested}</li>}
@@ -671,7 +690,7 @@ output: |
671
690
  lof_sections_frag_and_label = []
672
691
  lof = lof_enums.sort.map do |type, nodes|
673
692
  nested = nodes.map do |n|
674
- %{<li><a id="#{n.list_frag}" href="##{n.here_frag}">#{n.title.to_s.to_inline_xhtml}</a></li>}
693
+ %{<li><a id="#{n.list_frag}" href="##{n.here_frag}">#{n.title.to_s.to_xhtml}</a></li>}
675
694
  end.join
676
695
 
677
696
  label = ERBook::PHRASES[type.capitalize << 's']
@@ -681,8 +700,8 @@ output: |
681
700
  %{<div id="#{frag}"><h2 class="title">#{label}</h2> <ol>#{nested}</ol></div>}
682
701
  end
683
702
  %><?xml version="1.0" encoding="utf-8"?>
684
- <!DOCTYPE html PUBLIC "-//W3C//DTD XHTML 1.0 Transitional//EN"
685
- "http://www.w3.org/TR/xhtml1/DTD/xhtml1-transitional.dtd">
703
+ <!DOCTYPE html PUBLIC "-//W3C//DTD XHTML 1.0 Strict//EN"
704
+ "http://www.w3.org/TR/xhtml1/DTD/xhtml1-strict.dtd">
686
705
  <html xmlns="http://www.w3.org/1999/xhtml">
687
706
  <head>
688
707
  <meta http-equiv="content-type" content="text/html; charset=utf-8"/>
@@ -694,7 +713,7 @@ output: |
694
713
  % if $title || $subtitle
695
714
  <title><%=
696
715
  [$title, $subtitle].compact.map do |t|
697
- t.to_s.to_inline_xhtml
716
+ t.to_s.to_xhtml
698
717
  end.join(' &mdash; ')
699
718
  %></title>
700
719
 
@@ -722,36 +741,6 @@ output: |
722
741
 
723
742
  css
724
743
  %>
725
-
726
- .ui-widget
727
- {
728
- /* prevent nested widgets from having larger fonts */
729
- font-size: 1em;
730
- }
731
-
732
- .ui-tabs .ui-tabs-nav li.ui-tabs-selected a
733
- {
734
- cursor: pointer;
735
- }
736
-
737
- /* decorate external hyperlinks with a visual indicator */
738
- a[href]:not([href^="#"])
739
- {
740
- background : <%= ICON_BY_NAME['hyperlink'].data_css %>;
741
- background-position : center right;
742
- background-repeat : no-repeat;
743
- padding-right : 13px;
744
- }
745
-
746
- /* display icon for blockquote elements */
747
- blockquote
748
- {
749
- background-image : <%= ICON_BY_NAME['quote'].data_css %>;
750
- background-repeat : no-repeat;
751
- margin-left : 0;
752
- padding-left : 65px;
753
- min-height : 50px;
754
- }
755
744
  /*]]>*/
756
745
  </style>
757
746
 
@@ -789,11 +778,13 @@ output: |
789
778
  %>
790
779
 
791
780
  <div id="__loading__">
792
- <%= ERBook::PHRASES['Loading...'] %> <noscript><%= ERBook::PHRASES['Failed!'] %>
793
- <p><%= ERBook::PHRASES['Please enable JavaScript in your Web browser.'] %></p>
794
-
795
- %= text_only_browser_divider
796
- </noscript>
781
+ <%= ERBook::PHRASES['Loading...'] %> <noscript><%=
782
+ "<ins>%s</ins> <p>%s</p> %s" % [
783
+ ERBook::PHRASES['Failed!'],
784
+ ERBook::PHRASES['Please enable JavaScript in your Web browser.'],
785
+ text_only_browser_divider
786
+ ]
787
+ %></noscript>
797
788
  </div>
798
789
 
799
790
  <div id="__body__">
@@ -810,10 +801,10 @@ output: |
810
801
 
811
802
  <div class="title_and_subtitle">
812
803
  % if $title
813
- <h1 class="title"><%= $title.to_s.to_inline_xhtml %></h1>
804
+ <h1 class="title"><%= $title.to_s.to_xhtml %></h1>
814
805
 
815
806
  % if $subtitle
816
- <h2 class="subtitle"><%= $subtitle.to_s.to_inline_xhtml %></h2>
807
+ <h2 class="subtitle"><%= $subtitle.to_s.to_xhtml %></h2>
817
808
  </div>
818
809
 
819
810
  <div class="authors_and_date">
@@ -868,7 +859,7 @@ output: |
868
859
  <h1 style="display: none"><%= ERBook::PHRASES['Document'] %></h1>
869
860
  <ul>
870
861
  % @roots.select {|n| n.index_toc? }.each do |n|
871
- <li><a href="#<%= n.here_frag %>"><%= n.title.to_s.to_inline_xhtml %></a></li>
862
+ <li><a href="#<%= n.here_frag %>"><%= n.title.to_s.to_xhtml %></a></li>
872
863
  </ul>
873
864
 
874
865
  %= @content
@@ -938,7 +929,7 @@ output: |
938
929
  <p class="validations">
939
930
  <a href="http://validator.w3.org/check?uri=referer"><img
940
931
  src="http://www.w3.org/Icons/valid-xhtml10-blue"
941
- alt="Valid XHTML 1.0 Transitional" height="31" width="88" /></a>
932
+ alt="Valid XHTML 1.0 Strict" height="31" width="88" /></a>
942
933
 
943
934
  <a href="http://jigsaw.w3.org/css-validator/check/referer?profile=css3"><img
944
935
  src="http://jigsaw.w3.org/css-validator/images/vcss-blue"
@@ -1110,12 +1101,10 @@ javascript: |
1110
1101
  var target_is_panel = target.is('div') &&
1111
1102
  target.parent('.ui-tabs').length;
1112
1103
 
1113
- var target_initially_hidden = target.is(':hidden');
1114
-
1115
1104
  //
1116
1105
  // reveal all tabs which contain the target
1117
1106
  //
1118
- if (target_initially_hidden) {
1107
+ if (target.is(':hidden')) {
1119
1108
  var panels = target.parents('.ui-tabs > div:hidden').get().reverse();
1120
1109
 
1121
1110
  if (target_is_panel) {
@@ -1154,26 +1143,21 @@ javascript: |
1154
1143
  }
1155
1144
  }
1156
1145
 
1157
- var screen_before_scroll = $(window).scrollTop();
1146
+ var scroll_offset = scroll_target.offset().top;
1158
1147
 
1159
- $('html, body').animate(
1160
- { scrollTop: Math.floor(scroll_target.offset().top) },
1161
- 'slow', 'swing', function() {
1162
- var screen_after_scroll = $(window).scrollTop();
1148
+ //
1149
+ // set body height so that any element can be
1150
+ // brought to the top of the screen via scrolling
1151
+ //
1152
+ var document_height = $(document).height();
1153
+ var window_height = $(window).height();
1154
+ if (document_height - scroll_offset <= window_height) {
1155
+ $('body').css('min-height', document_height + window_height);
1156
+ }
1163
1157
 
1158
+ $('html, body').animate(
1159
+ { scrollTop: scroll_offset }, 'slow', 'swing', function() {
1164
1160
  set_hash(hash, target_is_panel);
1165
-
1166
- if (
1167
- !target_initially_hidden &&
1168
- screen_after_scroll == screen_before_scroll
1169
- ) {
1170
- //
1171
- // nothing changed on the screen.
1172
- // the target was already visible.
1173
- // highlight it to notify the user.
1174
- //
1175
- target.effect('highlight', 'slow');
1176
- }
1177
1161
  }
1178
1162
  );
1179
1163
  }
@@ -1251,6 +1235,44 @@ javascript: |
1251
1235
  ).append(" <%= ERBook::PHRASES['Printer friendly'] %>")
1252
1236
  );
1253
1237
 
1238
+ //
1239
+ // activate embedded data URIs
1240
+ //
1241
+ var data_uri_by_embed_uri = <%=
1242
+ result = {}
1243
+ ICONS.each do |icon|
1244
+ result[icon.embed_uri] = icon.data_uri
1245
+ end
1246
+
1247
+ require 'json'
1248
+ result.to_json
1249
+ %>;
1250
+
1251
+ $('img[src]').each(function() {
1252
+ var image = $(this);
1253
+ var data_uri = data_uri_by_embed_uri[image.attr('src')];
1254
+
1255
+ if (data_uri) {
1256
+ image.attr('src', data_uri);
1257
+ }
1258
+ });
1259
+
1260
+ $('style').each(function() {
1261
+ var style = $(this);
1262
+ var css = style.text();
1263
+
1264
+ if (css) {
1265
+ for (var embed_uri in data_uri_by_embed_uri) {
1266
+ var src = new RegExp('\\burl\\(' + embed_uri + '\\)', 'g');
1267
+ var dst = 'url("' + data_uri_by_embed_uri[embed_uri] + '")';
1268
+
1269
+ css = css.replace(src, dst);
1270
+ }
1271
+
1272
+ style.text(css);
1273
+ }
1274
+ });
1275
+
1254
1276
  //
1255
1277
  // ready for action!
1256
1278
  //
@@ -1283,6 +1305,11 @@ styles: # these are SASS templates
1283
1305
  blockquote
1284
1306
  color: #333
1285
1307
  font-style: italic
1308
+ background-image: <%= ICON_BY_NAME['quote'].data_css %>
1309
+ background-repeat: no-repeat
1310
+ margin-left: 0
1311
+ padding-left: 65px
1312
+ min-height: 50px
1286
1313
 
1287
1314
 
1288
1315
  hr
@@ -1301,12 +1328,11 @@ styles: # these are SASS templates
1301
1328
  code.para
1302
1329
  white-space: pre
1303
1330
 
1304
- ins > pre
1305
- text-decoration: none
1306
1331
 
1332
+ // proper container (according to XHTML validation) for
1333
+ // inserting block-level elements in arbitrary locations
1307
1334
  ins
1308
- // for IE only, because the above "ins > pre" does not work
1309
- .text-decoration: none
1335
+ text-decoration: none
1310
1336
 
1311
1337
 
1312
1338
  a > img
@@ -1468,6 +1494,15 @@ styles: # these are SASS templates
1468
1494
  clear: both
1469
1495
 
1470
1496
 
1497
+ .ui-widget
1498
+ // prevent nested widgets from having larger fonts
1499
+ font-size: 1em
1500
+
1501
+
1502
+ .ui-tabs .ui-tabs-nav li.ui-tabs-selected a
1503
+ cursor: pointer
1504
+
1505
+
1471
1506
  tt
1472
1507
  background-color: #F0F8FF
1473
1508
 
@@ -1517,16 +1552,17 @@ styles: # these are SASS templates
1517
1552
  &:visited
1518
1553
  color: #800080
1519
1554
 
1555
+ // decorate external hyperlinks with a visual indicator
1556
+ &[href]:not([href^="#"])
1557
+ background: <%= ICON_BY_NAME['hyperlink'].data_css %>
1558
+ background-position: center right
1559
+ background-repeat: no-repeat
1560
+ padding-right: 13px
1561
+
1520
1562
 
1521
1563
  #__header__ >
1522
1564
  .logo
1523
- float: left
1524
- margin-right: 1em
1525
- margin-top: 0.25em
1526
-
1527
- img
1528
- max-height: 4em
1529
- max-width: 4em
1565
+ text-align: center
1530
1566
 
1531
1567
  .title_and_subtitle
1532
1568
  float: left
@@ -1565,12 +1601,22 @@ styles: # these are SASS templates
1565
1601
 
1566
1602
  .nav
1567
1603
  float: right
1604
+ clear: right
1568
1605
 
1569
- > a > img
1570
- border-top: thick solid #FFFFFF
1606
+ > a > img:hover
1607
+ background-color: yellow
1571
1608
 
1572
- &:hover
1573
- border-top: thick solid #FA8072
1609
+
1610
+ // make navigation menu appear on the tab bar
1611
+ .ui-tabs > .ui-tabs-panel > .nav
1612
+ position: relative
1613
+ margin-top: -3.375em
1614
+ margin-right: -1em
1615
+
1616
+
1617
+ // prevent tabs on tab bar from ovelapping with the above navigation menu
1618
+ .ui-tabs > .ui-tabs-nav > li:last-child
1619
+ margin-right: 9em
1574
1620
 
1575
1621
 
1576
1622
  #__nfo__ > table td:first-child, #__nfo__ > .validations