Simbel: Difference between revisions

From XionKB
Jump to navigationJump to search
(→‎Conceptual overview: add opening paragraph, plus details about output modes)
(→‎Interface: new section)
Line 39: Line 39:
====Abu format====
====Abu format====
Simbel will provide a stabilised public ABI via a file format that contains all of the necessary data and metadata for output. This allows others to target new formats using nothing more than the knowledge of this file format, and it also allows dynamic rendering and navigation in the form of editor plugins. Abu also serves as the "intermediate representation" that Simbel uses to instantiate its templates for XHTML, HTML and LaTeX.
Simbel will provide a stabilised public ABI via a file format that contains all of the necessary data and metadata for output. This allows others to target new formats using nothing more than the knowledge of this file format, and it also allows dynamic rendering and navigation in the form of editor plugins. Abu also serves as the "intermediate representation" that Simbel uses to instantiate its templates for XHTML, HTML and LaTeX.
==Interface==
; Program name
: <code>simbel</code><sup>Unix</sup> <code>SIMBEL.COM</code><sup>DOS</sup>
; Verbs
:; <code>check</code> check a schematic for validation and resource satisfiability
:: <code>[schematic file]</code> the schematic to check for validity
:: <code>--verbose</code>, <code>-v</code> be verbose about the checking process
:; <code>graph</code> graph a schematic's resource dependencies
:: <code>[schematic file]</code> the schematic to graph
:: <code>--ascii</code>, <code>-a</code> <sub>optional</sub> output in ASCII to <tt>stdout</tt> (this is the default when no flag is given)
:: <code>--vector</code>, <code>-v</code> <sub>optional</sub> output in vector graphics format to <tt>stdout</tt>
:; <code>render</code> render a schematic into a file
:: <code>[schematic file]</code> the schematic to render from
:: <code>[output file]</code> the output file to be rendered
:: <code>--guess</code>, <code>-g</code> <sub>optional</sub> guess the output format from the file extension (this is the default when no flag is given)
:: <code>--xhtml</code>, <code>-x</code> <sub>optional</sub> output to XHTML 1.0
:: <code>--dvi</code>, <code>-d</code> <sub>optional</sub> output to DVI
:; <code>pack</code> pack up a schematic for preservation or transmission
:: <code>[schematic file]</code> the schematic to pack
:: <code>[abu archive file]</code> the Abu-compatible archive file to output to
:: <code>--fat</code>, <code>-f</code> <sub>optional</sub> output a fat archive, embedding all resources (this is the default when no flag is given)
:: <code>--thin</code>, <code>-t</code> <sub>optional</sub> output a thin archive, only referencing all resources


[[Category:Byblos components]]
[[Category:Byblos components]]

Revision as of 08:21, 31 July 2023

This article is a stub. You can help by expanding it.
The emblem for the Simbel software.

Simbel is a document generation tool that consumes several categories of input information to create an abstract document tree that can then be rendered logically into various publication mediums including XHTML, HTML5, and PDF (and therefore including print).

Conceptual overview

The central object of Simbel is a schematic which references all of the input in their various forms, including details about their placement, weight, truncation and other context. This schematic can then be rendered into one of several output formats described below, or it may be finalised and compressed as-is in the Abu format for preservation or further processing by other tools. The schematic itself never contains the content, not even text.

Forms of input

Simbel ingests several forms of content input, including:

  • Cliffdocs — a terse, source-embedded form of code documentation
  • Manual pages, or "manpages" — long-form literature text that explains code in-depth
  • Diagrams — flowcharts and other easily vectorised technical graphics that aid explanation
  • Photographs — DCT-type raster images for more subjective illustrations
  • Hypermedia — not a direct format but a property of the other input formats that is merged and collated

Abstract document model

The abstract document model, or ADM, is the master blueprint of what will ultimately be rendered into the various output formats. It has the following characteristics:

  • Content block A and Content block B: Two content columns, each of which are sized to hold 76 glyphs
  • Internal links block: A narrow third middle column that gives book—chapter—verse numbers for all of a page's internal references
  • External links block: A full-page footer column that contains a page's external references

Here's a shorthand term list for the above:

  • Content block A → Block A
  • Content block B → Block B
  • Internal links block → Block I
  • External links block → Block E

Publication coherency

One of the biggest challenges imposed by any publication format that targets several kinds of outputs is maintaining layout coherency of complex elements. For example, there may be some passage of text that uses both blocks A and B. But later on, there is an explanatory graphic, and the editor may want this to take precedence over text and float into block B instead.

Simbel solves this problem intelligently using anchors and weights. Anchors are invisible points within your leading text body that are placed in an editor program, relative to which you can tie another piece of content, such as a graphic. They are also used to place both internal and external references. Every visually active anchor (i.e. all anchors containing content except reference anchors) has a weight associated with it, which is a normalised number in the range . A weight of is equivalent to black hole level gravity and will force the anchor's content to be as close to the content in block B as physically possible. The value will compete with the weights of other nearby visually active anchors, so make sure not to put too many highly weighted anchors nearby, as this will destroy the fabric of your document.

Handling output

Simbel targets the following formats for rasterization of its ADM:

  • XHTML 1.0 (for reading on tablets and computers)
    • when rendering with this, dedicated space for blocks I and E are unnecessary, as hyperlinks can be embedded directly
  • DVI (to be translated into page description formats like PDF)
  • Abu format (see below)

Abu format

Simbel will provide a stabilised public ABI via a file format that contains all of the necessary data and metadata for output. This allows others to target new formats using nothing more than the knowledge of this file format, and it also allows dynamic rendering and navigation in the form of editor plugins. Abu also serves as the "intermediate representation" that Simbel uses to instantiate its templates for XHTML, HTML and LaTeX.

Interface

Program name
simbelUnix SIMBEL.COMDOS
Verbs
check check a schematic for validation and resource satisfiability
[schematic file] the schematic to check for validity
--verbose, -v be verbose about the checking process
graph graph a schematic's resource dependencies
[schematic file] the schematic to graph
--ascii, -a optional output in ASCII to stdout (this is the default when no flag is given)
--vector, -v optional output in vector graphics format to stdout
render render a schematic into a file
[schematic file] the schematic to render from
[output file] the output file to be rendered
--guess, -g optional guess the output format from the file extension (this is the default when no flag is given)
--xhtml, -x optional output to XHTML 1.0
--dvi, -d optional output to DVI
pack pack up a schematic for preservation or transmission
[schematic file] the schematic to pack
[abu archive file] the Abu-compatible archive file to output to
--fat, -f optional output a fat archive, embedding all resources (this is the default when no flag is given)
--thin, -t optional output a thin archive, only referencing all resources