aboutsummaryrefslogtreecommitdiff
path: root/doc/user/eq.skb
blob: 91faf11594de9d19dd30d909a8ae2afab858be6b (plain)
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
39
40
41
42
43
44
45
46
47
48
49
50
51
52
53
54
55
56
57
58
59
60
61
62
63
64
65
66
67
68
69
70
71
72
73
74
75
76
77
78
79
80
81
82
83
84
85
86
87
88
89
90
91
92
93
94
95
96
97
98
99
100
101
102
103
104
105
106
107
108
109
110
111
112
113
114
115
116
117
118
119
120
121
122
123
124
125
126
127
128
129
130
131
132
133
134
135
;;; eq.skb  --  Equation formatting.
;;; -*- coding: iso-8859-1 -*-
;;;
;;; Copyright 2006, 2007, 2008, 2009, 2012  Ludovic Court�s <ludo@gnu.org>
;;;
;;;
;;; This file is part of Skribilo.
;;;
;;; Skribilo is free software: you can redistribute it and/or modify
;;; it under the terms of the GNU General Public License as published by
;;; the Free Software Foundation, either version 3 of the License, or
;;; (at your option) any later version.
;;;
;;; Skribilo is distributed in the hope that it will be useful,
;;; but WITHOUT ANY WARRANTY; without even the implied warranty of
;;; MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE.  See the
;;; GNU General Public License for more details.
;;;
;;; You should have received a copy of the GNU General Public License
;;; along with Skribilo.  If not, see <http://www.gnu.org/licenses/>.

;;; FIXME: This is a stub and must be completed!

(chapter :title [Equation Formatting] :ident "equations"
   
   (p [Skribilo comes with an equation formatting package.  This package
may be loaded by adding the following form at the top of your document:]

	(disp (prog (source :language scheme
		       [(use-modules (skribilo package eq))])))
	
      [It allows the inclusion of (complex) equations in your documents,
such as, for example, the following:]
	
	(disp (eq :renderer (if (and %have-lout?
	                             (engine-format? "html"))
	                        'lout
				 #f)
                  :ident "eq-disponibilite"
		  `(= (apply A D)
		      (sum :from (= i b) :to (* S b)
			   (* (script :sup (* S b) :sub i C)
			      (* (expt mu i)
				 (expt (- 1 mu)
				       (- (* S b) i))))))))
	
      [This chapter will describe the syntactic facilities available to
describe equations, as well as the rendering options.])
   
   (section :title [Syntax]
            :info-node [Eq Syntax]
      
      (p [To start with, let's have a look at a concrete example. ]
	
        (example-produce
	  (example :legend "Example of a simple equation using the verbose syntax"
	     (prgm :file "src/eq1.skb"))
	  (disp (include "src/eq1.skb")))

  	[In this example, the ,(tt [eq:]) sub-markups are used pretty
much like any other kind of markup.  However, the resulting syntax
is very verbose and hard to read.])
      
      (p [Fortunately, the ,(tt [eq]) package allows for the use of a
much simpler syntax.  ]

	(example-produce
	  (example :legend "Example of a simple equation"
	     (prgm :file "src/eq2.skb"))
	  (disp (include "src/eq2.skb")))
	
	[Readers familiar with the Lisp family of programming languages
may have already recognized its ,(emph [prefix notation]).  Note that,
unlike in the previous example, the equation itself if ,(emph [quoted]),
that is, preceded by the ,(tt [']) sign.  Additionally, when referring
to a symbol (such as the Greek letter ,(symbol "phi")), you no longer
need to use the ,(tt [symbol]) markup (,(numref :text [see Section]
:ident "symbols")).])

      (p [It is possible to create ,(emph [equation display blocks]),
where several equations are displayed and aligned according to a
particular operator. ]

	(example-produce
	  (example :legend "Inlined, displayed, and aligned equations"
	     (prgm :file "src/eq3.skb"))
	  (disp (include "src/eq3.skb")))))
   
   ;; FIXME: Write this.
   (section :title [Rendering])
   
   (section :title [Summary]
      
      (p [The options available for the top-level ,(code [eq]) markup
are summarized here:])
      
      (doc-markup 'eq
	          `((:inline? ,[If ,(code [auto]), Skribilo will
automatically determine whether the equation is to be "in-line".
Otherwise, it should be a boolean indicating whether the equation is to
appear "in-line", i.e., within a paragraph.  If the engine supports it,
it may adjust various parameters such as in-equation spacing
accordingly.])
		    (:number ,[If true, then a number is automatically
assigned to the equation and displayed.  If it is a string, then that
string is used as the equation's number.  If ,(code [#f]), then the
equation is left unnumbered.  Note that this option is only taken into
account for displayed equations.])
	            (:renderer ,[The engine that should be used to render
the equation.  This allows, for instance, to use the Lout engine to
render equations in HTML.])
	            (:mul-style ,[A symbol denoting the default style for
multiplications.  This should be one of ,(code [space]), ,(code
[cross]), ,(code [asterisk]) or ,(code [dot]).])
	            (:div-style ,[A symbol denoting the default style for
divisions.  This should be one of ,(code [over]), ,(code [fraction]),
,(code [div]) and ,(code [slash]).  Per-,(code [eq:/]) ,(code
[:div-style]) options override this setting.])
	            (:align-with ,[Within a ,(code [eq-display]) block,
this should be a symbol specifying according to which operator equations
are to be aligned with one another.]))
	          :source "skribilo/package/eq.scm")
      
      (p [Equation display blocks can be defined using ,(code
[eq-display]).  Display blocks define the scope of the alignment among
equations as specified by the ,(code [:align-with]) options of ,(code
[eq]).])
      
      (doc-markup 'eq-display
	          `()
	          :source "skribilo/package/eq.scm"))

   )

;;; arch-tag: e9c83c13-205f-4f68-9100-b445c21b959c