source: project/release/3/nemo/tags/1.11/nemo-eggdoc.scm @ 12277

Last change on this file since 12277 was 12277, checked in by Ivan Raikov, 13 years ago

Created version 1.11.

File size: 22.5 KB
Line 
1;;
2;;
3;; nemo documentation for the Chicken Scheme module system.
4;;
5;;
6;; This program is free software: you can redistribute it and/or
7;; modify it under the terms of the GNU General Public License as
8;; published by the Free Software Foundation, either version 3 of the
9;; License, or (at your option) any later version.
10;;
11;; This program is distributed in the hope that it will be useful, but
12;; WITHOUT ANY WARRANTY; without even the implied warranty of
13;; MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE.  See the GNU
14;; General Public License for more details.
15;;
16;; A full copy of the GPL license can be found at
17;; <http://www.gnu.org/licenses/>.
18;;
19;;
20
21
22(use eggdoc srfi-1)
23
24(define doc
25  `((eggdoc:begin
26
27     (name "nemo")
28
29     (description "Neuron model description language.")
30
31     (author (url "http://chicken.wiki.br/ivan raikov" "Ivan Raikov"))
32
33     (history
34      (version "1.11"  "Bug fixes in the current equations part of NMODL code generator")
35      (version "1.10"  "AKP06 example is now installed in CHICKEN-HOME/nemo/examples")
36      (version "1.9"   "Documentation and example updates")
37      (version "1.8"   "Bug fixes related to kinetic equation processing")
38      (version "1.6"   "Added infix expression parser (nemo format)")
39      (version "1.0"   "Initial release"))
40
41
42     (requires (url "args.html"          "args")
43               (url "datatype.html"      "datatype")
44               (url "digraph.html"       "digraph")
45               (url "environments.html"  "environments")
46               (url "graph-bfs.html"     "graph-bfs")
47               (url "graph-cycles.html"  "graph-cycles")
48               (url "lalr.html"          "lalr")
49               (url "matchable.html"     "matchable")
50               (url "mathh.html"         "mathh")
51               (url "strictly-pretty.html" "strictly-pretty")
52               (url "sxml-tools.html" "sxml-tools")
53               (url "sxml-transforms.html" "sxml-transforms")
54               (url "syntax-case.html" "syntax-case")
55               (url "varsubst.html"    "varsubst")
56               (url "vector-lib.html"  "vector-lib")
57               (url "varsubst.html"    "varsubst")
58               )
59
60
61     (usage "nemo [options...] [input files ...]")
62     (download "nemo.egg")
63
64     (documentation
65     
66      (p (tt "NEMO") " is a program that reads an on channel description "
67         "in a format based on ChannelML and generates a corresponding description "
68         "in the " (url "http://www.neuron.yale.edu/neuron/docs/help/neuron/nmodl/nmodl.html" "NMODL")
69         "language used by the " (url "http://www.neuron.yale.edu/neuron/" "NEURON simulator") ". ")
70
71      (subsection "Options"
72        (p (symbol-table
73            (describe "-i FORMAT"          "specify input format (nemo, xml, sxml, s-exp)")
74            (describe "--xml[=FILE]"       "write XML output to file (default: <model-name>.xml")
75            (describe "--sxml[=FILE]"      "write SXML output to file (default: <model-name>.sxml")
76            (describe "--nmodl[=FILE]"     "write NMODL output to file (default: <model-name>.mod")
77            (describe "--nmodl-method=METHOD"  "specify NMODL integration method (cnexp, derivimplicit)")
78            (describe "--nmodl-kinetic=[STATES]" ("use NMODL kinetic equations for the given state complexes "
79                                                "(or for all state complexes)"))
80            (describe "-t"                 "use interpolation tables in generated code")
81            (describe "-h, --help"         "print help"))))
82
83      (subsection "Model description language"
84        (p "The following constructs comprise the model description language: ")
85        (p (ebnf-def "MODEL"
86            (ebnf-choice
87             ( (ebnf-form (ebnf-kw "INPUT ") 
88                          (ebnf-choice (ebnf-var "ID") 
89                             (ebnf-form (ebnf-var "ID") (ebnf-opt (ebnf-kw "AS ") (ebnf-var "LOCAL-ID")) 
90                                        (ebnf-opt (ebnf-kw "FROM ") (ebnf-var "NAMESPACE"))))
91                          "... )")
92               (comment "Declares one or several imported quantities. "
93                        "If the optional " (ebnf-kw "AS") " parameter is given, "
94                        "then the quantity is imported as " (ebnf-var "LOCAL-ID") ". "
95                        "If the optional " (ebnf-kw "FROM") " parameter is given, "
96                        "then the quantity is imported from namespace " (ebnf-var "NAMESPACE") ". "))
97               
98             ( (ebnf-form (ebnf-kw "OUTPUT") (ebnf-var "ID") )
99               (comment "Declares that an existing quantity be exported."))
100
101             ( (ebnf-form (ebnf-kw "CONST") (ebnf-var "ID") "=" (ebnf-var "EXPR"))
102               (comment "Declares a constant quantity (its value will be computed at declaration time)."))
103
104             ( (ebnf-form (ebnf-kw "DEFUN") (ebnf-var "ID") (ebnf-form (ebnf-var "ARG-ID") "..." )
105                          (ebnf-var "EXPR"))
106               (comment "Declares a function (a parameterized expression with no free variables)."))
107
108             ( (ebnf-form (ebnf-var "ID") "=" (ebnf-var "EXPR"))
109               (comment "Declares an assigned quantity "
110                        "(an expression that can refer to other quantities in the system)."))
111
112             ( (ebnf-form (ebnf-kw "STATE-COMPLEX") (ebnf-var "ID") (ebnf-var "TRANSITIONS")
113                          (ebnf-var "INITIAL-EXPR") (ebnf-var "OPEN-ID"))
114               (p "Declares a state complex quantity. See below for the syntax of state transition equations. "
115                  (ebnf-var "INITIAL-EXPR") " is an expression that computes the initial value. "
116                  (ebnf-var "OPEN-ID") " is the name of the open state. It must be one of the states "
117                  "defined by the transition equations. "))
118
119             ( (ebnf-form (ebnf-kw "COMPONENT") 
120                          (ebnf-form (ebnf-kw "TYPE") (ebnf-var "ID"))
121                          (ebnf-form (ebnf-kw "NAME") (ebnf-var "ID"))
122                          (ebnf-var "ELEMENTS"))
123               (p "Declares a system component (a quantity that can contain other quantities)."))
124             )))
125
126        (subsubsection "Expressions"
127          (p "Expressions in the model description language are defined as: ")
128          (p (ebnf-def "EXPR"
129               (ebnf-choice
130                       ( (ebnf-var "NUM")
131                         (comment "A numeric constant."))
132                       ( (ebnf-var "ID")
133                         (comment "A variable name."))
134                       ( (ebnf-form (ebnf-var "ID") (ebnf-form (ebnf-var "EXPR") "..."))
135                         (comment "A function invocation."))
136                       ( (ebnf-form (ebnf-var "EXPR") (ebnf-var "OP") (ebnf-var "EXPR") )
137                         (comment "Arithmetic operator invocation. The following operators are supported: "
138                                  (tt "+ - / * > < <= >= ^")))
139                       ( (ebnf-form (ebnf-kw "LET") (ebnf-form (ebnf-var "BINDINGS")) (ebnf-var "EXPR") )
140                         (comment "Local variables declaration. Each element in " 
141                                  (ebnf-var "BINDINGS") " is of the form: "
142                                  (ebnf-form (ebnf-var "ID") (ebnf-var "EXPR"))))
143                       ( (ebnf-form (ebnf-kw "IF") (ebnf-var "CONDITION")
144                                    (ebnf-kw "THEN") (ebnf-var "EXPR") 
145                                    (ebnf-kw "ELSE") (ebnf-var "EXPR") )
146                         (comment "Conditional expression. The expression after " (ebnf-kw "IF") 
147                                  " must be a comparison expression. ")))
148                       )))
149
150        (subsubsection "State transition equations"
151          (p "State transition equations in the model description language are defined as: ")
152          (p (ebnf-def "TRANSITION"
153               (ebnf-choice
154                ( (ebnf-form (ebnf-kw "->") (ebnf-var "SRC-ID") (ebnf-var "DEST-ID")
155                             (ebnf-var "EXPR") )
156                  (comment "Declares that a transition occurs from state "
157                           (ebnf-var "SRC-ID") " to state " (ebnf-var "DEST-ID") 
158                           " at rate computed by " (ebnf-var "EXPR") ". "))
159                ( (ebnf-form (ebnf-kw "<->") (ebnf-var "SRC-ID") (ebnf-var "DEST-ID")
160                             (ebnf-var "EXPR-1") (ebnf-var "EXPR-2") )
161                  (comment "Declares that a transition occurs from state "
162                           (ebnf-var "SRC-ID") " to state " (ebnf-var "DEST-ID") 
163                           " and vice versa, at rates computed by " (ebnf-var "EXPR-1")
164                           " and " (ebnf-var "EXPR-2") ". "))
165                ))))
166
167        (subsubsection "Ion channel definitions"
168          (p "Currently, the " (tt "NMODL") " code generator recognizes and generates code for "
169             "ion channel components that are defined as follows: ")
170          (p (ebnf-form (ebnf-compound "COMPONENT (TYPE ion-channel) (NAME {NAME})"
171
172               ( (ebnf-form (ebnf-kw "COMPONENT") (ebnf-form (ebnf-kw "TYPE") "gate") "..." )
173                 (comment "One or more gate definitions. Each component of type gate "
174                          "must export the state complexes that characterize the gate dynamics. "))
175               
176               ( (ebnf-form (ebnf-kw "COMPONENT") 
177                            (ebnf-form (ebnf-kw "TYPE") "pore") "...")
178                 (comment "Conductance law definition. This component must export a "
179                          "constant maximal conductance, or an assigned quantity whose "
180                          "equation represents the conductance law used. "))
181               
182               ( (ebnf-opt (ebnf-form (ebnf-kw "COMPONENT") (ebnf-form (ebnf-kw "TYPE") "permeating-substance") "..."))
183                 (comment ""))
184
185               ( (ebnf-opt (ebnf-form (ebnf-kw "COMPONENT") (ebnf-form (ebnf-kw "TYPE") "accumulating-substance") "..."))
186                 (comment ""))
187                           
188               ))))
189
190        (subsubsection "Hodgkin-Huxley ionic conductance extension"
191          (p "The Hodgkin-Huxley ionic conductance extension is a shortcut that declares "
192             "a state transition complex corresponding to the Hodgkin-Huxley formulation "
193             "of ion channel dynamics. ")
194
195          (p (ebnf-form (ebnf-compound "HH-IONIC-CONDUCTANCE"
196               ( (ebnf-form (ebnf-var "ION-NAME" )
197                            (comment "Ion name: exported variables will be of the form " (tt "{ion}_{id}") ". ")
198                           
199                            (ebnf-form (ebnf-kw "M-POWER") (ebnf-var "INTEGER") )
200                            (comment "Power of state variable " (tt "M") ". " )
201
202                            (ebnf-form (ebnf-kw "H-POWER") (ebnf-var "INTEGER") )
203                            (comment "Power of state variable " (tt "H") ". If zero, the initial value and "
204                                     "equations for this variable can be omitted. ")
205
206                            (ebnf-form (ebnf-kw "INITIAL-M") (ebnf-var "EXPR") )
207                            (comment "Expression that computes initial value for state variable " (tt "M") ". " )
208
209                            (ebnf-form (ebnf-kw "INITIAL-H") (ebnf-var "EXPR") )
210                            (comment "Expression that computes initial value for state variable " (tt "H") ". " )
211
212
213                            (ebnf-form (ebnf-kw "M-ALPHA") (ebnf-var "EXPR") )
214                            (comment "Closed state to open state rate expression for state variable " (tt "M") ". " )
215
216                            (ebnf-form (ebnf-kw "M-BETA") (ebnf-var "EXPR") )
217                            (comment "Open state to closed state rate expression for state variable " (tt "M") ". " )
218
219                            (ebnf-form (ebnf-kw "H-ALPHA") (ebnf-var "EXPR") )
220                            (comment "Closed state to open state rate expression for state variable " (tt "H") ". " )
221
222                            (ebnf-form (ebnf-kw "H-BETA") (ebnf-var "EXPR") )
223                            (comment "Open state to closed state rate expression for state variable " (tt "H") ". " )
224
225
226                            (ebnf-form (ebnf-kw "M-INF") (ebnf-var "EXPR") )
227                            (comment "Steady state expression for variable " (tt "M") ". " )
228
229                            (ebnf-form (ebnf-kw "M-TAU") (ebnf-var "EXPR") )
230                            (comment "Time constant expression for variable " (tt "M") ". " )
231
232                            (ebnf-form (ebnf-kw "H-INF") (ebnf-var "EXPR") )
233                            (comment "Steady state expression for variable " (tt "H") ". " )
234
235                            (ebnf-form (ebnf-kw "H-TAU") (ebnf-var "EXPR") )
236                            (comment "Time constant expression for variable " (tt "H") ". " )
237
238
239                            ))
240                 )))
241          )
242
243        )
244
245      )
246     (examples (pre #<<EOF
247
248;; Akemann and Knoepfel, J.Neurosci. 26 (2006) 4602
249
250(nemo-model PotIhCa
251
252  ((input v  cai cao)
253             
254   (const Vrest   = -68)
255   (const diam    = 20)
256   (const celsius = 24)
257   
258   (const temp_adj = (pow (3 ((celsius - 22) / 10))))
259
260   (defun ghk (v celsius ci co)
261     (let ((F 96485.0) (R 8.3145))
262       (let ((zeta ((2e-3 * F * v) / (R * (273.19 + celsius)))))
263         (if ((abs (1.0 - exp (neg (zeta)))) < 1e-6)
264             then (1e-6 * (2 * F) * (ci - (co * exp (neg (zeta)))) * (1.0 + (zeta / 2)))
265             else ((1e-6 * (2 * zeta * F) * (ci - (co * exp (neg (zeta))))) / (1.0 - exp (neg (zeta))))))))
266
267   
268   (decaying-pool (ca (initial 1e-4) (depth 0.1) (beta 1) (temp-adj temp_adj)))
269   
270   (component (type ion-channel) (name Kv1)
271             
272              (component (type gate)
273                         
274                         ;; rate functions
275                         (defun Kv1_amf (v) 
276                           (let ((cma 0.12889)
277                                 (cka -33.90877)
278                                 (cva 45))
279                             (cma * (exp (neg ((v + cva) / cka))))))
280                         
281                         (defun Kv1_bmf (v)
282                           (let ((cmb   0.12889)
283                                 (ckb   12.42101)
284                                 (cvb   45))
285                             (cmb * (exp (neg ((v + cvb) / ckb))))))
286                         
287                         (hh-ionic-conductance 
288                          (Kv1  ;; ion name: exported variables will be of the form {ion}_{id}
289                           (initial-m (Kv1_amf (Vrest) / (Kv1_amf (Vrest) + Kv1_bmf (Vrest))))
290                           (m-power   4)
291                           (h-power   0)
292                           (m-alpha   (temp_adj * Kv1_amf (v) ))
293                           (m-beta    (temp_adj * Kv1_bmf (v) ))))
294                         
295                         )
296             
297              (component (type pore)
298                         (const  gbar_Kv1  = 0.011)
299                         (output gbar_Kv1 ))
300             
301              (component (type permeating-substance) (name k)
302                         (const e_Kv1 = -85)
303                         (output e_Kv1 ))
304             
305              ) ;; end Kv1 current
306
307   (component (type ion-channel) (name Kv4)
308
309              (component (type gate)
310                         
311                         ;; rate functions
312                         
313                         
314                         (defun Kv4_amf (v) 
315                           (let ((can    0.15743)
316                                 (ckan   -32.19976)
317                                 (cvan   57))
318                             (can * exp (neg ((v + cvan) / ckan)))))
319                         
320
321                         (defun Kv4_bmf (v) 
322                           (let ((cbn   0.15743)
323                                 (ckbn  37.51346)
324                                 (cvbn  57))
325                             (cbn * exp (neg ((v + cvbn) / ckbn)))))
326
327                         
328                         (defun Kv4_ahf (v) 
329                           (let ((cah   0.01342)
330                                 (ckah  -7.86476)
331                                 (cvah  60))
332                             (cah / (1.0 + (exp (neg ((v + cvah) / ckah)))))))
333
334                         
335                         (defun Kv4_bhf (v) 
336                           (let ((cbh   0.04477)
337                                 (ckbh  11.3615)
338                                 (cvbh  54))
339                             (cbh / (1.0 + (exp (neg ((v + cvbh) / ckbh)))))))
340
341                         (hh-ionic-conductance 
342                          (Kv4  ;; ion name: exported variables will be of the form {ion}_{id}
343                           (initial-m (Kv4_amf (Vrest) / (Kv4_amf (Vrest) + Kv4_bmf (Vrest))) )
344                           (initial-h (Kv4_ahf (Vrest) / (Kv4_ahf (Vrest) + Kv4_bhf (Vrest))) ) 
345                           (m-power   4)
346                           (h-power   1)
347                           (m-alpha   (temp_adj * Kv4_amf (v)))
348                           (m-beta    (temp_adj * Kv4_bmf (v)))
349                           (h-alpha   (temp_adj * Kv4_ahf (v)))
350                           (h-beta    (temp_adj * Kv4_bhf (v)))
351                           ))
352                         
353                         )
354
355              (component (type pore)
356                         (const  gbar_Kv4  = 0.0039)
357                         (output gbar_Kv4 ))
358             
359              (component (type permeating-substance) (name k)
360                         (const e_Kv4 = -85)
361                         (output e_Kv4 ))
362             
363              ) ;; end Kv4 current
364
365
366   (component (type ion-channel) (name Ih)
367             
368              (component (type gate)
369                         
370                         ;; rate functions
371                         
372                         (defun Ih_inf (v)
373                           (let ((cvn   90.1)
374                                 (ckn   -9.9))
375                             (1.0 / (1.0 + exp (neg ((v + cvn) / ckn) )))))
376                         
377                         (defun Ih_tau (v)   
378                           (let ((cct  190)
379                                 (cat  720)
380                                 (cvt  81.5)
381                                 (ckt  11.9))
382                             (cct + (cat * exp (neg (pow (((v + cvt) / ckt) 2)))))))
383                         
384                         (hh-ionic-conductance 
385                          (Ih  ;; ion name: exported variables will be of the form {ion}_{id}
386                           (initial-m (Ih_inf (Vrest)))
387                           (m-power   1)
388                           (h-power   0)
389                           (m-inf     (Ih_inf (v)))
390                           (m-tau     (Ih_tau (v) / temp_adj))
391                           ))
392                         
393                         )
394
395              (component (type pore)
396                         (const  gbar_Ih  = 0.0002)
397                         (output gbar_Ih ))
398             
399              (component (type permeating-substance) (name non-specific)
400                         (const e_Ih = -30)
401                         (output e_Ih ))
402             
403              ) ;; end Ih current
404   
405   (component (type ion-channel) (name CaP)
406             
407              (component (type gate)
408                         
409                         ;; rate functions
410                         (defun CaP_inf (v) 
411                           (let ((cv  19)  (ck  5.5))
412                             (1.0 / (1.0 + exp (neg ((v + cv) / ck))))))
413                         
414                         (defun CaP_tau (v) 
415                           (if (v > -50) 
416                               then (1e3 * (0.000191 + (0.00376 * pow ((exp (neg ((v + 41.9) / 27.8)))  2))))
417                               else (1e3 * (0.00026367 + (0.1278 * exp (0.10327 * v))))))
418
419                         (hh-ionic-conductance 
420                          (CaP  ;; ion name: exported variables will be of the form {ion}_{id}
421                           (initial-m  (CaP_inf (Vrest)))
422                           (m-power    1)
423                           (h-power    0)
424                           (m-inf      (CaP_inf (v)))
425                           (m-tau      (CaP_tau (v) / temp_adj))))
426                         
427                         )
428
429              (component (type pore)
430                         (const gmax_CaP  = 0.01667)
431                         (gbar_CaP        = (gmax_CaP * ghk (v celsius cai cao)))
432                         (output gbar_CaP ))
433             
434              (component (type accumulating-substance) (name ca) )
435             
436             
437              ) ;; end CaP current
438
439
440   (component (type ion-channel) (name CaBK)
441             
442              (component (type gate)
443                         
444                         ;; rate functions
445                         
446                         (defun CaBK_zinf (ca) 
447                           (let ((zhalf 0.001))
448                             (1 / (1 + (zhalf / ca)))))
449
450                         (const CaBK_ztau = 1.0)
451                         
452                         (defun CaBK_minf (v)
453                           (let ((cvm  28.9)
454                                 (ckm  6.2))
455                             (1.0 / (1.0 + exp (neg ((v + 5.0 + cvm) / ckm))))))
456                         
457                         (defun CaBK_mtau (v)
458                           (let ((ctm     0.000505)
459                                 (cvtm1   86.4)
460                                 (cktm1   -10.1)
461                                 (cvtm2   -33.3)
462                                 (cktm2   10))
463                             (ctm + (1.0 / (exp (neg ((v + 5.0 + cvtm1) / cktm1)) +
464                                                exp (neg ((v + 5.0 + cvtm2) / cktm2)))))))
465                         
466                         (defun CaBK_hinf (v) 
467                           (let ((ch    0.085)
468                                 (cvh   32)
469                                 (ckh   -5.8))
470                             (ch + ((1.0 - ch) / (1.0 + (exp (neg ((v + 5.0 + cvh) / ckh))))))))
471                         
472                         (defun CaBK_htau (v)
473                           (let ((cth     0.0019)
474                                 (cvth1   48.5)
475                                 (ckth1   -5.2)
476                                 (cvth2   -54.2)
477                                 (ckth2   12.9))
478                             (cth + (1.0 / (exp (neg ((v + cvth1) / ckth1)) +
479                                                exp (neg ((v + cvth2) / ckth2)))))))
480                         
481                         (state-complex
482                          (CaBK_z
483                           (transitions (<-> C O (CaBK_zinf (cai) / CaBK_ztau)
484                                             ((1 - CaBK_zinf (cai)) / CaBK_ztau)))
485                           (initial   (CaBK_zinf (1e-4)))
486                           (open O)  (power 2)))
487                         
488                         (output CaBK_z ) 
489
490                         
491                         (hh-ionic-conductance 
492                          (CaBK  ;; ion name: exported variables will be of the form {ion}_{id}
493                           (initial-m  (CaBK_minf (Vrest) / temp_adj))
494                           (initial-h  (CaBK_hinf (Vrest) / temp_adj))
495                           (m-power    3)
496                           (h-power    1)
497                           (m-inf      (CaBK_minf (v) / temp_adj) )
498                           (m-tau      (CaBK_mtau (v) / temp_adj) )
499                           (h-inf      (CaBK_hinf (v) / temp_adj) )
500                           (h-tau      (CaBK_htau (v) / temp_adj) )))
501                         
502                         )
503             
504              (component (type pore)
505                         (const  gbar_CaBK  = 0.014)
506                         (output gbar_CaBK ))
507             
508              (component (type permeating-substance) (name k)
509                         (const e_CaBK = -85)
510                         (output e_CaBK ))
511             
512              ) ;; end BK current
513             
514             ))
515
516EOF
517))
518
519     (license
520      "Copyright 2008 Ivan Raikov and the Okinawa Institute of Science and Technology.
521
522This program is free software: you can redistribute it and/or modify
523it under the terms of the GNU General Public License as published by
524the Free Software Foundation, either version 3 of the License, or (at
525your option) any later version.
526
527This program is distributed in the hope that it will be useful, but
528WITHOUT ANY WARRANTY; without even the implied warranty of
529MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE.  See the GNU
530General Public License for more details.
531
532A full copy of the GPL license can be found at
533<http://www.gnu.org/licenses/>."))))
534
535
536(define nemo-eggdoc:css (make-parameter #<<EOF
537 <!--
538      CODE {
539            color: #666666;
540          }
541/*   DT.definition EM { font-weight: bold; font-style: normal; } */
542
543     DT.definition { 
544                   background: #eee;
545                   color: black;
546                   padding: 0.2em 1em 0.2em 0.7em;
547                   margin-left: 0.2em;
548border: 1px solid #bbc;
549                   font-family: "Andale Mono", monospace;
550                   /* font-size: 1.2em; */
551                   
552                 }
553     DD {
554                   margin-top: 0.8em;
555                   margin-bottom: 0.8em;
556     }
557     DIV.subsection {
558                    border-top: 1px solid #448;
559                    padding-left: 1em;
560                    margin-bottom: 1.2em;
561     }
562     DIV.subsubsection {
563                    border-top: 1px dotted #99c;
564                    /* border-left: 1px solid #99c; */
565                    padding-left: 1em;
566                    margin-bottom: 1.2em;
567     }
568     DIV.subsubsubsection {
569                    border-top: 1px solid #ddf;
570                    padding-left: 1em;
571                    margin-bottom: 1.2em;
572     }
573
574         DIV.section {
575                 margin-bottom: 1.5em;
576         }
577         a:link {
578                 color: #336;
579         }
580         a:visited { color: #666; }
581         a:active  { color: #966; }
582         a:hover   { color: #669; }
583         body { margin: 0; padding: 0; background: #fff; color: #000; font: 9pt "Lucida Grande", "Verdana", sans-serif; }
584         H2 {
585                 background: #336;
586                 color: #fff;
587                 padding-top: 0.5em;
588                 padding-bottom: 0.5em;
589                 padding-left: 16px;
590                 margin: 0 0 1em 0;
591        }
592        UL LI {
593                list-style: none;
594        }
595        TT {
596                font-family: "Andale Mono", monospace;
597                /* font-size: 1.2em; */
598        }
599        H3 {
600                color: #113;
601                margin-bottom: 0.5em;
602        }
603        H4, H5, H6 {
604                color: #113;
605                margin-bottom: 1.0em;
606        }
607        H5 {
608                font-weight: normal;
609                font-style: italic;
610                font-size: 100%;
611                margin-top: 1.2em;
612        }
613        H6 {
614                font-weight: bold;
615                font-size: 85%;
616                margin-top: 1.2em;
617        }
618     DIV#eggheader {
619         text-align: center;
620                 float: right;
621                 margin-right: 2em;
622     }
623     DIV#header IMG {
624            /* display: block; margin-left: auto; margin-right: auto;  */
625            /* float: right; */
626            border: none;  /* firefox */
627     }
628     DIV#footer {
629                background: #bbd;
630                padding: 0.7em ;
631                border-top: 1px solid #cce;
632     }
633     DIV#footer hr {
634                display: none;
635     }
636     DIV#footer a {
637                float: left;
638     }
639     DIV#revision-history {
640         float: right;
641     }
642     
643     DIV#body {
644                 margin: 1em 1em 1em 16px;
645         }
646
647     DIV#examples PRE {
648       background: #eef;
649       padding: 0.1em;
650       border: 1px solid #aac;
651     }
652     PRE#license, DIV#examples PRE {
653       padding: 0.5em;
654     }
655     DIV#examples PRE {
656       /* font-size: 85%; */
657     }
658     PRE { font-family: "Andale Mono", monospace; }
659     TABLE {
660       background: #eef;
661       padding: 0.2em;
662       border: 1px solid #aac;
663       border-collapse: collapse;
664       width: 100%;
665     }
666     TABLE.symbol-table TD.symbol {
667          font-family: "Andale Mono", monospace;
668          vertical-align: top;
669          /* font-size: 1.2em; */
670     }
671     TABLE.symbol-table TD {
672          font-family: "Andale Mono", monospace;
673          vertical-align: top;
674          /* font-size: 1.2em; */
675     }
676     TH {
677       text-align: left;
678       border-bottom: 1px solid #aac;
679       padding: 0.25em 0.5em 0.25em 0.5em;
680     } 
681     TD { padding: 0.25em 0.5em 0.25em 0.5em; }
682     -->
683EOF
684))
685
686
687
688(if (eggdoc->html
689     doc 
690     `( (eggdoc-style . ,(lambda (tag)
691                           `("<style type=\"text/css\">" ,(nemo-eggdoc:css)
692                             "</style>")))
693       
694        (comment
695         *macro*
696         . ,(lambda (tag . content) `(p . ,content))) 
697                         
698        (ebnf-def       ; Term definition
699         *macro*
700         . ,(lambda (tag term-def . others)
701              `(dl (dt (b (tt ,term-def)) (tt " ::= "))
702                   (dd ,@others))))
703                         
704        (ebnf-kw        ; Keyword
705         *macro*
706         . ,(lambda (tag kw)
707              `((b (tt ,kw)))))
708                         
709        (ebnf-var       ; Variable
710         *macro*
711         . ,(lambda (tag varname) `("{" (i ,varname) "}")))
712                         
713        (ebnf-choice    ; Choice of terms
714         *macro*
715         . ,(lambda (tag . terms)
716              (intersperse terms `(tt " | "))))
717
718        (ebnf-opt       ; Optional terms
719         . ,(lambda (tag . terms)
720              `(" [" ,@terms "] ")))
721                         
722        (ebnf-form      ; ( ... ) Form
723         *macro*
724         . ,(lambda (tag . terms)
725              `("( " ,@(intersperse terms " ") " )")))
726
727        (ebnf-compound  ; Compound form
728         *macro*
729         . ,(lambda (tag term-def . others)
730              `(dl (dt (b (tt ,term-def)) )
731                   (dd ,@others))))
732                         
733        ,@(eggdoc:make-stylesheet doc) ))
734   
735    (void))
Note: See TracBrowser for help on using the repository browser.