;;; compiler.skb -- The Skribilo compiler. ;;; -*- coding: iso-8859-1 -*- ;;; ;;; Copyright 2008, 2012 Ludovic Courtès <ludo@gnu.org> ;;; Copyright 2001, 2002, 2003, 2004 Manuel Serrano ;;; ;;; ;;; 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/>. ;*---------------------------------------------------------------------*/ ;* The compiler */ ;*---------------------------------------------------------------------*/ (chapter :title "Skribilo Compiler" :ident "compiler" (index "skribilo" :note "compiler") (p [This chapter introduces the Skribilo compiler, i.e., the tool that turns input documents into various output formats.]) ;; Synopsis (section :title "Synopsis" :number #f (p (compiler-command "skribilo" "options" "input"))) ;; Description (section :title "Description" :number #f (p [The ,(tt [skribilo]) compiler turns Skribilo input documents into one of a variety of output formats, including HTML, LaTeX and Lout. The input format is specified using the ,(tt [--reader]) command-line option, while the output format is specified using the ,(tt [--target]) option. These options and others are described below.])) ;; Suffixes (section :title "Suffixes" :number #f (p [A number of file name extensions are used by convention: ,(description (item :key (tt ".skb") [a Skribilo or Skribe source file.]) (item :key (tt ".html") [an HTML target file.]) (item :key (tt ".lout") [a Lout target file.]) (item :key (tt ".tex") [a TeX, LaTeX or ConTeXt target file.]) (item :key (tt ".sui") [a Skribe URL index file.]))])) ;; Options (section :title "Options" :number #f (mark "skribilo compiler options") (p [The options supported by the ,(tt [skribilo]) compiler are listed below. They follow the usual GNU convention, i.e., each option can have both a short name (a hyphen followed by a single character) and a long name (two hyphens followed by a name).]) (index "compatibility" :note "Skribe compatibility mode") (p (compiler-options '(skribilo) `(#\h ,[Produce a help message.]) `(#\V ,[Show program version.]) `(#\R "reader" ,[Use ,(tt "reader") to read the input file, i.e., as the format of the input file. Currently, two formats are supported: ,(tt [skribe]), which corresponds to the Skribe syntax (see ,(numref :text [Chapter] :ident "syntax")), or ,(tt [outline]), which corresponds to plain text (markup-less) following the structuring conventions of Emacs' Outline mode (see ,(numref :text [Section] :ident "outline-syntax")).]) `(#\t "engine" ,[Use ,(tt "engine") as the engine, i.e., as the output format. For details on engines and for a list of supported engines, see ,(numref :text [Chapter] :ident "engines").]) `(#\c "custom=value" ,[Set engine custom ,(tt [custom]) to ,(tt [value]), a constant. See Section ,(ref :subsection "Engine Customs") for more information on customs.]) `("compat" "compat" ,[Use ,(tt "compat") as the compatibility mode. This defaults to ,(tt [skribilo]). Specifying ,(tt [skribe]) enables the ,(ref :text [Skribe] :url *skribe-url*) compatibility mode, making it possible to compile most Skribe documents. Technically, the ,(tt [skribe]) compatibility mode populates the name space of Skribilo documents with bindings available to Skribe documents and that are not available by default to Skribilo documents,(footnote [Skribe uses a single name space for all the code of packages, documents, in addition to bindings provided by the underlying Scheme implementation.]) (e.g., ,(srfi-ref 1) functions, Bigloo's hash table API, etc.); for Skribe functions not available in Skribilo, such as ,(tt [skribe-load]), a compatible implementation is provided.]) `(#\o "file" ,[Write output to ,(tt [file]).]) `(#\I "dir" ,[Prepend ,(tt [dir]) to the document include path.]) `(#\B "dir" ,[Prepend ,(tt [dir]) to the bibliography include path.]) `(#\S "dir" ,[Prepend ,(tt [dir]) to the source include path.]) `(#\P "dir" ,[Prepend ,(tt [dir]) to the image include path.]) `(#\U "dir" ,[Prepend ,(tt [dir]) to the Skribe URL Index (SUI) search path (see ,(numref :text [Section] :ident "sui") for details).]) `(#\b "base" ,[Strip ,(tt [base]) (an arbitrary string, typically an URL) from all hyperlinks when producing ,(ref :ident "html-engine" :text [HTML files]).]) `(#\e "expr" ,[Prepend ,(tt [expr]) to the list of expressions to be evaluated before the input document is processed. ,(tt [expr]) is evaluated in the document's environment/module; thus, this option can be used to pass parameters to the document, e.g., with ,(tt [-e '(define chbouib-enabled? "yes")']).]) `(#\p "file" ,[Pre-load ,(tt [file]) before processing the input document. ,(tt [file]) is evaluated in the document's name space and should be a regular Scheme file, i.e., it cannot use the ,(ref :text [Skribe syntax] :ident "syntax").]) `(#\v "level" ,[Be verbose, unless ,(tt [level]) is ,(tt [0]).]) `(#\w "level" ,[Issue warnings, unless ,(tt [level]) is ,(tt [0]).]) `(#\g "arg" ,[Issue debugging output, unless ,(tt [arg]) is ,(tt [0]). If ,(tt [arg]) is not a number, it is interpreted as a symbol to be watched.]) `("no-color" ,[By default, debugging output is colored on capable terminals such as ,(tt [xterm]) or the Linux console (check your ,(tt [TERM]) environment variable). This option turns coloring off.])))) ;; Environment variables (section :title "Environment Variables" :number #f (p [The ,(tt [skribilo]) command does not pay attention to any specific environment variable. In particular, it does not honor the ,(tt [SKRIBEPATH]) variable that is recognized by Skribe. Instead, you should use the ,(tt [-I]) command-line option to specify the load path of ,(emph [documents]) (see ,(markup-ref "include")), or, alternatively, change the value of the ,(tt [GUILE_LOAD_PATH]) variable, which affects Guile's own module load path.]))) ;;; Local Variables: ;;; ispell-local-dictionary: "american" ;;; End: