Files
exepub.el/README.org

91 lines
4.8 KiB
Org Mode
Raw Permalink Normal View History

2025-07-10 19:38:01 +02:00
#+TITLE: exepub: A Flexible Emacs-Based Publication Workflow
#+AUTHOR: Emmanuele Somma
#+DATE: 2025-07-10
#+DESCRIPTION: A complete introduction to the design, concepts and usage
of the exepub package for Emacs, supporting academic-quality article
production, embargo management and multi-channel dissemination.
* Purpose
exepub was conceived to bridge the gap between rigorous academic writing
and modern multi-platform publication. It provides Emacs users with a
coherent set of commands and directory conventions to author, track,
export and disseminate digital assets—be they full-length articles,
short essays or multimedia derivatives—while preserving bibliographic
references, embargo rules and distribution metadata in a single Org-mode
workflow.
* Core Concepts
At its heart exepub treats every piece of writing as an “asset” that
passes through well-defined stages: draft, dissemination (archive) and
manifestation. A draft lives in a dedicated directory, named with a
timestamp, a sanitized slug and a set of keywords. When it is ready
for delivery to a publisher or platform, the `exepub/disseminate`
command moves it into an archive folder organized by year and updates
its `#+PUBLISHED:` date and `#+STATUS:`. Downstream, each format-and-channel
combination is a “manifestation” housed in its own subdirectory, allowing
HTML, PDF, audio or video versions to coexist alongside the original
Org source.
* Directory Layout
Upon initialization exepub creates a base container with seven subdirectories
named by keyword:
:base holds overall configuration
:drafts contains in-progress assets
:archive stores finalized assets, year-by-year
:attic archives abandoned drafts
:template keeps reusable snippets and option templates
:logs publishes a machine-readable log of each dissemination event
:trash receives permanently deleted items
This structure ensures that every file lives in its assigned place, enabling
simple Dired navigation via `exepub/open-drafts`, `exepub/open-archive` and so on.
* Authoring Workflow
Writing begins with `exepub/article-create`, which prompts for a slug and
keywords, generates a new `draft.org` prefilled with default headers
(`#+TITLE:`, `#+CREATED:`, `#+STATUS: draft`, `#+SLUG:` and `#+KEYWORDS:`)
and imports shared `#+OPTIONS:` from a template. Authors then compose
in Org mode, inserting headings, citations and figures in the usual way.
When the manuscript is mature, `exepub/disseminate` atomically renames and
moves the draft into the archive, updating its slug, setting `#+STATUS: ready`
or `manifestation`, stamping the publication date and moving the folder
under `archive/<year>/`. This operation can be rolled back automatically
if any step fails, preserving data integrity.
* Generating Manifestations
Each dissemination may require multiple exported formats. The
`exepub/export-to` command creates a `manifestation/<format>-<channel>/`
folder, copies the Org source (stripped of noexport sections), disables
the inline title, sets `#+STATUS: manifestation` and appends a license footer.
Supported formats include HTML, Markdown and LaTeX/PDF; unsupported formats
produce a placeholder file. Metadata such as `DELIVERED`, `EMBARGO` and
custom properties defined under a top-level `* Manifestations :noexport:`
section are read and updated automatically.
* Customization and Extensions
All directory paths live in the `exepub--dirs` alist and can be re-initialized
via `exepub--dirs-setup` using `exepub/home-directory`. Default header values
(`CREATED`, `STATUS`, `PUBLISHED`, `KEYWORDS` etc.) are exposed as Emacs
custom variables. Export options (`#+OPTIONS:`) are injected by advice on
`org-export-insert-default-template` from a customizable alist. Hooks on
`before-save` regenerate slugs and rename directories, while export filters
and custom CSS allow fine-tuning of HTML output.
* Getting Started
To begin using exepub, add its directory to your `load-path`, require it in
your init file and set `exepub/home-directory` to your container path.
Evaluate `(exepub--dirs-setup exepub/home-directory)` and ensure your
`template/options.org` defines any shared `#+OPTIONS:`. You are then ready
to create your first draft with `M-x exepub/article-create`.
* Conclusion
exepub unifies rigorous academic workflows with the flexibility of Org mode and
Emacs Lisp. By encoding every step—drafting, embargo management, multi-format
export and channel-specific dissemination—into a programmable structure, it
empowers authors to focus on content while the system manages metadata,
versioning and delivery. Whether you publish in peer-reviewed journals, blogs,
social networks or private logs, exepub provides a single, extensible pipeline
from idea to audience.
::contentReference[oaicite:0]{index=0}