source: project/release/3/nemo/trunk/nemo-eggdoc.scm @ 12467

Last change on this file since 12467 was 12467, checked in by Ivan Raikov, 12 years ago

Version set to 1.14.

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