erbook 7.1.1 → 7.3.0

Sign up to get free protection for your applications and to get access to all the features.
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