July 31st, 2024

Skribilo: The Document Programming Framework

Skribilo is a free document production tool that converts structured documents into formats like HTML and LaTeX, supporting automation, multiple outputs, and Unicode, distributed under the GNU GPL.

Read original articleLink Icon
Skribilo: The Document Programming Framework

Skribilo is a free document production tool designed to convert structured document representations into various output formats, including HTML, XML, Lout, LaTeX, and Info. It allows users to input documents using its markup language, which resembles HTML or LaTeX, or through a simpler, markup-less format inspired by Emacs' outline mode. Skribilo serves as a comprehensive document programming framework for the Scheme programming language, enabling automation of document generation tasks. The tool is built on an embedded domain-specific language (EDSL) and utilizes GNU Guile 3.0 or 2.x as its Scheme implementation.

Key features of Skribilo include support for multiple output formats, input flexibility, and the ability to produce slides, pie charts, and manage bibliographies. It also supports Unicode and employs a proper module system. Skribilo is distributed under the GNU General Public License, version 3 or later, and requires specific software components, including GNU Guile and either Lout, LaTeX, or ConTeXt for producing hard copies.

Documentation is available in HTML and PDF formats, and users can subscribe to a mailing list for support and suggestions. Development is managed through Git, with a repository accessible for contributions. Skribilo is a successor to the earlier document production tool Skribe, which was developed by Manuel Serrano and has evolved since its inception around 2003.

Related

Igneous Linearizer: semi-structured source code

Igneous Linearizer: semi-structured source code

The Igneous Linearizer project enhances source code in Obsidian Markdown format, enabling features like links and transclusion. It sacrifices AST correctness for compatibility with text editors and Git, benefiting literate programming. Users must follow specific input file formats for optimal use.

SCIM: Ncurses based, Vim-like spreadsheet

SCIM: Ncurses based, Vim-like spreadsheet

The "sc-im" project is an ncurses-based spreadsheet calculator with Vim-like features, supporting UNDO/REDO, 65,536 rows, and 702 columns. It offers various import/export options, customization features, scripting with LUA, and more. Installation guidelines, dependencies, and contribution details are available on the GitHub repository. Users can support the project through various means.

Transcribro: On-device Accurate Speech-to-text

Transcribro: On-device Accurate Speech-to-text

The GitHub repository for "Transcribro" offers project details, downloads, community links, contribution guidelines, donations, branding guidelines, and keyboard UI screenshots. Contact for project-specific support or inquiries.

Building the New Hypermedia Systems

Building the New Hypermedia Systems

The new edition of Hypermedia Systems was redesigned using Typst, a LaTeX replacement, improving design fidelity. Challenges in PDF generation were overcome, enhancing typesetting quality and design flexibility significantly.

Show HN: Slab – A programmable markup language for generating HTML

Show HN: Slab – A programmable markup language for generating HTML

Slab is a programmable markup language simplifying HTML creation with concise syntax, programming features, code reuse, and JSON integration. Open-source under BSD license, maintained by Võ Minh Thu. Tutorials and documentation available.

Link Icon 7 comments
By @JonChesterfield - 5 months
I really like scheme. Strongly in favour of prefix notation. Still cannot imagine having the patience to write significant amounts of prose in this layout when commonmark -> s-expressions or XML or HTML is readily available.

(item [Packages are available to produce: ,(ref :skribe %user-sui :ident "slides" :text [slides]) (overhead transparencies), ,(ref :skribe %user-sui :ident "pie-charts" :text [pie charts]), ,(ref :skribe %user-sui :ident "equations" :text [equation formatting]), ,(ref :skribe %user-sui :ident "programs" :text [syntax highlighting of computer programs]), and others.])

The signal to noise there is not good enough to compete. There's way too much repetition of annotation words.

The links to markup language and the simpler syntax were expected to tell me what the syntax is, not what a markup language is. Maybe the simpler syntax is more workable - the page doesn't show what that looks like.

edit found it in the docs, looks a lot more like markdown. https://www.nongnu.org/skribilo/doc/user-3.html#skribe-synta..., can't seem to link to the subheading.

So maybe this is a good thing with a landing page that drives newcomers away? Quite on brand for scheme if so.

By @XorNot - 5 months
I'm sorry but this looks terrible.

This is an example on the main page:

  (p [Skribilo is a ,(freedom [free]) document production tool that
  takes a structured document representation as its input and renders that
  document in a variety of output formats: HTML and ,(info [Info]) for
  on-line browsing, and ,(lout [Lout]) and ,(latex [LaTeX]) for
  high-quality hard copies.])
...imagine trying to write like this. It's essentially the opposite of what Markdown accomplished, which was taking a bunch of human conventions which were developed mostly out of ease of use (table formatting being the one which doesn't work well IMO) and adapting them so they can be parsed into nice text.

Whereas this takes the most awkward possible syntax and completely ruins what you're looking at.

By @__MatrixMan__ - 5 months
I'm teaching a friend to code. We're not starting with a lisp, but I wanted him to understand why the idea of dispensing with bespoke syntax in favor of s-expressions is not crazy. That is, why the "soul" of a language is not its syntax.

He knows HTML already. Many do, we were raised by Myspace after all. So, this page turned out to be a great example of some nontrivial lisp to look at together. I also love how the code for the page is in the page, so you don't have to look elsewhere to see what it's trying to render.

I may or may not use the tool, but I'm quite happy it exists. Thanks!

By @shrubble - 5 months
I have decided that "this is the year I learn Scheme" so this is very interesting, though it does look a bit intimidating; perhaps there is a "Skribilo-mode" in Emacs that makes it easier, though?
By @kaynyn1 - 5 months
Unless we have linters support for various IDEs and tools, it gets extremely annoying to keep adding tabs/spaces wherever required. Markdown shines in this aspect as I can take a basic vi and create a document that gets formatted to acceptable levels.
By @NackerHughes - 5 months
Not to be confused with the online Pictionary clone Skribblio https://skribbl.io/
By @benterix - 5 months
i have to admit this looks neat:

(mark "self")