summaryrefslogtreecommitdiff
path: root/doc/user/markup.skb
blob: 497631a3521c8cea885e893b79c386ea52ba6cc3 (about) (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
;;; markup.skb  --  The Skribilo standard markups
;;; -*- coding: iso-8859-1 -*-
;;;
;;; Copyright 2007, 2008  Ludovic Court�s <ludo@gnu.org>
;;; Copyright 2003, 2004  Manuel Serrano
;;;
;;;
;;; This program 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 2 of the License, or
;;; (at your option) any later version.
;;;
;;; This program 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 this program; if not, write to the Free Software
;;; Foundation, Inc., 51 Franklin Street, Fifth Floor, Boston, MA 02110-1301,
;;; USA.

;*---------------------------------------------------------------------*/
;*    API                                                              */
;*---------------------------------------------------------------------*/
(chapter :title "Standard Markups" :ident "std-markups"

   (p [This chapter describes the forms composing Skribilo texts that
use the Skribe syntax (see ,(numref :text [Section] :ident
"skribe-syntax")).  In XML/HTML jargon these forms are called ,(emph
"markups").  In LaTeX they are called ,(emph "macros").  In Skribilo
these forms are called ,(emph "functions").  In this manual, we will say
that we ,(emph "call a function") when a function is used in a form.
The values used in a function call are named the ,(emph "actual
parameters") of the function or ,(emph "parameters") in short.  When
calling a function with parameters we say that we are ,(emph "passing")
arguments to the function.])

   (p [In this document function names are typeset in boldface.  We call
,(emph "keyword argument") a named argument, i.e., an argument whose
name, starting with a colon (,(tt [:])), must be specified when the
function is called.  Other arguments are called ,(emph "plain
arguments") or ,(emph "arguments") for short.  An ,(emph "optional
argument") is represented by a list, starting with the character ,(q
(char 91)) and ending with the character ,(q (char 93)), whose first
element is a keyword argument and the optional second (,(code "#f") when
not specified) element is the default value used if the optional
argument value is not provided on a function call.  Arguments that are
not optional are said ,(emph "mandatory").  If a plain argument is
preceded by a ,(tt ".")  character, this argument may be used to
accumulate several values.  There are two ways to pass actual arguments
to a function:]

(itemize (item [for keyword arguments: the value of the parameter
must be preceeded by the name of the argument.])
	  (item [for plain arguments: a value is provided.]))

[Example: Let us consider the function ,(tt "section") defined as follows:
,(prgm "(section :title [:number #t] [:toc #t] . body)")
The argument ,(param :title) is a mandatory keyword argument.
The keyword arguments ,(param :number) and ,(param :toc) are
optional. The plain argument ,(param 'body) is preceeded with a
,(tt ".") character so it may receive several values. All the following
calls are legal ,(tt "section") calls:]

(prgm (source :file "src/api1.skb")))
   
   (p [The remainder of this chapter describes ``standard'' markups or
functions that are commonly used in documents.  By ``standard'', we mean
two things: first, you will quickly notice that they look familiar if
you have ever written, say, HTML or LaTeX documents; second, they are
standard because these markups are always available by default to
Skribilo documents, unlike those bundled in separate packages such as
,(ref :ident "pie-charts" :text [pie charts]), ,(ref :text [slides]
:ident "slides"), etc.  In fact, these markups are also bundled in a
package, called ,(tt [base]), but this package is always available to
Skribilo documents,(footnote [When creating Skribilo documents within
Guile Scheme programs (see ,(numref :text [Section] :ident
"scheme-syntax")), these standard markups can be made available by using
the following clause: ,(code [(use-modules (skribilo package
base))]).]).])


;*---------------------------------------------------------------------*/
;*    Markup index ...                                                 */
;*---------------------------------------------------------------------*/
(resolve (lambda (n e env)
	   (and (not (engine-format? "lout" e))
		(section :title "Markup Index" :ident "markups-index"
		         :file #f :number #f :toc #t
		   (the-index :class 'markup-index 
		      :column (if (engine-format? "latex") 2 4)
		      :split #f
		      *markup-index*)))))

;*---------------------------------------------------------------------*/
;*    Markups                                                          */
;*---------------------------------------------------------------------*/
(include "document.skb")
(include "spacing.skb")
(include "sectioning.skb")
(include "toc.skb")
(include "ornament.skb")
(include "line.skb")
(include "font.skb")
(include "justify.skb")
(include "enumeration.skb")
(include "colframe.skb")
(include "figure.skb")
(include "image.skb")
(include "table.skb")
(include "footnote.skb")
(include "char.skb"))

;; Local Variables:
;; ispell-local-dictionary: "american"
;; comment-start: ";"
;; comment-end: ""
;; End: