├── doc
├── doc-site.css
├── doc-site.js
├── scribble-style.css
├── pollen-count
│ ├── synced.rktd
│ ├── blueboxes.rktd
│ ├── in.sxref
│ ├── out0.sxref
│ ├── out1.sxref
│ ├── provides.sxref
│ ├── stamp.sxref
│ └── index.html
├── manual-racket.js
├── racket.css
├── scribble-common.js
├── manual-racket.css
├── scribble.css
└── manual-style.css
├── scribblings
├── compiled
│ ├── pollen-count_scrbl.zo
│ └── pollen-count_scrbl.dep
└── pollen-count.scrbl
├── info.rkt
├── LICENSE.txt
├── main.rkt
└── README.md
/doc/doc-site.css:
--------------------------------------------------------------------------------
1 |
--------------------------------------------------------------------------------
/doc/doc-site.js:
--------------------------------------------------------------------------------
1 |
--------------------------------------------------------------------------------
/doc/scribble-style.css:
--------------------------------------------------------------------------------
1 |
--------------------------------------------------------------------------------
/doc/pollen-count/synced.rktd:
--------------------------------------------------------------------------------
1 |
--------------------------------------------------------------------------------
/doc/pollen-count/blueboxes.rktd:
--------------------------------------------------------------------------------
1 | 33
2 | ((3) 0 () 0 () () (h ! (equal)))
3 |
--------------------------------------------------------------------------------
/doc/pollen-count/in.sxref:
--------------------------------------------------------------------------------
https://raw.githubusercontent.com/malcolmstill/pollen-count/HEAD/doc/pollen-count/in.sxref
--------------------------------------------------------------------------------
/doc/pollen-count/out0.sxref:
--------------------------------------------------------------------------------
https://raw.githubusercontent.com/malcolmstill/pollen-count/HEAD/doc/pollen-count/out0.sxref
--------------------------------------------------------------------------------
/doc/pollen-count/out1.sxref:
--------------------------------------------------------------------------------
https://raw.githubusercontent.com/malcolmstill/pollen-count/HEAD/doc/pollen-count/out1.sxref
--------------------------------------------------------------------------------
/doc/pollen-count/provides.sxref:
--------------------------------------------------------------------------------
https://raw.githubusercontent.com/malcolmstill/pollen-count/HEAD/doc/pollen-count/provides.sxref
--------------------------------------------------------------------------------
/scribblings/compiled/pollen-count_scrbl.zo:
--------------------------------------------------------------------------------
https://raw.githubusercontent.com/malcolmstill/pollen-count/HEAD/scribblings/compiled/pollen-count_scrbl.zo
--------------------------------------------------------------------------------
/doc/pollen-count/stamp.sxref:
--------------------------------------------------------------------------------
1 | ("3ff8e463cd499905d79b3eb27925fc45d5d3a801cf5cf56ee0fb153fd289417b6b024a46c25f3311" "60bc64dee7164e38e3e30789a1e60cca07fb872e80d6a8bb7cad5f02b98fcd5a013c3b67f8f64e34" "78c9c50af1e7be87d9e1bf32c56c1f56e3fa8c14")
--------------------------------------------------------------------------------
/scribblings/pollen-count.scrbl:
--------------------------------------------------------------------------------
1 | #lang scribble/manual
2 | @require[@for-label[pollen-count
3 | racket/base]]
4 |
5 | @title{pollen-count}
6 | @author{Malcolm Still}
7 |
8 | @defmodule[pollen-count]
9 |
10 | Package Description Here
11 |
--------------------------------------------------------------------------------
/info.rkt:
--------------------------------------------------------------------------------
1 | #lang info
2 | (define collection "pollen-count")
3 | (define deps '("base"
4 | "rackunit-lib"
5 | "txexpr"))
6 | (define build-deps '("scribble-lib" "racket-doc"))
7 | (define scribblings '(("scribblings/pollen-count.scrbl" ())))
8 | (define pkg-desc "Counters and cross-referencing for use with pollen")
9 | (define version "0.1")
10 | (define pkg-authors '(mstill))
11 |
--------------------------------------------------------------------------------
/scribblings/compiled/pollen-count_scrbl.dep:
--------------------------------------------------------------------------------
1 | ("6.2" ("0f8ee13d17515990951520d62d6d3211ecb3b444" . "cf5cf56ee0fb153fd289417b6b024a46c25f3311") (collects #"pollen-count" #"main.rkt") (collects #"racket" #"runtime-config.rkt") (collects #"scribble" #"manual" #"lang.rkt") (collects #"racket" #"base.rkt") (indirect collects #"syntax" #"parse" #"private" #"runtime-report.rkt") (collects #"scribble" #"manual" #"lang" #"reader.rkt"))
2 |
--------------------------------------------------------------------------------
/LICENSE.txt:
--------------------------------------------------------------------------------
1 | pollen-count
2 | Copyright (c) 2015, Malcolm Still
3 | All rights reserved.
4 |
5 | Redistribution and use in source and binary forms, with or without modification, are permitted provided that the following conditions are met:
6 |
7 | 1. Redistributions of source code must retain the above copyright notice, this list of conditions and the following disclaimer.
8 |
9 | 2. Redistributions in binary form must reproduce the above copyright notice, this list of conditions and the following disclaimer in the documentation and/or other materials provided with the distribution.
10 |
11 | THIS SOFTWARE IS PROVIDED BY THE COPYRIGHT HOLDERS AND CONTRIBUTORS "AS IS" AND ANY EXPRESS OR IMPLIED WARRANTIES, INCLUDING, BUT NOT LIMITED TO, THE IMPLIED WARRANTIES OF MERCHANTABILITY AND FITNESS FOR A PARTICULAR PURPOSE ARE DISCLAIMED. IN NO EVENT SHALL THE COPYRIGHT HOLDER OR CONTRIBUTORS BE LIABLE FOR ANY DIRECT, INDIRECT, INCIDENTAL, SPECIAL, EXEMPLARY, OR CONSEQUENTIAL DAMAGES (INCLUDING, BUT NOT LIMITED TO, PROCUREMENT OF SUBSTITUTE GOODS OR SERVICES; LOSS OF USE, DATA, OR PROFITS; OR BUSINESS INTERRUPTION) HOWEVER CAUSED AND ON ANY THEORY OF LIABILITY, WHETHER IN CONTRACT, STRICT LIABILITY, OR TORT (INCLUDING NEGLIGENCE OR OTHERWISE) ARISING IN ANY WAY OUT OF THE USE OF THIS SOFTWARE, EVEN IF ADVISED OF THE POSSIBILITY OF SUCH DAMAGE.
12 |
--------------------------------------------------------------------------------
/main.rkt:
--------------------------------------------------------------------------------
1 | #lang racket
2 |
3 | (require txexpr
4 | racket/list
5 | racket/string
6 | racket/match
7 | racket/function
8 | (for-syntax racket/syntax))
9 |
10 | (provide Alpha
11 | alpha
12 | define-countable-tag
13 | reset-counter
14 | cross-reference)
15 |
16 | (define (Alpha i)
17 | (string (integer->char (+ 64 i))))
18 |
19 | (define (alpha i)
20 | (string (integer->char (+ 96 i))))
21 |
22 | (define (make-counter initial render [parent #f] [separator "."])
23 | (define count initial)
24 | (define prev-parent-count (if parent (parent 'count) #f))
25 | (λ (action)
26 | (when (and parent (not (= (parent 'count) prev-parent-count)))
27 | (set! prev-parent-count (parent 'count))
28 | (set! count initial))
29 | (match action
30 | ['count count]
31 | ['reset (set! count initial)]
32 | ['increment (set! count (+ count 1))]
33 | ['to-string (if parent
34 | (string-append (parent 'to-string) separator (render count))
35 | (render count))])))
36 |
37 | (define-syntax (reset-counter stx)
38 | (syntax-case stx ()
39 | [(_ tagname)
40 | (with-syntax ([tag-counter (format-id stx "~a-counter" #'tagname)])
41 | #'(tag-counter 'reset))]))
42 |
43 | (define label-map (hash))
44 | (define (clear-labelling)
45 | (set! label-map (hash)))
46 | (define (update-label-map label number)
47 | (set! label-map (hash-set label-map label number)))
48 |
49 | (define-syntax (define-countable-tag stx)
50 | (syntax-case stx ()
51 | [(_ (tagname a ... . rest) (initial render parent-tagname separator) (count) proc ...)
52 | (with-syntax ([tag-counter (format-id stx "~a-counter" #'tagname)]
53 | [parent-counter (if (symbol? (syntax->datum #'parent-tagname))
54 | (format-id stx "~a-counter" #'parent-tagname)
55 | #'parent-tagname)])
56 | #'(begin
57 | (define tag-counter (make-counter initial render parent-counter separator))
58 | (define (tagname #:label [label #f] a ... . rest)
59 | (tag-counter 'increment)
60 | (define count (tag-counter 'to-string))
61 | (if label
62 | (begin
63 | (update-label-map label count)
64 | (attr-set proc ... 'id label))
65 | proc ...))))]))
66 |
67 | (define (cross-reference doc)
68 | (define-values (d _)
69 | (splitf-txexpr doc
70 | (λ (x)
71 | (and (txexpr? x)
72 | (member (car x) '(ref hyperref))))
73 | (λ (x)
74 | (match x
75 | [(list 'hyperref text ref) `(a ((href ,(string-append "#" ref)))
76 | ,text ,(hash-ref label-map ref))]
77 | [(list 'hyperref ref) `(a ((href ,(string-append "#" ref)))
78 | ,(hash-ref label-map ref))]
79 | [(list 'ref ref) (hash-ref label-map ref)]))))
80 | (clear-labelling)
81 | d)
82 |
--------------------------------------------------------------------------------
/README.md:
--------------------------------------------------------------------------------
1 | pollen-count
2 | ============
3 |
4 | Installation
5 | ------------
6 | Installation at the command line:
7 |
8 | ```
9 | raco pkg install pollen-count
10 | ```
11 |
12 | Usage (typical)
13 | ---------------
14 |
15 | In `directory-require.rkt`:
16 | ```
17 | (require pollen-count)
18 | ```
19 |
20 | Elsewhere in `directory-require.rtk` define some tags:
21 | ```
22 | (define-countable-tag (section . xs) (0 number->string #f ".") (count)
23 | `(h2 ((id ,(symbol->string (gensym)))) ,count ". " ,@xs))
24 |
25 | (define-countable-tag (subsection . xs) (0 number->string section ".") (count)
26 | `(h3 ((id ,(symbol->string (gensym)))) ,count ". " ,@xs))
27 |
28 | (define-countable-tag (subsubsection . xs) (0 number->string subsection ".") (count)
29 | `(h4 ((id ,(symbol->string (gensym)))) ,count ". " ,@xs))
30 |
31 | (define-countable-tag (footnote . xs) (0 number->string #f ".") (count)
32 | `(p ((class "footnote")) ,count ". " ,@xs))
33 |
34 | (define-countable-tag (figure src #:width [width "90%"] . xs) (0 number->string #f ".") (count)
35 | `(figure
36 | (img ((width ,width) (src ,src)))
37 | (figcaption ,count ": " ,@xs)))
38 |
39 | (define-countable-tag (listing lang cap . xs) (0 number->string #f ".") (count)
40 | `(figure ((class "listing"))
41 | ,(apply highlight lang xs)
42 | ```
43 |
44 | In the `root` function within `directory-require.rkt` reset counters and call `cross-reference` on document `txexpr`:
45 |
46 | ```
47 | (define (root . xs)
48 | ...
49 | (reset-counter section)
50 | (reset-counter subsection)
51 | (reset-counter subsubsection)
52 | (reset-counter figure)
53 | (reset-counter listing)
54 | (reset-counter footnote)
55 |
56 | ...
57 | (cross-reference `(doc ,@xs))
58 | ...
59 | )
60 |
61 | ```
62 |
63 | These tags can then be used in .pms as follows:
64 | ```
65 | #lang pollen
66 |
67 | ◊section[#:label "sec:intro"]{Introduction}
68 |
69 | The ship's all yours. If the scanners pick up anything, report it immediately.
70 | All right, let's go. Hey down there, could you give us a hand with this?
71 | TX-four-one-two. Why aren't you at your post? TX-four-one-two, do you copy?
72 | Take over. We've got a bad transmitter. I'll see what I can do. You know,
73 | between his howling and your blasting everything in sight, it's a wonder the
74 | whole station doesn't know we're here. Bring them on! I prefer a straight
75 | fight to all this sneaking around. We found the computer outlet, sir. Plug in.
76 | He should be able to interpret the entire Imperial computer network.
77 |
78 | ◊section[]{Star Wars VII}
79 |
80 | As per ◊hyperref["Section "]{sec:intro} all troop carriers will assemble at
81 | the north entrance. The heavy transport ships will leave as soon as they're
82 | loaded. Only two fighter escorts per ship. The energy shield can only be
83 | opened for a short time, so you'll have to stay very close to your transports.
84 | Two fighters against a Star Destroyer? The ion cannon will fire several shots
85 | to make sure that any enemy ships will be out of your flight path. When
86 | you've gotten past the energy shield, proceed directly to the rendezvous
87 | point. Understood? Right. Okay. Good luck. Okay. Everyone to your stations.
88 | Let's go!◊sup{◊hyperref{foot:c3po}}
89 |
90 | ◊section{Footnotes}
91 |
92 | ◊footnote[#:label "foot:c3po"]{No, Threepio's with them. Just hang on.
93 | We're almost there. Mmmm. Oh, my. Uh, I, uh - Take this off! I, uh, don't
94 | mean to intrude here. I, don't, no, no, no...Please don't get up. No!
95 | Stormtroopers? Here? We're in danger. I must tell the others. Oh, no!
96 | I've been shot!}
97 |
98 | ```
99 |
--------------------------------------------------------------------------------
/doc/manual-racket.js:
--------------------------------------------------------------------------------
1 | /* For the Racket manual style */
2 |
3 | AddOnLoad(function() {
4 | /* Look for header elements that have x-source-module and x-part tag.
5 | For those elements, add a hidden element that explains how to
6 | link to the section, and set the element's onclick() to display
7 | the explanation. */
8 | var tag_names = ["h1", "h2", "h3", "h4", "h5"];
9 | for (var j = 0; j < tag_names.length; j++) {
10 | elems = document.getElementsByTagName(tag_names[j]);
11 | for (var i = 0; i < elems.length; i++) {
12 | var elem = elems.item(i);
13 | AddPartTitleOnClick(elem);
14 | }
15 | }
16 | })
17 |
18 | function AddPartTitleOnClick(elem) {
19 | var mod_path = elem.getAttribute("x-source-module");
20 | var tag = elem.getAttribute("x-part-tag");
21 | if (mod_path && tag) {
22 | // Might not be present:
23 | var prefixes = elem.getAttribute("x-part-prefixes");
24 |
25 | var info = document.createElement("div");
26 | info.className = "RPartExplain";
27 |
28 | /* The "top" tag refers to a whole document: */
29 | var is_top = (tag == "\"top\"");
30 | info.appendChild(document.createTextNode("Link to this "
31 | + (is_top ? "document" : "section")
32 | + " with "));
33 |
34 | /* Break `secref` into two lines if the module path and tag
35 | are long enough: */
36 | var is_long = (is_top ? false : ((mod_path.length
37 | + tag.length
38 | + (prefixes ? (16 + prefixes.length) : 0))
39 | > 60));
40 |
41 | var line1 = document.createElement("div");
42 | var line1x = ((is_long && prefixes) ? document.createElement("div") : line1);
43 | var line2 = (is_long ? document.createElement("div") : line1);
44 |
45 | function add(dest, str, cn) {
46 | var s = document.createElement("span");
47 | s.className = cn;
48 | s.style.whiteSpace = "nowrap";
49 | s.appendChild(document.createTextNode(str));
50 | dest.appendChild(s);
51 | }
52 | /* Construct a `secref` call with suitable syntax coloring: */
53 | add(line1, "\xA0@", "RktRdr");
54 | add(line1, (is_top ? "other-doc" : "secref"), "RktSym");
55 | add(line1, "[", "RktPn");
56 | if (!is_top)
57 | add(line1, tag, "RktVal");
58 | if (is_long) {
59 | /* indent additional lines: */
60 | if (prefixes)
61 | add(line1x, "\xA0\xA0\xA0\xA0\xA0\xA0\xA0\xA0", "RktPn");
62 | add(line2, "\xA0\xA0\xA0\xA0\xA0\xA0\xA0\xA0", "RktPn");
63 | }
64 | if (prefixes) {
65 | add(line1x, " #:tag-prefixes ", "RktPn");
66 | add(line1x, "'", "RktVal");
67 | add(line1x, prefixes, "RktVal");
68 | }
69 | if (!is_top)
70 | add(line2, " #:doc ", "RktPn");
71 | add(line2, "'", "RktVal");
72 | add(line2, mod_path, "RktVal");
73 | add(line2, "]", "RktPn");
74 |
75 | info.appendChild(line1);
76 | if (is_long)
77 | info.appendChild(line1x);
78 | if (is_long)
79 | info.appendChild(line2);
80 |
81 | info.style.display = "none";
82 |
83 | /* Add the new element afterthe header: */
84 | var n = elem.nextSibling;
85 | if (n)
86 | elem.parentNode.insertBefore(info, n);
87 | else
88 | elem.parentNode.appendChild(info);
89 |
90 | /* Clicking the header shows the explanation element: */
91 | elem.onclick = function () {
92 | if (info.style.display == "none")
93 | info.style.display = "block";
94 | else
95 | info.style.display = "none";
96 | }
97 | }
98 | }
99 |
--------------------------------------------------------------------------------
/doc/racket.css:
--------------------------------------------------------------------------------
1 |
2 | /* See the beginning of "scribble.css". */
3 |
4 | /* Monospace: */
5 | .RktIn, .RktRdr, .RktPn, .RktMeta,
6 | .RktMod, .RktKw, .RktVar, .RktSym,
7 | .RktRes, .RktOut, .RktCmt, .RktVal,
8 | .RktBlk {
9 | font-family: monospace;
10 | white-space: inherit;
11 | }
12 |
13 | /* Serif: */
14 | .inheritedlbl {
15 | font-family: serif;
16 | }
17 |
18 | /* Sans-serif: */
19 | .RBackgroundLabelInner {
20 | font-family: sans-serif;
21 | }
22 |
23 | /* ---------------------------------------- */
24 | /* Inherited methods, left margin */
25 |
26 | .inherited {
27 | width: 100%;
28 | margin-top: 0.5em;
29 | text-align: left;
30 | background-color: #ECF5F5;
31 | }
32 |
33 | .inherited td {
34 | font-size: 82%;
35 | padding-left: 1em;
36 | text-indent: -0.8em;
37 | padding-right: 0.2em;
38 | }
39 |
40 | .inheritedlbl {
41 | font-style: italic;
42 | }
43 |
44 | /* ---------------------------------------- */
45 | /* Racket text styles */
46 |
47 | .RktIn {
48 | color: #cc6633;
49 | background-color: #eeeeee;
50 | }
51 |
52 | .RktInBG {
53 | background-color: #eeeeee;
54 | }
55 |
56 | .RktRdr {
57 | }
58 |
59 | .RktPn {
60 | color: #843c24;
61 | }
62 |
63 | .RktMeta {
64 | color: black;
65 | }
66 |
67 | .RktMod {
68 | color: black;
69 | }
70 |
71 | .RktOpt {
72 | color: black;
73 | }
74 |
75 | .RktKw {
76 | color: black;
77 | }
78 |
79 | .RktErr {
80 | color: red;
81 | font-style: italic;
82 | }
83 |
84 | .RktVar {
85 | color: #262680;
86 | font-style: italic;
87 | }
88 |
89 | .RktSym {
90 | color: #262680;
91 | }
92 |
93 | .RktSymDef { /* used with RktSym at def site */
94 | }
95 |
96 | .RktValLink {
97 | text-decoration: none;
98 | color: blue;
99 | }
100 |
101 | .RktValDef { /* used with RktValLink at def site */
102 | }
103 |
104 | .RktModLink {
105 | text-decoration: none;
106 | color: blue;
107 | }
108 |
109 | .RktStxLink {
110 | text-decoration: none;
111 | color: black;
112 | }
113 |
114 | .RktStxDef { /* used with RktStxLink at def site */
115 | }
116 |
117 | .RktRes {
118 | color: #0000af;
119 | }
120 |
121 | .RktOut {
122 | color: #960096;
123 | }
124 |
125 | .RktCmt {
126 | color: #c2741f;
127 | }
128 |
129 | .RktVal {
130 | color: #228b22;
131 | }
132 |
133 | /* ---------------------------------------- */
134 | /* Some inline styles */
135 |
136 | .together {
137 | width: 100%;
138 | }
139 |
140 | .prototype, .argcontract, .RBoxed {
141 | white-space: nowrap;
142 | }
143 |
144 | .prototype td {
145 | vertical-align: text-top;
146 | }
147 |
148 | .RktBlk {
149 | white-space: inherit;
150 | text-align: left;
151 | }
152 |
153 | .RktBlk tr {
154 | white-space: inherit;
155 | }
156 |
157 | .RktBlk td {
158 | vertical-align: baseline;
159 | white-space: inherit;
160 | }
161 |
162 | .argcontract td {
163 | vertical-align: text-top;
164 | }
165 |
166 | .highlighted {
167 | background-color: #ddddff;
168 | }
169 |
170 | .defmodule {
171 | width: 100%;
172 | background-color: #F5F5DC;
173 | }
174 |
175 | .specgrammar {
176 | float: right;
177 | }
178 |
179 | .RBibliography td {
180 | vertical-align: text-top;
181 | }
182 |
183 | .leftindent {
184 | margin-left: 1em;
185 | margin-right: 0em;
186 | }
187 |
188 | .insetpara {
189 | margin-left: 1em;
190 | margin-right: 1em;
191 | }
192 |
193 | .Rfilebox {
194 | }
195 |
196 | .Rfiletitle {
197 | text-align: right;
198 | margin: 0em 0em 0em 0em;
199 | }
200 |
201 | .Rfilename {
202 | border-top: 1px solid #6C8585;
203 | border-right: 1px solid #6C8585;
204 | padding-left: 0.5em;
205 | padding-right: 0.5em;
206 | background-color: #ECF5F5;
207 | }
208 |
209 | .Rfilecontent {
210 | margin: 0em 0em 0em 0em;
211 | }
212 |
213 | .RpackageSpec {
214 | padding-right: 0.5em;
215 | }
216 |
217 | /* ---------------------------------------- */
218 | /* For background labels */
219 |
220 | .RBackgroundLabel {
221 | float: right;
222 | width: 0px;
223 | height: 0px;
224 | }
225 |
226 | .RBackgroundLabelInner {
227 | position: relative;
228 | width: 25em;
229 | left: -25.5em;
230 | top: 0px;
231 | text-align: right;
232 | color: white;
233 | z-index: 0;
234 | font-weight: bold;
235 | }
236 |
237 | .RForeground {
238 | position: relative;
239 | left: 0px;
240 | top: 0px;
241 | z-index: 1;
242 | }
243 |
244 | /* ---------------------------------------- */
245 | /* History */
246 |
247 | .SHistory {
248 | font-size: 82%;
249 | }
250 |
--------------------------------------------------------------------------------
/doc/pollen-count/index.html:
--------------------------------------------------------------------------------
1 |
2 |
pollen-count6.2
pollen-count
Package Description Here
--------------------------------------------------------------------------------
/doc/scribble-common.js:
--------------------------------------------------------------------------------
1 | // Common functionality for PLT documentation pages
2 |
3 | // Page Parameters ------------------------------------------------------------
4 |
5 | var page_query_string = location.search.substring(1);
6 |
7 | var page_args =
8 | ((function(){
9 | if (!page_query_string) return [];
10 | var args = page_query_string.split(/[&;]/);
11 | for (var i=0; i= 0) args[i] = [a.substring(0,p), a.substring(p+1)];
15 | else args[i] = [a, false];
16 | }
17 | return args;
18 | })());
19 |
20 | function GetPageArg(key, def) {
21 | for (var i=0; i= 0 && cur.substring(0,eql) == key)
78 | return unescape(cur.substring(eql+1));
79 | }
80 | return def;
81 | }
82 | }
83 |
84 | function SetCookie(key, val) {
85 | try {
86 | localStorage[key] = val;
87 | } catch(e) {
88 | var d = new Date();
89 | d.setTime(d.getTime()+(365*24*60*60*1000));
90 | try {
91 | document.cookie =
92 | key + "=" + escape(val) + "; expires="+ d.toGMTString() + "; path=/";
93 | } catch (e) {}
94 | }
95 | }
96 |
97 | // note that this always stores a directory name, ending with a "/"
98 | function SetPLTRoot(ver, relative) {
99 | var root = location.protocol + "//" + location.host
100 | + NormalizePath(location.pathname.replace(/[^\/]*$/, relative));
101 | SetCookie("PLT_Root."+ver, root);
102 | }
103 |
104 | // adding index.html works because of the above
105 | function GotoPLTRoot(ver, relative) {
106 | var u = GetCookie("PLT_Root."+ver, null);
107 | if (u == null) return true; // no cookie: use plain up link
108 | // the relative path is optional, default goes to the toplevel start page
109 | if (!relative) relative = "index.html";
110 | location = u + relative;
111 | return false;
112 | }
113 |
114 | // Utilities ------------------------------------------------------------------
115 |
116 | var normalize_rxs = [/\/\/+/g, /\/\.(\/|$)/, /\/[^\/]*\/\.\.(\/|$)/];
117 | function NormalizePath(path) {
118 | var tmp, i;
119 | for (i = 0; i < normalize_rxs.length; i++)
120 | while ((tmp = path.replace(normalize_rxs[i], "/")) != path) path = tmp;
121 | return path;
122 | }
123 |
124 | // `noscript' is problematic in some browsers (always renders as a
125 | // block), use this hack instead (does not always work!)
126 | // document.write("");
127 |
128 | // Interactions ---------------------------------------------------------------
129 |
130 | function DoSearchKey(event, field, ver, top_path) {
131 | var val = field.value;
132 | if (event && event.keyCode == 13) {
133 | var u = GetCookie("PLT_Root."+ver, null);
134 | if (u == null) u = top_path; // default: go to the top path
135 | u += "search/index.html?q=" + encodeURIComponent(val);
136 | u = MergePageArgsIntoUrl(u);
137 | location = u;
138 | return false;
139 | }
140 | return true;
141 | }
142 |
143 | function TocviewToggle(glyph, id) {
144 | var s = document.getElementById(id).style;
145 | var expand = s.display == "none";
146 | s.display = expand ? "block" : "none";
147 | glyph.innerHTML = expand ? "▼" : "►";
148 | }
149 |
150 | // Page Init ------------------------------------------------------------------
151 |
152 | // Note: could make a function that inspects and uses window.onload to chain to
153 | // a previous one, but this file needs to be required first anyway, since it
154 | // contains utilities for all other files.
155 | var on_load_funcs = [];
156 | function AddOnLoad(fun) { on_load_funcs.push(fun); }
157 | window.onload = function() {
158 | for (var i=0; i tr:first-child > td > .together {
184 | border-top: 0px; /* erase border on first instance of together */
185 | }
186 |
187 | .RktBlk {
188 | white-space: pre;
189 | text-align: left;
190 | }
191 |
192 | .highlighted {
193 | font-size: 1rem;
194 | background-color: #fee;
195 | }
196 |
197 | .defmodule {
198 | font-family: 'Source Code Pro';
199 | padding: 0.25rem 0.75rem 0.25rem 0.5rem;
200 | margin-bottom: 1rem;
201 | width: 100%;
202 | background-color: hsl(60, 29%, 94%);
203 | }
204 |
205 | .defmodule a {
206 | color: #444;
207 | }
208 |
209 |
210 | .defmodule td span.hspace:first-child {
211 | position: absolute;
212 | width: 0;
213 | display: inline-block;
214 | }
215 |
216 | .defmodule .RpackageSpec .Smaller,
217 | .defmodule .RpackageSpec .stt {
218 | font-size: 1rem;
219 | }
220 |
221 |
222 | .specgrammar {
223 | float: none;
224 | padding-left: 1em;
225 | }
226 |
227 |
228 | .RBibliography td {
229 | vertical-align: text-top;
230 | padding-top: 1em;
231 | }
232 |
233 | .leftindent {
234 | margin-left: 2rem;
235 | margin-right: 0em;
236 | }
237 |
238 | .insetpara {
239 | margin-left: 1em;
240 | margin-right: 1em;
241 | }
242 |
243 | .SCodeFlow .Rfilebox {
244 | margin-left: -1em; /* see 17.2 of guide, module languages */
245 | }
246 |
247 | .Rfiletitle {
248 | text-align: right;
249 | background-color: #eee;
250 | }
251 |
252 | .SCodeFlow .Rfiletitle {
253 | border-top: 1px dotted gray;
254 | border-right: 1px dotted gray;
255 | }
256 |
257 |
258 | .Rfilename {
259 | border-top: 0;
260 | border-right: 0;
261 | padding-left: 0.5em;
262 | padding-right: 0.5em;
263 | background-color: inherit;
264 | }
265 |
266 | .Rfilecontent {
267 | margin: 0.5em;
268 | }
269 |
270 | .RpackageSpec {
271 | padding-right: 0;
272 | }
273 |
274 | /* ---------------------------------------- */
275 | /* For background labels */
276 |
277 | .RBackgroundLabel {
278 | float: right;
279 | width: 0px;
280 | height: 0px;
281 | }
282 |
283 | .RBackgroundLabelInner {
284 | position: relative;
285 | width: 25em;
286 | left: -25.5em;
287 | top: 0.20rem; /* sensitive to monospaced font choice */
288 | text-align: right;
289 | z-index: 0;
290 | font-weight: 300;
291 | font-family: 'Source Code Pro';
292 | font-size: 0.9rem;
293 | color: gray;
294 | }
295 |
296 |
297 | .RpackageSpec .Smaller {
298 | font-weight: 300;
299 | font-family: 'Source Code Pro';
300 | font-size: 0.9rem;
301 | }
302 |
303 | .RForeground {
304 | position: relative;
305 | left: 0px;
306 | top: 0px;
307 | z-index: 1;
308 | }
309 |
310 | /* ---------------------------------------- */
311 | /* For section source modules & tags */
312 |
313 | .RPartExplain {
314 | background: #eee;
315 | font-size: 0.9rem;
316 | margin-top: 0.2rem;
317 | padding: 0.2rem;
318 | text-align: left;
319 | }
320 |
--------------------------------------------------------------------------------
/doc/scribble.css:
--------------------------------------------------------------------------------
1 |
2 | /* This file is used by default by all Scribble documents.
3 | See also "manual.css", which is added by default by the
4 | `scribble/manual` language. */
5 |
6 | /* CSS seems backward: List all the classes for which we want a
7 | particular font, so that the font can be changed in one place. (It
8 | would be nicer to reference a font definition from all the places
9 | that we want it.)
10 |
11 | As you read the rest of the file, remember to double-check here to
12 | see if any font is set. */
13 |
14 | /* Monospace: */
15 | .maincolumn, .refpara, .refelem, .tocset, .stt, .hspace, .refparaleft, .refelemleft {
16 | font-family: monospace;
17 | }
18 |
19 | /* Serif: */
20 | .main, .refcontent, .tocview, .tocsub, .sroman, i {
21 | font-family: serif;
22 | }
23 |
24 | /* Sans-serif: */
25 | .version, .versionNoNav, .ssansserif {
26 | font-family: sans-serif;
27 | }
28 | .ssansserif {
29 | font-size: 80%;
30 | font-weight: bold;
31 | }
32 |
33 | /* ---------------------------------------- */
34 |
35 | p, .SIntrapara {
36 | display: block;
37 | margin: 1em 0;
38 | }
39 |
40 | h2 { /* per-page main title */
41 | margin-top: 0;
42 | }
43 |
44 | h3, h4, h5, h6, h7, h8 {
45 | margin-top: 1.75em;
46 | margin-bottom: 0.5em;
47 | }
48 |
49 | .SSubSubSubSection {
50 | font-weight: bold;
51 | font-size: 0.83em; /* should match h5; from HTML 4 reference */
52 | }
53 |
54 | /* Needed for browsers like Opera, and eventually for HTML 4 conformance.
55 | This means that multiple paragraphs in a table element do not have a space
56 | between them. */
57 | table p {
58 | margin-top: 0;
59 | margin-bottom: 0;
60 | }
61 |
62 | /* ---------------------------------------- */
63 | /* Main */
64 |
65 | body {
66 | color: black;
67 | background-color: #ffffff;
68 | }
69 |
70 | table td {
71 | padding-left: 0;
72 | padding-right: 0;
73 | }
74 |
75 | .maincolumn {
76 | width: 43em;
77 | margin-right: -40em;
78 | margin-left: 15em;
79 | }
80 |
81 | .main {
82 | text-align: left;
83 | }
84 |
85 | /* ---------------------------------------- */
86 | /* Navigation */
87 |
88 | .navsettop, .navsetbottom {
89 | background-color: #f0f0e0;
90 | padding: 0.25em 0 0.25em 0;
91 | }
92 |
93 | .navsettop {
94 | margin-bottom: 1.5em;
95 | border-bottom: 2px solid #e0e0c0;
96 | }
97 |
98 | .navsetbottom {
99 | margin-top: 2em;
100 | border-top: 2px solid #e0e0c0;
101 | }
102 |
103 | .navleft {
104 | margin-left: 1ex;
105 | position: relative;
106 | float: left;
107 | white-space: nowrap;
108 | }
109 | .navright {
110 | margin-right: 1ex;
111 | position: relative;
112 | float: right;
113 | white-space: nowrap;
114 | }
115 | .nonavigation {
116 | color: #e0e0e0;
117 | }
118 |
119 | .searchform {
120 | display: inline;
121 | margin: 0;
122 | padding: 0;
123 | }
124 |
125 | .nosearchform {
126 | display: none;
127 | }
128 |
129 | .searchbox {
130 | width: 16em;
131 | margin: 0px;
132 | padding: 0px;
133 | background-color: #eee;
134 | border: 1px solid #ddd;
135 | text-align: center;
136 | vertical-align: middle;
137 | }
138 |
139 | #contextindicator {
140 | position: fixed;
141 | background-color: #c6f;
142 | color: #000;
143 | font-family: monospace;
144 | font-weight: bold;
145 | padding: 2px 10px;
146 | display: none;
147 | right: 0;
148 | bottom: 0;
149 | }
150 |
151 | /* ---------------------------------------- */
152 | /* Version */
153 |
154 | .versionbox {
155 | position: relative;
156 | float: right;
157 | left: 2em;
158 | height: 0em;
159 | width: 13em;
160 | margin: 0em -13em 0em 0em;
161 | }
162 | .version {
163 | font-size: small;
164 | }
165 | .versionNoNav {
166 | font-size: xx-small; /* avoid overlap with author */
167 | }
168 |
169 | .version:before, .versionNoNav:before {
170 | content: "Version ";
171 | }
172 |
173 | /* ---------------------------------------- */
174 | /* Margin notes */
175 |
176 | .refpara, .refelem {
177 | position: relative;
178 | float: right;
179 | left: 2em;
180 | height: 0em;
181 | width: 13em;
182 | margin: 0em -13em 0em 0em;
183 | }
184 |
185 | .refpara, .refparaleft {
186 | top: -1em;
187 | }
188 |
189 | .refcolumn {
190 | background-color: #F5F5DC;
191 | display: block;
192 | position: relative;
193 | width: 13em;
194 | font-size: 85%;
195 | border: 0.5em solid #F5F5DC;
196 | margin: 0 0 0 0;
197 | }
198 |
199 | .refcontent {
200 | margin: 0 0 0 0;
201 | }
202 |
203 | .refcontent p {
204 | margin-top: 0;
205 | margin-bottom: 0;
206 | }
207 |
208 | .refparaleft, .refelemleft {
209 | position: relative;
210 | float: left;
211 | right: 2em;
212 | height: 0em;
213 | width: 13em;
214 | margin: 0em 0em 0em -13em;
215 | }
216 |
217 | .refcolumnleft {
218 | background-color: #F5F5DC;
219 | display: block;
220 | position: relative;
221 | width: 13em;
222 | font-size: 85%;
223 | border: 0.5em solid #F5F5DC;
224 | margin: 0 0 0 0;
225 | }
226 |
227 |
228 | /* ---------------------------------------- */
229 | /* Table of contents, inline */
230 |
231 | .toclink {
232 | text-decoration: none;
233 | color: blue;
234 | font-size: 85%;
235 | }
236 |
237 | .toptoclink {
238 | text-decoration: none;
239 | color: blue;
240 | font-weight: bold;
241 | }
242 |
243 | /* ---------------------------------------- */
244 | /* Table of contents, left margin */
245 |
246 | .tocset {
247 | position: relative;
248 | float: left;
249 | width: 12.5em;
250 | margin-right: 2em;
251 | }
252 | .tocset td {
253 | vertical-align: text-top;
254 | }
255 |
256 | .tocview {
257 | text-align: left;
258 | background-color: #f0f0e0;
259 | }
260 |
261 | .tocsub {
262 | text-align: left;
263 | margin-top: 0.5em;
264 | background-color: #f0f0e0;
265 | }
266 |
267 | .tocviewlist, .tocsublist {
268 | margin-left: 0.2em;
269 | margin-right: 0.2em;
270 | padding-top: 0.2em;
271 | padding-bottom: 0.2em;
272 | }
273 | .tocviewlist table {
274 | font-size: 82%;
275 | }
276 |
277 | .tocviewlisttopspace {
278 | margin-bottom: 1em;
279 | }
280 |
281 | .tocviewsublist, .tocviewsublistonly, .tocviewsublisttop, .tocviewsublistbottom {
282 | margin-left: 0.4em;
283 | border-left: 1px solid #bbf;
284 | padding-left: 0.8em;
285 | }
286 | .tocviewsublist {
287 | margin-bottom: 1em;
288 | }
289 | .tocviewsublist table,
290 | .tocviewsublistonly table,
291 | .tocviewsublisttop table,
292 | .tocviewsublistbottom table {
293 | font-size: 75%;
294 | }
295 |
296 | .tocviewtitle * {
297 | font-weight: bold;
298 | }
299 |
300 | .tocviewlink {
301 | text-decoration: none;
302 | color: blue;
303 | }
304 |
305 | .tocviewselflink {
306 | text-decoration: underline;
307 | color: blue;
308 | }
309 |
310 | .tocviewtoggle {
311 | text-decoration: none;
312 | color: blue;
313 | font-size: 75%; /* looks better, and avoids bounce when toggling sub-sections due to font alignments */
314 | }
315 |
316 | .tocsublist td {
317 | padding-left: 1em;
318 | text-indent: -1em;
319 | }
320 |
321 | .tocsublinknumber {
322 | font-size: 82%;
323 | }
324 |
325 | .tocsublink {
326 | font-size: 82%;
327 | text-decoration: none;
328 | }
329 |
330 | .tocsubseclink {
331 | font-size: 82%;
332 | text-decoration: none;
333 | }
334 |
335 | .tocsubnonseclink {
336 | font-size: 82%;
337 | text-decoration: none;
338 | padding-left: 0.5em;
339 | }
340 |
341 | .tocsubtitle {
342 | font-size: 82%;
343 | font-style: italic;
344 | margin: 0.2em;
345 | }
346 |
347 | /* ---------------------------------------- */
348 | /* Some inline styles */
349 |
350 | .indexlink {
351 | text-decoration: none;
352 | }
353 |
354 | .nobreak {
355 | white-space: nowrap;
356 | }
357 |
358 | pre { margin-left: 2em; }
359 | blockquote { margin-left: 2em; }
360 |
361 | ol { list-style-type: decimal; }
362 | ol ol { list-style-type: lower-alpha; }
363 | ol ol ol { list-style-type: lower-roman; }
364 | ol ol ol ol { list-style-type: upper-alpha; }
365 |
366 | .SCodeFlow {
367 | display: block;
368 | margin-left: 1em;
369 | margin-bottom: 0em;
370 | margin-right: 1em;
371 | margin-top: 0em;
372 | white-space: nowrap;
373 | }
374 |
375 | .SVInsetFlow {
376 | display: block;
377 | margin-left: 0em;
378 | margin-bottom: 0em;
379 | margin-right: 0em;
380 | margin-top: 0em;
381 | }
382 |
383 | .SubFlow {
384 | display: block;
385 | margin: 0em;
386 | }
387 |
388 | .boxed {
389 | width: 100%;
390 | background-color: #E8E8FF;
391 | }
392 |
393 | .hspace {
394 | }
395 |
396 | .slant {
397 | font-style: oblique;
398 | }
399 |
400 | .badlink {
401 | text-decoration: underline;
402 | color: red;
403 | }
404 |
405 | .plainlink {
406 | text-decoration: none;
407 | color: blue;
408 | }
409 |
410 | .techoutside { text-decoration: underline; color: #b0b0b0; }
411 | .techoutside:hover { text-decoration: underline; color: blue; }
412 |
413 | /* .techinside:hover doesn't work with FF, .techinside:hover>
414 | .techinside doesn't work with IE, so use both (and IE doesn't
415 | work with inherit in the second one, so use blue directly) */
416 | .techinside { color: black; }
417 | .techinside:hover { color: blue; }
418 | .techoutside:hover>.techinside { color: inherit; }
419 |
420 | .SCentered {
421 | text-align: center;
422 | }
423 |
424 | .imageleft {
425 | float: left;
426 | margin-right: 0.3em;
427 | }
428 |
429 | .Smaller {
430 | font-size: 82%;
431 | }
432 |
433 | .Larger {
434 | font-size: 122%;
435 | }
436 |
437 | /* A hack, inserted to break some Scheme ids: */
438 | .mywbr {
439 | display: inline-block;
440 | height: 0;
441 | width: 0;
442 | font-size: 1px;
443 | }
444 |
445 | .compact li p {
446 | margin: 0em;
447 | padding: 0em;
448 | }
449 |
450 | .noborder img {
451 | border: 0;
452 | }
453 |
454 | .SAuthorListBox {
455 | position: relative;
456 | float: right;
457 | left: 2em;
458 | top: -2.5em;
459 | height: 0em;
460 | width: 13em;
461 | margin: 0em -13em 0em 0em;
462 | }
463 | .SAuthorList {
464 | font-size: 82%;
465 | }
466 | .SAuthorList:before {
467 | content: "by ";
468 | }
469 | .author {
470 | display: inline;
471 | white-space: nowrap;
472 | }
473 |
474 | /* print styles : hide the navigation elements */
475 | @media print {
476 | .tocset,
477 | .navsettop,
478 | .navsetbottom { display: none; }
479 | .maincolumn {
480 | width: auto;
481 | margin-right: 13em;
482 | margin-left: 0;
483 | }
484 | }
485 |
--------------------------------------------------------------------------------
/doc/manual-style.css:
--------------------------------------------------------------------------------
1 |
2 | /* See the beginning of "scribble.css".
3 | This file is used by the `scribble/manual` language, along with
4 | "manual-racket.css". */
5 |
6 | @import url("manual-fonts.css");
7 |
8 | * {
9 | margin: 0;
10 | padding: 0;
11 | }
12 |
13 | @media all {html {font-size: 15px;}}
14 | @media all and (max-width:940px){html {font-size: 14px;}}
15 | @media all and (max-width:850px){html {font-size: 13px;}}
16 | @media all and (max-width:830px){html {font-size: 12px;}}
17 | @media all and (max-width:740px){html {font-size: 11px;}}
18 |
19 | /* CSS seems backward: List all the classes for which we want a
20 | particular font, so that the font can be changed in one place. (It
21 | would be nicer to reference a font definition from all the places
22 | that we want it.)
23 |
24 | As you read the rest of the file, remember to double-check here to
25 | see if any font is set. */
26 |
27 | /* Monospace: */
28 | .maincolumn, .refpara, .refelem, .tocset, .stt, .hspace, .refparaleft, .refelemleft {
29 | font-family: 'Source Code Pro', monospace;
30 | white-space: inherit;
31 | font-size: 1rem;
32 | }
33 |
34 | .stt {
35 | font-weight: 500;
36 | }
37 |
38 | h2 .stt {
39 | font-size: 2.7rem;
40 | }
41 |
42 | .toptoclink .stt {
43 | font-size: inherit;
44 | }
45 | .toclink .stt {
46 | font-size: 90%;
47 | }
48 |
49 | .RpackageSpec .stt {
50 | font-weight: 300;
51 | font-family: 'Source Code Pro';
52 | font-size: 0.9rem;
53 | }
54 |
55 | h3 .stt, h4 .stt, h5 .stt {
56 | color: #333;
57 | font-size: 1.65rem;
58 | font-weight: 400;
59 | }
60 |
61 |
62 | /* Serif: */
63 | .main, .refcontent, .tocview, .tocsub, .sroman, i {
64 | font-family: 'Charter', serif;
65 | font-size: 1.18rem;
66 | }
67 |
68 |
69 | /* Sans-serif: */
70 | .version, .versionNoNav, .ssansserif {
71 | font-family: 'Fira', sans-serif;
72 | }
73 | .ssansserif {
74 | font-family: 'Fira';
75 | font-weight: 500;
76 | font-size: 0.9em;
77 | }
78 |
79 | .tocset .ssansserif {
80 | font-size: 100%;
81 | }
82 |
83 | /* ---------------------------------------- */
84 |
85 | p, .SIntrapara {
86 | display: block;
87 | margin: 0 0 1em 0;
88 | line-height: 1.4;
89 | }
90 |
91 | .compact {
92 | padding: 0 0 1em 0;
93 | }
94 |
95 | li {
96 | list-style-position: outside;
97 | margin-left: 1.2em;
98 | }
99 |
100 | h1, h2, h3, h4, h5, h6, h7, h8 {
101 | font-family: 'Fira';
102 | font-weight: 300;
103 | font-size: 1.6rem;
104 | color: #333;
105 | margin-top: inherit;
106 | margin-bottom: 1rem;
107 | line-height: 1.25;
108 | -moz-font-feature-settings: 'tnum=1';
109 | -moz-font-feature-settings: 'tnum' 1;
110 | -webkit-font-feature-settings: 'tnum' 1;
111 | -o-font-feature-settings: 'tnum' 1;
112 | -ms-font-feature-settings: 'tnum' 1;
113 | font-feature-settings: 'tnum' 1;
114 |
115 | }
116 |
117 | h3, h4, h5, h6, h7, h8 {
118 | border-top: 1px solid black;
119 | }
120 |
121 |
122 |
123 | h2 { /* per-page main title */
124 | font-family: 'Miso';
125 | font-weight: bold;
126 | margin-top: 4rem;
127 | font-size: 3rem;
128 | line-height: 1.1;
129 | width: 90%;
130 | }
131 |
132 | h3, h4, h5, h6, h7, h8 {
133 | margin-top: 2em;
134 | padding-top: 0.1em;
135 | margin-bottom: 0.75em;
136 | }
137 |
138 | /* ---------------------------------------- */
139 | /* Main */
140 |
141 | body {
142 | color: black;
143 | background-color: white;
144 | }
145 |
146 | .maincolumn {
147 | width: auto;
148 | margin-top: 4rem;
149 | margin-left: 17rem;
150 | margin-right: 2rem;
151 | margin-bottom: 10rem; /* to avoid fixed bottom nav bar */
152 | max-width: 700px;
153 | min-width: 370px; /* below this size, code samples don't fit */
154 | }
155 |
156 | a {
157 | text-decoration: inherit;
158 | }
159 |
160 | a, .toclink, .toptoclink, .tocviewlink, .tocviewselflink, .tocviewtoggle, .plainlink,
161 | .techinside, .techoutside:hover, .techinside:hover {
162 | color: #07A;
163 | }
164 |
165 | a:hover {
166 | text-decoration: underline;
167 | }
168 |
169 |
170 | /* ---------------------------------------- */
171 | /* Navigation */
172 |
173 | .navsettop, .navsetbottom {
174 | left: 0;
175 | width: 15rem;
176 | height: 6rem;
177 | font-family: 'Fira';
178 | font-size: 0.9rem;
179 | border-bottom: 0px solid hsl(216, 15%, 70%);
180 | background-color: inherit;
181 | padding: 0;
182 | }
183 |
184 | .navsettop {
185 | position: absolute;
186 | top: 0;
187 | left: 0;
188 | margin-bottom: 0;
189 | border-bottom: 0;
190 | }
191 |
192 | .navsettop a, .navsetbottom a {
193 | color: black;
194 | }
195 |
196 | .navsettop a:hover, .navsetbottom a:hover {
197 | background: hsl(216, 78%, 95%);
198 | text-decoration: none;
199 | }
200 |
201 | .navleft, .navright {
202 | position: static;
203 | float: none;
204 | margin: 0;
205 | white-space: normal;
206 | }
207 |
208 |
209 | .navleft a {
210 | display: inline-block;
211 | }
212 |
213 | .navright a {
214 | display: inline-block;
215 | text-align: center;
216 | }
217 |
218 | .navleft a, .navright a, .navright span {
219 | display: inline-block;
220 | padding: 0.5rem;
221 | min-width: 1rem;
222 | }
223 |
224 |
225 | .navright {
226 | height: 2rem;
227 | white-space: nowrap;
228 | }
229 |
230 |
231 | .navsetbottom {
232 | display: none;
233 | }
234 |
235 | .nonavigation {
236 | color: #889;
237 | }
238 |
239 | .searchform {
240 | display: block;
241 | margin: 0;
242 | padding: 0;
243 | border-bottom: 1px solid #eee;
244 | height: 4rem;
245 | }
246 |
247 | .nosearchform {
248 | margin: 0;
249 | padding: 0;
250 | height: 4rem;
251 | }
252 |
253 | .searchbox {
254 | font-size: 1rem;
255 | width: 12rem;
256 | margin: 1rem;
257 | padding: 0.25rem;
258 | vertical-align: middle;
259 | background-color: white;
260 | }
261 |
262 | #search_box {
263 | font-size: 0.8rem;
264 | }
265 |
266 | /* ---------------------------------------- */
267 | /* Version */
268 |
269 | .versionbox {
270 | position: absolute;
271 | float: none;
272 | top: 0.25rem;
273 | left: 17rem;
274 | z-index: 11000;
275 | height: 2em;
276 | font-size: 70%;
277 | font-weight: lighter;
278 | width: inherit;
279 | margin: 0;
280 | }
281 | .version, .versionNoNav {
282 | font-size: inherit;
283 | }
284 | .version:before, .versionNoNav:before {
285 | content: "v.";
286 | }
287 |
288 |
289 | /* ---------------------------------------- */
290 | /* Margin notes */
291 |
292 | /* cancel scribble.css styles: */
293 | .refpara, .refelem {
294 | position: static;
295 | float: none;
296 | height: auto;
297 | width: auto;
298 | margin: 0;
299 | }
300 |
301 | .refcolumn {
302 | position: static;
303 | display: block;
304 | width: auto;
305 | font-size: inherit;
306 | margin: 2rem;
307 | margin-left: 2rem;
308 | padding: 0.5em;
309 | padding-left: 0.75em;
310 | padding-right: 1em;
311 | background: hsl(60, 29%, 94%);
312 | border: 1px solid #ccb;
313 | border-left: 0.4rem solid #ccb;
314 | }
315 |
316 |
317 | /* slightly different handling for margin-note* on narrow screens */
318 | @media all and (max-width:1260px) {
319 | span.refcolumn {
320 | float: right;
321 | width: 50%;
322 | margin-left: 1rem;
323 | margin-bottom: 0.8rem;
324 | margin-top: 1.2rem;
325 | }
326 |
327 | }
328 |
329 | .refcontent, .refcontent p {
330 | line-height: 1.5;
331 | margin: 0;
332 | }
333 |
334 | .refcontent p + p {
335 | margin-top: 1em;
336 | }
337 |
338 | .refcontent a {
339 | font-weight: 400;
340 | }
341 |
342 | .refpara, .refparaleft {
343 | top: -1em;
344 | }
345 |
346 |
347 | @media all and (max-width:600px) {
348 | .refcolumn {
349 | margin-left: 0;
350 | margin-right: 0;
351 | }
352 | }
353 |
354 |
355 | @media all and (min-width:1260px) {
356 | .refcolumn {
357 | position: absolute;
358 | left: 66rem; right: 3em;
359 | margin: 0;
360 | float: right;
361 | max-width: 18rem;
362 | }
363 | }
364 |
365 | .refcontent {
366 | font-family: 'Fira';
367 | font-size: 1rem;
368 | line-height: 1.6;
369 | margin: 0 0 0 0;
370 | }
371 |
372 |
373 | .refparaleft, .refelemleft {
374 | position: relative;
375 | float: left;
376 | right: 2em;
377 | height: 0em;
378 | width: 13em;
379 | margin: 0em 0em 0em -13em;
380 | }
381 |
382 | .refcolumnleft {
383 | background-color: hsl(60, 29%, 94%);
384 | display: block;
385 | position: relative;
386 | width: 13em;
387 | font-size: 85%;
388 | border: 0.5em solid hsl(60, 29%, 94%);
389 | margin: 0 0 0 0;
390 | }
391 |
392 |
393 | /* ---------------------------------------- */
394 | /* Table of contents, left margin */
395 |
396 | .tocset {
397 | position: absolute;
398 | float: none;
399 | left: 0;
400 | top: 0rem;
401 | width: 14rem;
402 | padding: 7rem 0.5rem 0.5rem 0.5rem;
403 | background-color: hsl(216, 15%, 70%);
404 | margin: 0;
405 |
406 | }
407 |
408 | .tocset td {
409 | vertical-align: text-top;
410 | padding-bottom: 0.4rem;
411 | padding-left: 0.2rem;
412 | line-height: 1.1;
413 | font-family: 'Fira';
414 | -moz-font-feature-settings: 'tnum=1';
415 | -moz-font-feature-settings: 'tnum' 1;
416 | -webkit-font-feature-settings: 'tnum' 1;
417 | -o-font-feature-settings: 'tnum' 1;
418 | -ms-font-feature-settings: 'tnum' 1;
419 | font-feature-settings: 'tnum' 1;
420 |
421 | }
422 |
423 | .tocset td a {
424 | color: black;
425 | font-weight: 400;
426 | }
427 |
428 |
429 | .tocview {
430 | text-align: left;
431 | background-color: inherit;
432 | }
433 |
434 |
435 | .tocview td, .tocsub td {
436 | line-height: 1.3;
437 | }
438 |
439 |
440 | .tocview table, .tocsub table {
441 | width: 90%;
442 | }
443 |
444 | .tocset td a.tocviewselflink {
445 | font-weight: lighter;
446 | font-size: 110%; /* monospaced styles below don't need to enlarge */
447 | color: white;
448 | }
449 |
450 | .tocviewselflink {
451 | text-decoration: none;
452 | }
453 |
454 | .tocsub {
455 | text-align: left;
456 | margin-top: 0.5em;
457 | background-color: inherit;
458 | }
459 |
460 | .tocviewlist, .tocsublist {
461 | margin-left: 0.2em;
462 | margin-right: 0.2em;
463 | padding-top: 0.2em;
464 | padding-bottom: 0.2em;
465 | }
466 | .tocviewlist table {
467 | font-size: 82%;
468 | }
469 |
470 | .tocviewlisttopspace {
471 | margin-bottom: 1em;
472 | }
473 |
474 | .tocviewsublist, .tocviewsublistonly, .tocviewsublisttop, .tocviewsublistbottom {
475 | margin-left: 0.4em;
476 | border-left: 1px solid #99a;
477 | padding-left: 0.8em;
478 | }
479 | .tocviewsublist {
480 | margin-bottom: 1em;
481 | }
482 | .tocviewsublist table,
483 | .tocviewsublistonly table,
484 | .tocviewsublisttop table,
485 | .tocviewsublistbottom table,
486 | table.tocsublist {
487 | font-size: 1rem;
488 | }
489 |
490 | .tocviewsublist td, .tocviewsublistbottom td, .tocviewsublisttop td, .tocsub td,
491 | .tocviewsublistonly td {
492 | font-size: 90%;
493 | }
494 |
495 |
496 | .tocviewtoggle {
497 | font-size: 75%; /* looks better, and avoids bounce when toggling sub-sections due to font alignments */
498 | }
499 |
500 | .tocsublist td {
501 | padding-left: 0.5rem;
502 | padding-top: 0.25rem;
503 | text-indent: 0;
504 | }
505 |
506 | .tocsublinknumber {
507 | font-size: 100%;
508 | }
509 |
510 | .tocsublink {
511 | font-size: 82%;
512 | text-decoration: none;
513 | }
514 |
515 | .tocsubseclink {
516 | font-size: 100%;
517 | text-decoration: none;
518 | }
519 |
520 | .tocsubnonseclink {
521 | font-size: 82%;
522 | text-decoration: none;
523 | margin-left: 1rem;
524 | padding-left: 0;
525 | display: inline-block;
526 | }
527 |
528 | /* the label "on this page" */
529 | .tocsubtitle {
530 | display: block;
531 | font-size: 62%;
532 | font-family: 'Fira';
533 | font-weight: bolder;
534 | font-style: normal;
535 | letter-spacing: 2px;
536 | text-transform: uppercase;
537 | margin: 0.5em;
538 | }
539 |
540 | .toptoclink {
541 | font-weight: bold;
542 | font-size: 110%;
543 | margin-bottom: 0.5rem;
544 | margin-top: 1.5rem;
545 | display: inline-block;
546 | }
547 |
548 | .toclink {
549 | font-size: inherit;
550 | }
551 |
552 | /* ---------------------------------------- */
553 | /* Some inline styles */
554 |
555 | .indexlink {
556 | text-decoration: none;
557 | }
558 |
559 | pre {
560 | margin-left: 2em;
561 | }
562 |
563 | blockquote {
564 | margin-left: 2em;
565 | margin-right: 2em;
566 | margin-bottom: 1em;
567 | }
568 |
569 | .SCodeFlow {
570 | border-left: 1px dotted black;
571 | padding-left: 1em;
572 | padding-right: 1em;
573 | margin-top: 1em;
574 | margin-bottom: 1em;
575 | margin-left: 0em;
576 | margin-right: 2em;
577 | white-space: nowrap;
578 | line-height: 1.5;
579 | }
580 |
581 | .SCodeFlow img {
582 | margin-top: 0.5em;
583 | margin-bottom: 0.5em;
584 | }
585 |
586 | .boxed {
587 | margin: 0;
588 | margin-top: 2em;
589 | padding: 0.25em;
590 | padding-bottom: 0.5em;
591 | background: #f3f3f3;
592 | box-sizing:border-box;
593 | border-top: 1px solid #99b;
594 | background: hsl(216, 78%, 95%);
595 | background: -moz-linear-gradient(to bottom left, hsl(0, 0%, 99%) 0%, hsl(216, 78%, 95%) 100%);
596 | background: -webkit-linear-gradient(to bottom left, hsl(0, 0%, 99%) 0%, hsl(216, 78%, 95%) 100%);
597 | background: -o-linear-gradient(to bottom left, hsl(0, 0%, 99%) 0%, hsl(216, 78%, 95%) 100%);
598 | background: -ms-linear-gradient(to bottom left, hsl(0, 0%, 99%) 0%, hsl(216, 78%, 95%) 100%);
599 | background: linear-gradient(to bottom left, hsl(0, 0%, 99%) 0%, hsl(216, 78%, 95%) 100%);
600 | }
601 |
602 | blockquote > blockquote.SVInsetFlow {
603 | /* resolves issue in e.g. /reference/notation.html */
604 | margin-top: 0em;
605 | }
606 |
607 | .leftindent .SVInsetFlow { /* see e.g. section 4.5 of Racket Guide */
608 | margin-top: 1em;
609 | margin-bottom: 1em;
610 | }
611 |
612 | .SVInsetFlow a, .SCodeFlow a {
613 | color: #07A;
614 | font-weight: 500;
615 | }
616 |
617 | .SubFlow {
618 | display: block;
619 | margin: 0em;
620 | }
621 |
622 | .boxed {
623 | width: 100%;
624 | background-color: inherit;
625 | }
626 |
627 | .techoutside { text-decoration: none; }
628 |
629 | .SAuthorListBox {
630 | position: static;
631 | float: none;
632 | font-family: 'Fira';
633 | font-weight: 300;
634 | font-size: 110%;
635 | margin-top: 1rem;
636 | margin-bottom: 3rem;
637 | width: 30rem;
638 | height: auto;
639 | }
640 |
641 | .author > a { /* email links within author block */
642 | font-weight: inherit;
643 | color: inherit;
644 | }
645 |
646 | .SAuthorList {
647 | font-size: 82%;
648 | }
649 | .SAuthorList:before {
650 | content: "by ";
651 | }
652 | .author {
653 | display: inline;
654 | white-space: nowrap;
655 | }
656 |
657 | /* phone + tablet styles */
658 |
659 | @media all and (max-width:720px){
660 |
661 |
662 | @media all and (max-width:720px){
663 |
664 | @media all {html {font-size: 15px;}}
665 | @media all and (max-width:700px){html {font-size: 14px;}}
666 | @media all and (max-width:630px){html {font-size: 13px;}}
667 | @media all and (max-width:610px){html {font-size: 12px;}}
668 | @media all and (max-width:550px){html {font-size: 11px;}}
669 | @media all and (max-width:520px){html {font-size: 10px;}}
670 |
671 | .navsettop, .navsetbottom {
672 | display: block;
673 | position: absolute;
674 | width: 100%;
675 | height: 4rem;
676 | border: 0;
677 | background-color: hsl(216, 15%, 70%);
678 | }
679 |
680 | .searchform {
681 | display: inline;
682 | border: 0;
683 | }
684 |
685 | .navright {
686 | position: absolute;
687 | right: 1.5rem;
688 | margin-top: 1rem;
689 | border: 0px solid red;
690 | }
691 |
692 | .navsetbottom {
693 | display: block;
694 | margin-top: 8rem;
695 | }
696 |
697 | .tocset {
698 | display: none;
699 | }
700 |
701 | .tocset table, .tocset tbody, .tocset tr, .tocset td {
702 | display: inline;
703 | }
704 |
705 | .tocview {
706 | display: none;
707 | }
708 |
709 | .tocsub .tocsubtitle {
710 | display: none;
711 | }
712 |
713 | .versionbox {
714 | top: 4.5rem;
715 | left: 1rem; /* same distance as main-column */
716 | z-index: 11000;
717 | height: 2em;
718 | font-size: 70%;
719 | font-weight: lighter;
720 | }
721 |
722 |
723 | .maincolumn {
724 | margin-left: 1em;
725 | margin-top: 7rem;
726 | margin-bottom: 0rem;
727 | }
728 |
729 | }
730 |
731 | }
732 |
733 | /* print styles : hide the navigation elements */
734 | @media print {
735 | .tocset,
736 | .navsettop,
737 | .navsetbottom { display: none; }
738 | .maincolumn {
739 | width: auto;
740 | margin-right: 13em;
741 | margin-left: 0;
742 | }
743 | }
--------------------------------------------------------------------------------