79 lines
No EOL
7.1 KiB
HTML
79 lines
No EOL
7.1 KiB
HTML
<!DOCTYPE html>
|
|
<html>
|
|
<head>
|
|
<meta http-equiv="Content-Type" content="text/html; charset=utf-8">
|
|
<title>CLiki: Scribble</title>
|
|
<link rel="alternate" type="application/atom+xml" title="ATOM feed of edits to current article"
|
|
href="https://www.cliki.net/site/feed/article.atom?title=Scribble">
|
|
<link rel="stylesheet" href="static/css/style.css">
|
|
<link rel="stylesheet" href="static/css/colorize.css">
|
|
</head>
|
|
|
|
<body>
|
|
<span class="hidden">CLiki - Scribble</span>
|
|
<div id="content"><div id="content-area"><div id="article-title">Scribble</div><div id="article">Scribble extends the Common Lisp reader with the text markup syntax of <a href="http://www-sop.inria.fr/members/Manuel.Serrano/scribe/doc/scribe.html">Scribe</a>/<a href="http://www-sop.inria.fr/mimosa/fp/Skribe/">Skribe</a> and <a href="https://docs.racket-lang.org/scribble/reader.html">Scribble</a> <a href="document preparation.html" class="category">document preparation</a> systems.<p>The Scribe being discussed is the Scheme-based document preparation system by Manuel Serrano, the author of Bigloo. It is not the antique system of same name that inspired LaTeX and was used in early <a href="CMUCL.html" class="internal">CMUCL</a> documentation. Its successor is named Skribe. Scribble is a syntax extension for the Racket system, developed by Eli Barzilay. It was named Scribble independently from the first version of this library, that predated it, and initially only supported an extension of the Skribe syntax.<p>In Skribe mode, Scribble defines #\[ as a <a href="Macro Characters.html" class="internal">macro-character</a> that reads a Lisp-extended markup language.
|
|
Scribble may be useful to you if like Skribe's syntax and want to use it in Common Lisp <a href="application.html" class="internal">application</a>. At one point, my documents could compile on both Manuel Serrano's Bigloo-based Scribe and my own CL-based <a href="Exscribe.html" class="internal">Exscribe</a>, though support for this may have bitrotten.<p>The <a href="http://www-sop.inria.fr/mimosa/fp/Skribe/">Skribe</a> syntax is a markup syntax that allows to develop documents in a programmatic way.
|
|
The syntax integrates very nicely with the LISP syntax;
|
|
it is infinitely nicer than <a href="XML.html" class="internal">XML</a> (easy thing to do);
|
|
and it is noticeably shorter than the equivalent SEXP it produces.
|
|
<ul>
|
|
<li> [foo ,(bar [baz]) quux] is read as (LIST "foo " (bar "baz") " quux")
|
|
</li>
|
|
</ul>
|
|
Scribble also contains some extensions to the Scribe syntax:
|
|
<ul>
|
|
<li> [:emph foo] is read as (emph "foo")
|
|
</li>
|
|
<li> [: (font :size 1) bar] is read as (font :size 1 "bar")
|
|
</li>
|
|
<li> [foo ,[:emph bar] baz] is (list "foo" (emph "bar") "baz")
|
|
</li>
|
|
<li> [\:\\\[\]] is read as ":\[]" (well, actually that's ":\\[]")
|
|
</li>
|
|
</ul>
|
|
The actual result is configurable, and configurations already exist for several html generation backends (see below).<p>Scribble also features an optional extension to Scribe's semantics: [foo] can be actually read as (pp "foo") rather than "foo", so you can wrap or preprocess strings. You can for instance (with-preprocessor #'string-upcase [foo]). This applies to the strings in the cases demonstrated above; they have been shown with this extension disabled for the sake of simplicity.<p>Scribble source code is at:
|
|
<a href="https://gitlab.common-lisp.net/frideau/scribble">https://gitlab.common-lisp.net/frideau/scribble</a><p>Scribble depends on <a href="Meta.html" class="internal">Meta</a> by <a href="Jochen Schmidt.html" class="internal">Jochen Schmidt</a>, version 1.0.0 or later, that implements the famous META parsing technique as documented by Henry Baker.<p>Mind that this package emphatically does <em>not</em> implement any of Skribe's semantics.
|
|
It only implements the reader.
|
|
In particular, it doesn't include an implementation of Skribe's semantics for keyword arguments, and it doesn't include any infrastructure to output HTML, LaTeX, info, <a href="Text.html" class="internal">Text</a>, etc., from Scribe documents.
|
|
Instead, Scribble will be a nice front-end for your usual CL <a href="Web.html" class="category">Web</a> infrastructure or <a href="Lisp Markup Languages.html" class="category">Lisp Markup Languages</a>, if only customized with the proper <a href="https://www.cliki.net/site/HyperSpec/Body/any_setf.html" class="hyperspec">setf</a>.
|
|
The html generation backends from the following packages are already supported in version 1.18:
|
|
<a href="lml2.html" class="internal">lml2</a>, <a href="htmlgen.html" class="internal">htmlgen</a> from <a href="allegroserve.html" class="internal">allegroserve</a>, and also <a href="araneida.html" class="internal">araneida</a> (with a patch);
|
|
should work but untested: <a href="cl-who.html" class="internal">cl-who</a>, <a href="htout.html" class="internal">htout</a>, <a href="yaclml.html" class="internal">yaclml</a>.<p>However, for <a href="HTML.html" class="internal">HTML</a>-producing semantics, see <a href="Exscribe.html" class="internal">Exscribe</a>,
|
|
that uses Scribble as its default syntax reader.</div></div>
|
|
<div id="footer" class="buttonbar"><ul><li><a href="Scribble.html">Current version</a></li>
|
|
<li><a href="https://www.cliki.net/site/history?article=Scribble">History</a></li>
|
|
<li><a href="https://www.cliki.net/site/backlinks?article=Scribble">Backlinks</a></li><li><a href="https://www.cliki.net/site/edit-article?title=Scribble&from-revision=3812810996">Edit</a></li><li><a href="https://www.cliki.net/site/edit-article?create=t">Create</a></li></ul></div>
|
|
</div>
|
|
<div id="header-buttons" class="buttonbar">
|
|
<ul>
|
|
<li><a href="https://www.cliki.net/">Home</a></li>
|
|
<li><a href="https://www.cliki.net/site/recent-changes">Recent Changes</a></li>
|
|
<li><a href="CLiki.html">About</a></li>
|
|
<li><a href="Text Formatting.html">Text Formatting</a></li>
|
|
<li><a href="https://www.cliki.net/site/tools">Tools</a></li>
|
|
</ul>
|
|
<div id="search">
|
|
<form action="https://www.cliki.net/site/search">
|
|
<label for="search_query" class="hidden">Search CLiki</label>
|
|
<input type="text" name="query" id="search_query" value="" />
|
|
<input type="submit" value="search" />
|
|
</form>
|
|
</div>
|
|
</div>
|
|
<div id="pageheader">
|
|
<div id="header">
|
|
<span id="logo">CLiki</span>
|
|
<span id="slogan">the common lisp wiki</span>
|
|
<div id="login"><form method="post" action="https://www.cliki.net/site/login">
|
|
<label for="login_name" class="hidden">Account name</label>
|
|
<input type="text" name="name" id="login_name" class="login_input" />
|
|
<label for= "login_password" class="hidden">Password</label>
|
|
<input type="password" name="password" id="login_password" class="login_input" />
|
|
<input type="submit" name="login" value="login" id="login_submit" /><br />
|
|
<div id="register"><a href="https://www.cliki.net/site/register">register</a></div>
|
|
<input type="submit" name="reset-pw" value="reset password" id="reset_pw" />
|
|
</form>
|
|
</div>
|
|
</div>
|
|
</div>
|
|
</body></html> |