summary refs log tree commit diff
path: root/skribe/doc/user/prgm.skb
diff options
context:
space:
mode:
authorLudovic Court`es2005-06-15 13:00:39 +0000
committerLudovic Court`es2005-06-15 13:00:39 +0000
commitfc42fe56a57eace2dbdb31574c2e161f0eacf839 (patch)
tree18111570156cb0e3df0d81c8d104517a2263fd2c /skribe/doc/user/prgm.skb
downloadskribilo-fc42fe56a57eace2dbdb31574c2e161f0eacf839.tar.gz
skribilo-fc42fe56a57eace2dbdb31574c2e161f0eacf839.tar.lz
skribilo-fc42fe56a57eace2dbdb31574c2e161f0eacf839.zip
Initial import of Skribe 1.2d.
Initial import of Skribe 1.2d.


git-archimport-id: lcourtes@laas.fr--2004-libre/skribilo--devel--1.2--base-0
Diffstat (limited to 'skribe/doc/user/prgm.skb')
-rw-r--r--skribe/doc/user/prgm.skb121
1 files changed, 121 insertions, 0 deletions
diff --git a/skribe/doc/user/prgm.skb b/skribe/doc/user/prgm.skb
new file mode 100644
index 0000000..c894614
--- /dev/null
+++ b/skribe/doc/user/prgm.skb
@@ -0,0 +1,121 @@
+;*=====================================================================*/
+;*    serrano/prgm/project/skribe/doc/user/prgm.skb                    */
+;*    -------------------------------------------------------------    */
+;*    Author      :  Manuel Serrano                                    */
+;*    Creation    :  Fri Nov 30 09:21:11 2001                          */
+;*    Last change :  Wed Sep 22 02:11:49 2004 (serrano)                */
+;*    Copyright   :  2001-04 Manuel Serrano                            */
+;*    -------------------------------------------------------------    */
+;*    Computer programs                                                */
+;*=====================================================================*/
+
+;*---------------------------------------------------------------------*/
+;*    fib ...                                                          */
+;*---------------------------------------------------------------------*/
+(define (fib x) ;!fib
+   (if (< x 2)
+       1
+       (+ (fib (- x 1)) (fib (- x 2)))))
+
+;*---------------------------------------------------------------------*/
+;*    Computer programs                                                */
+;*---------------------------------------------------------------------*/
+(chapter :title "Computer programs" 
+
+(p [It is common that some parts of a Skribe text represent other
+texts. For instance, for a document describing a computer programming
+language, it is frequent to include excerpt of programs. These
+embedded texts are frequently displayed in a specific font and with no
+justification but with a precise ,(emph "indentation"). This indentation is
+important because it helps in understanding the text,(begin ";")
+it is thus desirable to preserve it in the Skribe text. The
+,(markup-ref "pre") text layout already enables such a
+text formating. This chapter presents two new Skribe functions:
+,(markup-ref "prog") and ,(markup-ref "source") that is specially 
+designed to represent computer programs in Skribe text.])
+
+;*---------------------------------------------------------------------*/
+;*    Programs ... @label prog@                                        */
+;*---------------------------------------------------------------------*/
+(section :title "Program"
+
+(p [A ,(code "prog") function call preserves the indentation of the
+program. It may automatically introduce line numbers.])
+
+(doc-markup 'prog
+	    `((:line ,[Enables/disables automatic line numbering. An integer
+               value enables the line number and specifies the number of
+               the first line of the program. A value of ,(code "#f") disables
+               the line numbering.])
+	      (:linedigit ,[The number of digit for representing line
+               numbers.])
+	      (:mark ,[A string or the boolean ,(code "#f"). If this option 
+               is a string, that string is the prefix 
+               of line marks. These marks can be used in the 
+               ,(markup-ref "ref") reference. A mark
+               identifier is defined by the regular expression:
+               ,(code [,(char "[")_a-zA-Z,(char "]"),(char "[")_a-zA-Z0-9,(char "]")*]). The prefix and the mark are removed from the output program.]))
+	    :force-engines *api-engines*
+	    :see-also '(source pre ref))
+
+(example-produce 
+ (example :legend "A program" (prgm :file "src/prgm1.skb"))
+ (disp (include "src/prgm1.skb"))))
+
+;*---------------------------------------------------------------------*/
+;*    Source code ... @label source@                                   */
+;*---------------------------------------------------------------------*/
+(section :title "Source code"
+
+(p [The ,(code "source") function extracts part of the source code and
+enables ,(emph "fontification"). That is, some words of the program
+can be rendered using different colors or faces.])
+
+;!source-start
+(doc-markup 'source
+	    `((:language ,[The ,(markup-ref "language") of the source code.])
+	      (:file ,[The file containing the actual source code. The file
+               is searched in the ,(markup-ref "skribe-source-path") path.])
+	      (:start [A start line number or a start marker.])
+	      (:stop [A stop line number or a stop marker.])
+	      (:definition [The identifier of the definition to extract.])
+	      (:tab [The tabulation width.]))
+	    :common-args '()
+	    :force-engines *api-engines*
+	    :see-also '(prog language ref skribe-source-path))
+;!source-stop
+   
+(example-produce 
+ (example :legend "The source markup" (prgm :file "src/prgm2.skb"))
+ (disp (include "src/prgm2.skb"))))
+
+;*---------------------------------------------------------------------*/
+;*    Language ... @label language@                                    */
+;*---------------------------------------------------------------------*/
+(section :title "Language"
+(index "source" :note "fontification")
+(index "fontification")
+
+(p [The ,(code "language") function builds a language that can be used
+in ,(markup-ref "source") function call.])
+
+(doc-markup 'language
+	    `((:name [A string which denotes the name of the language.])
+	      (:fontifier [A function of one argument (a string), that
+               colorizes a line source code.])
+	      (:extractor [A function of three arguments: an input port,
+               an identifier, a tabulation size. This function ,(emph "scans")
+               in the input port the definition is looks for.]))
+	    :common-args '()
+	    :force-engines *api-engines*
+	    :see-also '(prog source ref))
+
+; **** FIXME:
+(cond-expand
+   (bigloo
+    (example-produce 
+     (example :legend "An ad-hoc fontification"
+	      (prgm :file "src/prgm3.skb"))
+     (disp (include "src/prgm3.skb"))))
+   (else
+    '()))))