erbook 7.1.1 → 7.3.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/fmt/xhtml.yaml CHANGED
@@ -45,6 +45,15 @@ code: |
45
45
  end
46
46
  end.pack('U*').strip.gsub(/[[:space:]-]+/, '-')
47
47
  end
48
+
49
+ ##
50
+ # Evaluates this string as an Ember
51
+ # template (created with the given
52
+ # options) inside the given binding.
53
+ #
54
+ def thru_ember binding, options = {}
55
+ ::Ember::Template.new(self, options).render(binding)
56
+ end
48
57
  end
49
58
 
50
59
  class Hash
@@ -455,7 +464,6 @@ nodes:
455
464
  bypass: false
456
465
  output: |
457
466
  <div id="<%= @node.type_frag %>">
458
- <%= @node.navigation %>
459
467
  <h1 class="title"><%= @node.type_label %></h1>
460
468
  <%= @node.content_xhtml_div %>
461
469
  </div>
@@ -675,7 +683,7 @@ output: |
675
683
  lof = lof_enums.sort.map do |type, nodes|
676
684
  nested = nodes.map do |n|
677
685
  %{<li><a id="#{n.list_frag}" href="##{n.here_frag}">#{n.title.to_s.to_inline_xhtml}</a></li>}
678
- end
686
+ end.join
679
687
 
680
688
  label = ERBook::PHRASES[type.capitalize << 's']
681
689
  frag = nodes.first.type_frag
@@ -758,22 +766,18 @@ output: |
758
766
  /*]]>*/
759
767
  </style>
760
768
 
761
- % require 'rainpress'
762
769
  % @format['styles'].each do |style|
763
770
  % style.each_pair do |media, sass|
764
771
  <style type="text/css" media="<%= media %>">
765
772
  /*<![CDATA[*/<%=
766
773
 
767
774
  # expand eRuby directives in SASS templates
768
- sass = ::Ember::Template.new(sass).render(binding)
775
+ sass = sass.to_s.thru_ember(binding)
769
776
 
770
777
  # compile SASS into CSS
771
778
  require 'sass'
772
779
  css = ::Sass::Engine.new(sass).render
773
780
 
774
- # minify the CSS
775
- css = Rainpress.compress(css)
776
-
777
781
  %>/*]]>*/
778
782
  </style>
779
783
 
@@ -781,264 +785,10 @@ output: |
781
785
  //<![CDATA[
782
786
  %< File.join(JQUERY_DIR, 'jquery-1.3.2.min.js')
783
787
  %< File.join(JQUERY_DIR, 'jquery-ui-1.7.2.custom.min.js')
784
-
785
- $(function() {
786
- /*
787
- %< File.join(ERBook::INSTALL, 'LICENSE')
788
- */
789
-
790
- //
791
- // respond to changes in window location
792
- //
793
- var $last_hash = null;
794
-
795
- function on_hash_change() {
796
- var curr_hash = window.location.hash;
797
-
798
- if (curr_hash && curr_hash != $last_hash) {
799
- $last_hash = curr_hash;
800
- reveal_hash(curr_hash);
801
- }
802
-
803
- setTimeout(on_hash_change, 300);
804
- }
805
-
806
- //
807
- // Sets the location bar hash to the given value.
808
- //
809
- // [prevent_jump]
810
- // If true, prevents the browser from jumping to
811
- // the element corresponding to the given hash.
812
- //
813
- function set_hash(hash, prevent_jump) {
814
- if ($last_hash == hash) {
815
- return;
816
- }
817
-
818
- var set_the_hash = function() {
819
- //
820
- // XXX: bypass on_hash_change() by setting $last_hash
821
- //
822
- window.location.hash = $last_hash = hash;
823
- }
824
-
825
- if (prevent_jump) {
826
- var target = $(hash);
827
-
828
- if (target.length) {
829
- //
830
- // This particular approach to solving the browser
831
- // jumping problem comes from the jQuery.LocalScroll
832
- // plugin, which is dual licensed under MIT and GPL:
833
- //
834
- // Copyright (c) 2007-2009 Ariel Flesler - aflesler(at)gmail(dot)com | http://flesler.blogspot.com
835
- //
836
- // Permission is hereby granted, free of charge, to any person obtaining a copy
837
- // of this software and associated documentation files (the "Software"), to deal
838
- // in the Software without restriction, including without limitation the rights
839
- // to use, copy, modify, merge, publish, distribute, sublicense, and/or sell
840
- // copies of the Software, and to permit persons to whom the Software is
841
- // furnished to do so, subject to the following conditions:
842
- //
843
- // The above copyright notice and this permission notice shall be included in
844
- // all copies or substantial portions of the Software.
845
- //
846
- // THE SOFTWARE IS PROVIDED "AS IS", WITHOUT WARRANTY OF ANY KIND, EXPRESS OR
847
- // IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF MERCHANTABILITY,
848
- // FITNESS FOR A PARTICULAR PURPOSE AND NONINFRINGEMENT. IN NO EVENT SHALL THE
849
- // AUTHORS OR COPYRIGHT HOLDERS BE LIABLE FOR ANY CLAIM, DAMAGES OR OTHER
850
- // LIABILITY, WHETHER IN AN ACTION OF CONTRACT, TORT OR OTHERWISE, ARISING FROM,
851
- // OUT OF OR IN CONNECTION WITH THE SOFTWARE OR THE USE OR OTHER DEALINGS IN
852
- // THE SOFTWARE.
853
- //
854
- // This plugin is documented at:
855
- //
856
- // http://flesler.blogspot.com/2007/10/jquerylocalscroll-10.html
857
- //
858
- // And its source is available at:
859
- //
860
- // http://flesler-plugins.googlecode.com/svn/trunk/jquery.localScroll/jquery.localScroll.js
861
- //
862
- var target_id = target.attr('id');
863
-
864
- //
865
- // temporarily place a dummy element at the current
866
- // screen position and give it the ID of the target
867
- //
868
- var original_screen_position = $(window).scrollTop();
869
-
870
- var dummy = $('<span/>').attr('id', target_id).css({
871
- position: 'absolute',
872
- top: original_screen_position
873
- });
874
-
875
- target.removeAttr('id').before(dummy);
876
-
877
- //
878
- // when we set the hash, the browser will jump to the
879
- // dummy, which is where the browser screen currently
880
- // is, and therefore the jump will not be visualized!
881
- //
882
- set_the_hash();
883
-
884
- //
885
- // undo the temporary changes
886
- //
887
- dummy.remove();
888
- target.attr('id', target_id);
889
-
890
- //
891
- // the above approach does not work for Opera and IE.
892
- // they ignore the dummy and jump to the actual target
893
- //
894
- $(window).scrollTop(original_screen_position);
895
-
896
- return;
897
- }
898
- }
899
-
900
- set_the_hash();
901
- }
902
-
903
- //
904
- // Returns the tab corresponding to the
905
- // given panel in the given tabs widget.
906
- //
907
- function tab_by_panel(panel, tabs_widget) {
908
- if (!tabs_widget) {
909
- tabs_widget = panel.parent('.ui-tabs');
910
- }
911
-
912
- return tabs_widget.find(
913
- '.ui-tabs-nav > li > a[href=#'+ panel.attr('id') +']'
914
- ).parent('li');
915
- }
916
-
917
- //
918
- // Reveals the element at the given hash by (1) activating all
919
- // tabs that contain it, (2) smoothly scrolling to it, and (3)
920
- // updating the hash in the browser's location bar accordingly.
921
- //
922
- function reveal_hash(hash) {
923
- var target = $(hash);
924
-
925
- if (target.length) {
926
- var target_is_panel = target.is('div') &&
927
- target.parent('.ui-tabs').length;
928
-
929
- var target_initially_hidden = target.is(':hidden');
930
-
931
- //
932
- // reveal all tabs which contain the target
933
- //
934
- if (target_initially_hidden) {
935
- var panels = target.parents('.ui-tabs > div:hidden').get().reverse();
936
-
937
- if (target_is_panel) {
938
- panels.push(target);
939
- }
940
-
941
- for (var i in panels) {
942
- var panel = $(panels[i]);
943
- var tabs_widget = panel.parent('.ui-tabs');
944
- var selected_index = tabs_widget.tabs('option', 'selected');
945
-
946
- //
947
- // map the panel to its tab because tabs do not
948
- // have to be in the same order as their panels
949
- //
950
- var tab = tab_by_panel(panel, tabs_widget);
951
- var wanted_index = tab.prevAll('li').length;
952
-
953
- if (wanted_index != selected_index) {
954
- tabs_widget.tabs('select', wanted_index);
955
- }
956
- }
957
- }
958
-
959
- //
960
- // scroll to the tab bar instead of the target
961
- // because it contains the title for the target
962
- //
963
- var scroll_target = target_is_panel ?
964
- target.parent('.ui-tabs') : target;
965
-
966
- var screen_before_scroll = $(window).scrollTop();
967
-
968
- $('html, body').animate(
969
- { scrollTop: Math.floor(scroll_target.offset().top) },
970
- 'slow', 'swing', function() {
971
- var screen_after_scroll = $(window).scrollTop();
972
-
973
- set_hash(hash, target_is_panel);
974
-
975
- if (
976
- !target_initially_hidden &&
977
- screen_after_scroll == screen_before_scroll
978
- ) {
979
- //
980
- // nothing changed on the screen.
981
- // the target was already visible.
982
- // highlight it to notify the user.
983
- //
984
- target.effect('highlight', 'slow');
985
- }
986
- }
987
- );
988
- }
989
- }
990
-
991
- //
992
- // create jQuery UI tabs
993
- //
994
- $('.tabs').tabs();
995
-
996
- //
997
- // make internal hyperlinks reveal their targets when clicked
998
- //
999
- $('a[href^=#]').click(function() {
1000
- var link = $(this);
1001
- var hash = link.attr('href');
1002
-
1003
- if (link.parent('li').parent('.ui-tabs-nav').length) {
1004
- // tab clicks should not cause the screen to scroll
1005
- set_hash(hash, true);
1006
- }
1007
- else {
1008
- reveal_hash(hash);
1009
- }
1010
-
1011
- return false;
1012
- });
1013
-
1014
- //
1015
- // checkbox for printer friendly stylesheet
1016
- //
1017
- $('#__header__ > .authors_and_date').append(
1018
- $('<span/>').append(
1019
- $('<input/>').attr('type', 'checkbox').click(function() {
1020
- if ($(this).is(':checked')) {
1021
- $('style[media=screen]').attr('media', 'neercs');
1022
- $('style[media=print]').attr('media', 'screen');
1023
- }
1024
- else {
1025
- $('style[media=screen]').attr('media', 'print');
1026
- $('style[media=neercs]').attr('media', 'screen');
1027
- }
1028
- return true;
1029
- })
1030
- ).append(" <%= ERBook::PHRASES['Printer friendly'] %>")
1031
- );
1032
-
1033
- //
1034
- // ready for action!
1035
- //
1036
- $('#__loading__').append("<%= ERBook::PHRASES['Ready!'] %>").
1037
- fadeOut('slow', function() {
1038
- $('#__body__').show();
1039
- on_hash_change();
1040
- });
1041
- });
788
+ <%=
789
+ # expand eRuby directives in JavaScript template
790
+ js = @format['javascript'].to_s.thru_ember(binding)
791
+ %>
1042
792
  //]]>
1043
793
  </script>
1044
794
  </head>
@@ -1226,6 +976,302 @@ output: |
1226
976
  </body>
1227
977
  </html>
1228
978
 
979
+ javascript: |
980
+ $(function() {
981
+ /*
982
+ %< File.join(ERBook::INSTALL, 'LICENSE')
983
+ */
984
+
985
+ //
986
+ // respond to changes in window location
987
+ //
988
+ var $last_hash = null;
989
+
990
+ function on_hash_change() {
991
+ var curr_hash = window.location.hash;
992
+
993
+ if (curr_hash && curr_hash != $last_hash) {
994
+ $last_hash = curr_hash;
995
+ reveal_hash(curr_hash);
996
+ }
997
+
998
+ setTimeout(on_hash_change, 300);
999
+ }
1000
+
1001
+ //
1002
+ // Sets the location bar hash to the given value.
1003
+ //
1004
+ // [prevent_jump]
1005
+ // If true, prevents the browser from jumping to
1006
+ // the element corresponding to the given hash.
1007
+ //
1008
+ function set_hash(hash, prevent_jump) {
1009
+ if ($last_hash == hash) {
1010
+ return;
1011
+ }
1012
+
1013
+ var set_the_hash = function() {
1014
+ //
1015
+ // XXX: bypass on_hash_change() by setting $last_hash
1016
+ //
1017
+ window.location.hash = $last_hash = hash;
1018
+ }
1019
+
1020
+ if (prevent_jump) {
1021
+ var target = $(hash);
1022
+
1023
+ if (target.length) {
1024
+ //
1025
+ // This particular approach to solving the browser
1026
+ // jumping problem comes from the jQuery.LocalScroll
1027
+ // plugin, which is dual licensed under MIT and GPL:
1028
+ //
1029
+ // Copyright (c) 2007-2009 Ariel Flesler - aflesler(at)gmail(dot)com | http://flesler.blogspot.com
1030
+ //
1031
+ // Permission is hereby granted, free of charge, to any person obtaining a copy
1032
+ // of this software and associated documentation files (the "Software"), to deal
1033
+ // in the Software without restriction, including without limitation the rights
1034
+ // to use, copy, modify, merge, publish, distribute, sublicense, and/or sell
1035
+ // copies of the Software, and to permit persons to whom the Software is
1036
+ // furnished to do so, subject to the following conditions:
1037
+ //
1038
+ // The above copyright notice and this permission notice shall be included in
1039
+ // all copies or substantial portions of the Software.
1040
+ //
1041
+ // THE SOFTWARE IS PROVIDED "AS IS", WITHOUT WARRANTY OF ANY KIND, EXPRESS OR
1042
+ // IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF MERCHANTABILITY,
1043
+ // FITNESS FOR A PARTICULAR PURPOSE AND NONINFRINGEMENT. IN NO EVENT SHALL THE
1044
+ // AUTHORS OR COPYRIGHT HOLDERS BE LIABLE FOR ANY CLAIM, DAMAGES OR OTHER
1045
+ // LIABILITY, WHETHER IN AN ACTION OF CONTRACT, TORT OR OTHERWISE, ARISING FROM,
1046
+ // OUT OF OR IN CONNECTION WITH THE SOFTWARE OR THE USE OR OTHER DEALINGS IN
1047
+ // THE SOFTWARE.
1048
+ //
1049
+ // This plugin is documented at:
1050
+ //
1051
+ // http://flesler.blogspot.com/2007/10/jquerylocalscroll-10.html
1052
+ //
1053
+ // And its source is available at:
1054
+ //
1055
+ // http://flesler-plugins.googlecode.com/svn/trunk/jquery.localScroll/jquery.localScroll.js
1056
+ //
1057
+ var target_id = target.attr('id');
1058
+
1059
+ //
1060
+ // temporarily place a dummy element at the current
1061
+ // screen position and give it the ID of the target
1062
+ //
1063
+ var original_screen_position = $(window).scrollTop();
1064
+
1065
+ var dummy = $('<span/>').attr('id', target_id).css({
1066
+ position: 'absolute',
1067
+ top: original_screen_position
1068
+ });
1069
+
1070
+ target.removeAttr('id').before(dummy);
1071
+
1072
+ //
1073
+ // when we set the hash, the browser will jump to the
1074
+ // dummy, which is where the browser screen currently
1075
+ // is, and therefore the jump will not be visualized!
1076
+ //
1077
+ set_the_hash();
1078
+
1079
+ //
1080
+ // undo the temporary changes
1081
+ //
1082
+ dummy.remove();
1083
+ target.attr('id', target_id);
1084
+
1085
+ //
1086
+ // the above approach does not work for Opera and IE.
1087
+ // they ignore the dummy and jump to the actual target
1088
+ //
1089
+ $(window).scrollTop(original_screen_position);
1090
+
1091
+ return;
1092
+ }
1093
+ }
1094
+
1095
+ set_the_hash();
1096
+ }
1097
+
1098
+ //
1099
+ // Returns the tab corresponding to the
1100
+ // given panel in the given tabs widget.
1101
+ //
1102
+ function tab_by_panel(panel, tabs_widget) {
1103
+ if (!tabs_widget) {
1104
+ tabs_widget = panel.parent('.ui-tabs');
1105
+ }
1106
+
1107
+ return tabs_widget.find(
1108
+ '.ui-tabs-nav > li > a[href=#'+ panel.attr('id') +']'
1109
+ ).parent('li');
1110
+ }
1111
+
1112
+ //
1113
+ // Reveals the element at the given hash by (1) activating all
1114
+ // tabs that contain it, (2) smoothly scrolling to it, and (3)
1115
+ // updating the hash in the browser's location bar accordingly.
1116
+ //
1117
+ function reveal_hash(hash) {
1118
+ var target = $(hash);
1119
+
1120
+ if (target.length) {
1121
+ var target_is_panel = target.is('div') &&
1122
+ target.parent('.ui-tabs').length;
1123
+
1124
+ var target_initially_hidden = target.is(':hidden');
1125
+
1126
+ //
1127
+ // reveal all tabs which contain the target
1128
+ //
1129
+ if (target_initially_hidden) {
1130
+ var panels = target.parents('.ui-tabs > div:hidden').get().reverse();
1131
+
1132
+ if (target_is_panel) {
1133
+ panels.push(target);
1134
+ }
1135
+
1136
+ for (var i in panels) {
1137
+ var panel = $(panels[i]);
1138
+ var tabs_widget = panel.parent('.ui-tabs');
1139
+ var selected_index = tabs_widget.tabs('option', 'selected');
1140
+
1141
+ //
1142
+ // map the panel to its tab because tabs do not
1143
+ // have to be in the same order as their panels
1144
+ //
1145
+ var tab = tab_by_panel(panel, tabs_widget);
1146
+ var wanted_index = tab.prevAll('li').length;
1147
+
1148
+ if (wanted_index != selected_index) {
1149
+ tabs_widget.tabs('select', wanted_index);
1150
+ }
1151
+ }
1152
+ }
1153
+
1154
+ //
1155
+ // scroll to the tab bar instead of the target
1156
+ // because it contains the title for the target
1157
+ //
1158
+ var scroll_target = target;
1159
+
1160
+ if (target_is_panel) {
1161
+ var tabs_nav = target.parent('.ui-tabs').find('> .ui-tabs-nav');
1162
+
1163
+ if (!tabs_nav.is(':hidden')) {
1164
+ scroll_target = tabs_nav;
1165
+ }
1166
+ }
1167
+
1168
+ var screen_before_scroll = $(window).scrollTop();
1169
+
1170
+ $('html, body').animate(
1171
+ { scrollTop: Math.floor(scroll_target.offset().top) },
1172
+ 'slow', 'swing', function() {
1173
+ var screen_after_scroll = $(window).scrollTop();
1174
+
1175
+ set_hash(hash, target_is_panel);
1176
+
1177
+ if (
1178
+ !target_initially_hidden &&
1179
+ screen_after_scroll == screen_before_scroll
1180
+ ) {
1181
+ //
1182
+ // nothing changed on the screen.
1183
+ // the target was already visible.
1184
+ // highlight it to notify the user.
1185
+ //
1186
+ target.effect('highlight', 'slow');
1187
+ }
1188
+ }
1189
+ );
1190
+ }
1191
+ }
1192
+
1193
+ //
1194
+ // create jQuery UI tabs
1195
+ //
1196
+ $('.tabs').tabs();
1197
+
1198
+ //
1199
+ // make internal hyperlinks reveal their targets when clicked
1200
+ //
1201
+ $('a[href^=#]').click(function() {
1202
+ var link = $(this);
1203
+ var hash = link.attr('href');
1204
+
1205
+ if (link.parent('li').parent('.ui-tabs-nav').length) {
1206
+ // tab clicks should not cause the screen to scroll
1207
+ set_hash(hash, true);
1208
+ }
1209
+ else {
1210
+ reveal_hash(hash);
1211
+ }
1212
+
1213
+ return false;
1214
+ });
1215
+
1216
+ //
1217
+ // checkbox for printer friendly stylesheet
1218
+ //
1219
+ $('#__header__ > .authors_and_date').append(
1220
+ $('<span/>').addClass('printer_friendly_toggle').append(
1221
+ $('<input/>').attr('type', 'checkbox').click(function() {
1222
+ var checkbox = $(this);
1223
+
1224
+ function change_media(src, dst) {
1225
+ var styles = $('style[media="'+ src +'"]');
1226
+ if (styles.length) {
1227
+ //
1228
+ // try changing the media in-place
1229
+ //
1230
+ var before = checkbox.offset();
1231
+ styles.attr('media', dst);
1232
+ var after = checkbox.offset();
1233
+
1234
+ if (after.top == before.top && after.left == before.left) {
1235
+ //
1236
+ // try reinserting the <style> into document.
1237
+ // this works in Webkit browsers, which ignore
1238
+ // the in-place changing approach tried above.
1239
+ //
1240
+ styles.each(function() {
1241
+ var style = $(this);
1242
+ var parent = style.parent();
1243
+
1244
+ style.remove();
1245
+ parent.append(style);
1246
+ });
1247
+ }
1248
+ }
1249
+ }
1250
+
1251
+ if (checkbox.is(':checked')) {
1252
+ change_media('screen', 'none');
1253
+ change_media('print', 'screen,print');
1254
+ }
1255
+ else {
1256
+ change_media('screen,print', 'print');
1257
+ change_media('none', 'screen');
1258
+ }
1259
+
1260
+ return true;
1261
+ })
1262
+ ).append(" <%= ERBook::PHRASES['Printer friendly'] %>")
1263
+ );
1264
+
1265
+ //
1266
+ // ready for action!
1267
+ //
1268
+ $('#__loading__').append("<%= ERBook::PHRASES['Ready!'] %>").
1269
+ fadeOut('slow', function() {
1270
+ $('#__body__').show();
1271
+ on_hash_change();
1272
+ });
1273
+ });
1274
+
1229
1275
  # definition of font families for use in the CSS styles
1230
1276
  fonts:
1231
1277
  serif: Constantia, "Book Antiqua", "URW Bookman L", serif
@@ -1241,15 +1287,15 @@ styles: # these are SASS templates
1241
1287
  font-family: <%= @format['fonts']['sans-serif'] %>
1242
1288
 
1243
1289
 
1290
+ em, strong, dt
1291
+ font-family: <%= @format['fonts']['serif'] %>
1292
+
1293
+
1244
1294
  blockquote
1245
1295
  color: #333
1246
1296
  font-style: italic
1247
1297
 
1248
1298
 
1249
- em, strong, dt
1250
- font-family: <%= @format['fonts']['serif'] %>
1251
-
1252
-
1253
1299
  hr
1254
1300
  height: 0
1255
1301
  border: 0
@@ -1258,8 +1304,8 @@ styles: # these are SASS templates
1258
1304
 
1259
1305
  tt, code, pre
1260
1306
  font-family: <%= @format['fonts']['monospace'] %>
1261
- // appears like "size: small" otherwise
1262
- font-size: 100%
1307
+ font-size: 1em
1308
+ line-height: 1em
1263
1309
 
1264
1310
 
1265
1311
  // output of the syntax coloring library
@@ -1341,6 +1387,16 @@ styles: # these are SASS templates
1341
1387
  font-size: 2.25em
1342
1388
 
1343
1389
 
1390
+ @media print
1391
+ #__header__ .printer_friendly_toggle
1392
+ display: none
1393
+
1394
+
1395
+ @media screen
1396
+ #__header__ .printer_friendly_toggle
1397
+ display: inline
1398
+
1399
+
1344
1400
  #__abstract__
1345
1401
  margin-bottom: 5em
1346
1402
 
@@ -1351,10 +1407,6 @@ styles: # these are SASS templates
1351
1407
 
1352
1408
  li ul
1353
1409
  padding-bottom: 1em
1354
- border-left: thick solid #F5F5F5
1355
-
1356
- &:hover
1357
- border-color: #DCDCDC
1358
1410
 
1359
1411
  > ul
1360
1412
  padding-left: 1em
@@ -1477,13 +1529,6 @@ styles: # these are SASS templates
1477
1529
  color: #800080
1478
1530
 
1479
1531
 
1480
- #__toc__ a:target, #__lof__ a:target
1481
- background: <%= ICON_BY_NAME['here_frag'].data_css %>
1482
- background-position: center right
1483
- background-repeat: no-repeat
1484
- padding-right: 20px
1485
-
1486
-
1487
1532
  #__header__ >
1488
1533
  .logo
1489
1534
  float: left
@@ -1512,6 +1557,23 @@ styles: # these are SASS templates
1512
1557
  font-weight: lighter
1513
1558
 
1514
1559
 
1560
+ // visually indicate the current location in
1561
+ // the hierarchy as the cursor hovers about
1562
+ #__toc__
1563
+ li ul
1564
+ border-left: thick solid #F5F5F5
1565
+
1566
+ &:hover
1567
+ border-color: #DCDCDC
1568
+
1569
+
1570
+ #__toc__ a:target, #__lof__ a:target
1571
+ background: <%= ICON_BY_NAME['here_frag'].data_css %>
1572
+ background-position: center right
1573
+ background-repeat: no-repeat
1574
+ padding-right: 20px
1575
+
1576
+
1515
1577
  .nav
1516
1578
  float: right
1517
1579
 
@@ -1527,6 +1589,14 @@ styles: # these are SASS templates
1527
1589
 
1528
1590
 
1529
1591
  - print: |
1592
+ body
1593
+ font-family: <%= @format['fonts']['serif'] %>
1594
+
1595
+
1596
+ em, strong, dt
1597
+ font-family: <%= @format['fonts']['sans-serif'] %>
1598
+
1599
+
1530
1600
  tt
1531
1601
  font-weight: normal
1532
1602
 
@@ -1535,8 +1605,9 @@ styles: # these are SASS templates
1535
1605
  border: none
1536
1606
 
1537
1607
 
1538
- h1, h2, h3, h4, h5, h6
1608
+ h1, h2, h3, h4, h5, h6, .title
1539
1609
  font-weight: normal
1610
+ font-family: <%= @format['fonts']['sans-serif'] %>
1540
1611
  clear: both
1541
1612
 
1542
1613
 
@@ -1575,7 +1646,7 @@ styles: # these are SASS templates
1575
1646
  font-size: smaller
1576
1647
 
1577
1648
 
1578
- .tabs > ul, .nav, #__lof__, #__nfo__ > .validations
1649
+ .tabs > ul, .nav, #__lof__, #__nfo__
1579
1650
  display: none
1580
1651
 
1581
1652
 
@@ -1587,7 +1658,7 @@ styles: # these are SASS templates
1587
1658
  text-align: center
1588
1659
 
1589
1660
 
1590
- #__header__ > .authors
1661
+ #__header__ > .authors_and_date > .authors
1591
1662
  margin-top: 1.625em
1592
1663
  margin-bottom: -0.25em
1593
1664