4. Skribilo User Manual — References and Hyperlinks |
Skribilo supports traditional cross-references (that is, references to some part of documents) and hyperlinks (that is, visual marks enriching texts that enable interactive browsing). Hyperlinks and references may point to:
The mark
function sets a mark in the produced document
that can be referenced to with the ref
function. Unless a :text option is specified, no visible text
in associated with the mark in the generated document.
(mark [:text] [:class "mark"
] [:ident] mark
)
mark
A string that will be used in a
ref function call to point to that mark.The Skribe functions
chapter
, section
, subsection
, subsubsection
Skribe automatically set a mark whose value is the title of the section.
The Skribe function figure
automatically sets a mark whose value is the legend of the figure.
Skribilo proposes a single function that can be used for most references.
This same ref
function is used for introducing references to
section, to bibliographic entries, to source code line number, etc.
(ref [:sort-bib-refs bib-sort-refs/number
] [:page] [:skribe] [:line] [:handle] [:mark] [:figure] [:url] [:bib-table (*bib-table*)
] [:bib] [:subsubsection] [:subsection] [:section] [:chapter] [:text] [:ident] [:class])
(ref :bib
'("smith81:disintegration" "corgan07:zeitgeist"))
,
this should be a two-argument procedure suitable
for sorting. The default procedure sorts references
by number, when the-bibliography
uses
the number
labeling style. If it is
#f
, then references will not be sorted. Sometimes, it is useful to produce phrases that refer a section by
its number, as in ``See Section 2.3''. This is especially useful on
printed documents, as produced by the Lout and LaTeX engines. The
numref
markup is provided to that end:
(numref [:class] [:separator "."
] [:page] [:text ""
] [:ident])
ref
.[This hyperlink points to the ,(ref :figure "The great Penguin" :text "figure") of the chapter ,(ref :chapter "Standard Markups") (or also, the ,(ref :ident "std-markups" :text "chapter") about markups). In the second example of reference, no ,(code ":text") option is specified: ,(ref :figure "The great Penguin"). One may use the ,(param ":ident") field when specified such as: ,(ref :ident "fig1") or ,(ref :figure "fig1"). ,(linebreak) That other one points to a well known ,(ref :url "http://slashdot.org/" :text "url"). The same without ,(code ":text"): ,(ref :url "http://slashdot.org/"). ,(linebreak) And one can also refer to sections by number, as in ``see ,(numref :text [Wonderful Section] :ident "refs")''. ,(linebreak) With more complex tricks that are explained in Section ,(ref :section "Resolve"), it is also possible use, for the text of the reference, a container number such as chapter: ,(resolve (lambda (n e env) (let ((s (find1-down (lambda (x) (and (is-markup? x 'chapter) (string=? (markup-option x :title) "Standard Markups"))) (ast-document n)))) (ref :handle (handle s) :text (markup-option s :number))))).]
... produces:
:text
option is specified:
1. One may use the :ident
field when specified such as: fig1 or .
:text
: http://slashdot.org/.
The mailto
function is mainly useful for electronic
output formats that are able to run a mailing agent. The function mailto
introduces mail annotation in a Skribe document.
(mailto :text [:class "mailto"
] [:ident] email
)
email
The electronic address.... produces:
:text
options: foo@nowhere.com.
A Skribe URL Index (henceforth SUI) describes the marks
that are available in a Skribe or Skribilo document. It is to be used
to make marks available to other Skribe/Skribilo documents through the
:skribe option of the ref
markup. The syntax
of a SUI file is:
<sui> --> (skribe-url-index <title> :file <file-name> (marks <sui-ref>*) (chapters <sui-ref>*) (section <sui-ref>*) (subsection <sui-ref>*) (subsubsection <sui-ref>*)) <sui-ref> --> (<string> :file <file-name> :mark <string>)
SUI files can be automatically produced by the Skribilo compiler. For instance, in order to produce the SUI file of this user manual, one should set the emit-sui HTML custom to #t; a user.sui file will then be produced when the manual is compiled to HTML:
skribilo -t html -o user.html user.skb