「‍」 Lingenic

Command Reference

Multics Compose + Lingenic Extensions

Complete reference of Multics Compose 10.0e commands mapped to Lingenic Compose. This document preserves the historical record of the original system and shows how Lingenic Compose continues and completes its vision.

Status:

Naming Conventions

Lingenic Compose distinguishes two command types:

Multics forms: .block-begin-X.begin-X. .X-block.begin-X. .begin-page-header.begin-header. .header-line.header-left/-center/-right. .define-block.begin-define-template.

Text Alignment

ShortMultics CommandStatusLingenic Compose
ab.align-bothsame.align-both
ac.align-centersame.align-center
ai.align-insidesame.align-inside
al.align-leftsame.align-left
ao.align-outsidesame.align-outside
ar.align-rightsame.align-right

Content Blocks

Multics .block-begin-X forms are renamed to .begin-X in Lingenic for consistency.

ShortMultics CommandStatusLingenic Compose
baw.begin-artworksame.begin-artwork
eaw.end-artworksame.end-artwork
bbf.block-begin-footnoterenamed.begin-footnote
bef.block-end-footnoterenamed.end-footnote
bbk.block-begin-keeprenamed.begin-keep
bek.block-end-keeprenamed.end-keep
bbl.block-begin-literalrenamed.begin-literal
bel.block-end-literalrenamed.end-literal
bbp.block-begin-picturerenamed.begin-picture
bep.block-end-picturerenamed.end-picture
bbt.block-begin-titlesupersededuse .title
bet.block-end-titlesupersededuse .title

Obsolete Block Commands

These block forms were marked obsolete in Multics Compose source code:

ShortMultics CommandStatusLingenic Compose
.block-beginobsolete.begin-block
.block-endobsolete(implicit with begin-block)
.block-begin-artobsolete.begin-artwork
.block-end-artobsolete.end-artwork
.block-begin-columnobsolete.break-column
.block-end-columnobsolete(not needed)
.block-begin-equationobsolete.begin-math
.block-begin-inlineobsolete.begin-define-inline
.block-begin-namedobsolete.begin-define
.block-end-namedobsolete.end-define

Breaks

ShortMultics CommandStatusLingenic Compose
br.breaksame.break
brb.break-blocksame.break-block
brc.break-columnsame.break-column
brf.break-formatsame.break-format
brn.break-needsame.break-need
brp.break-pagesame.break-page
brs.break-skipsame.break-skip
brw.break-wordsame.break-word

Change Bars

ShortMultics CommandStatusLingenic Compose
cba.change-bars-additionsame.change-bars-addition
cbd.change-bars-deletionsame.change-bars-deletion
cbm.change-bars-modificationsame.change-bars-modification
cbf.change-bars-offsame.change-bars-off
cbo.change-bars-onsame.change-bars-on

Conditionals

ShortMultics CommandStatusLingenic Compose
if.ifsame.if
th.thensame.then
el.elsesame.else
eli.elseifsame.elseif
eif.endifsame.endif

Delimiters

ShortMultics CommandStatusLingenic Compose
csd.change-symbol-delimitersame.change-symbol-delimiter
ctd.change-title-delimitersame.change-title-delimiter

Fill Mode

ShortMultics CommandStatusLingenic Compose
fid.fill-defaultsame.fill-default
fif.fill-offsame.fill-off
fio.fill-onsame.fill-on

Fonts

ShortMultics CommandStatusLingenic Compose
fnt.fontsame.font
new.font-name name
new.font-size size

Footnotes

ShortMultics CommandStatusLingenic Compose
fnr.footnote-referencesame.footnote-reference
fnh.footnotes-heldsame.footnotes-held
fnp.footnotes-pagedsame.footnotes-paged
fnrn.footnotes-runningsame.footnotes-running
fnu.footnotes-unreferencedsame.footnotes-unreferenced
ifn.insert-footnotessame.insert-footnotes

Headers and Footers

Multics had multiple redundant forms. Lingenic simplifies: .begin-header / .end-header (multi-line) and position commands (single-line).

.header-left current_file
.header-right "Page " page_number
.footer-center current_date

Arguments are expressions: bare names are variables, quoted strings are literals, space-separated values concatenate.

Multi-Line (Regions)

ShortMultics CommandStatusLingenic Compose
bph.begin-page-headerrenamed.begin-header
eph.end-page-headerrenamed.end-header
bpf.begin-page-footerrenamed.begin-footer
epf.end-page-footerrenamed.end-footer
bch.begin-column-headersame.begin-column-header
ech.end-column-headersame.end-column-header
bcf.begin-column-footersame.begin-column-footer
ecf.end-column-footersame.end-column-footer
hb.header-blockrenamed.begin-header
hbb.header-block-beginrenamed.begin-header
hbe.header-block-endrenamed.end-header
fb.footer-blockrenamed.begin-footer
fbb.footer-block-beginobsolete.begin-footer
fbe.footer-block-endobsolete.end-footer
tb.title-blockrenamed.begin-title
tbb.title-block-beginrenamed.begin-title
tbe.title-block-endrenamed.end-title

Single-Line

ShortMultics CommandStatusLingenic Compose
hl.header-linerenamed.header-left, .header-center, .header-right
hla.header-line-allrenamed.header-left all, etc.
hle.header-line-evenrenamed.header-left even, etc.
hlo.header-line-oddrenamed.header-left odd, etc.
hlf.header-line-footnoterenamed.header-footnote
fl.footer-linerenamed.footer-left, .footer-center, .footer-right
fla.footer-line-allrenamed.footer-left all, etc.
fle.footer-line-evenrenamed.footer-left even, etc.
flo.footer-line-oddrenamed.footer-left odd, etc.
phl.page-header-linerenamed.header-left, etc.
pfl.page-footer-linerenamed.footer-left, etc.
chl.column-header-linerenamed.column-header-left, etc.
cfl.column-footer-linerenamed.column-footer-left, etc.

Horizontal Tabs

ShortMultics CommandStatusLingenic Compose
htd.horizontal-tabs-definesame.horizontal-tabs-define
htf.horizontal-tabs-offsame.horizontal-tabs-off
hto.horizontal-tabs-onsame.horizontal-tabs-on

Hyphenation

ShortMultics CommandStatusLingenic Compose
hyd.hyphenate-defaultsame.hyphenate-default
hyf.hyphenate-offsame.hyphenate-off
hyo.hyphenate-onsame.hyphenate-on
hyw.hyphenate-wordsame.hyphenate-word

Indentation

ShortMultics CommandStatusLingenic Compose
in.indentsame.indent
inb.indent-bothsame.indent-both
inl.indent-leftsame.indent-left
inr.indent-rightsame.indent-right
inc.indent-controlssame.indent-controls

File Insertion

ShortMultics CommandStatusLingenic Compose
ifi.insert-filesame.insert-file
igr.insert-graphicsame.insert-graphic
ibl.insert-blockrenamed.insert-template
iix.insert-indexsame.insert-index

Labels and Control Flow

ShortMultics CommandStatusLingenic Compose
la.labelsame.label
go.go-tosame.go-to
rt.returnsame.return
do.dostub, renamed.begin-repeat, .begin-while, .begin-foreach
ed.enddostub, renamed.end-repeat, .end-while, .end-foreach

Line Spacing

ShortMultics CommandStatusLingenic Compose
ls.linespacesame.linespace

Page Definition

ShortMultics CommandStatusLingenic Compose
pd.page-definesame.page-define
pdc.page-define-columnssame.page-define-columns
pdl.page-define-lengthsame.page-define-length
pdw.page-define-widthsame.page-define-width
pml.page-margin-leftsame.page-margin-left

References (Variables and Counters)

ShortMultics CommandStatusLingenic Compose
sr.set-referencerenamed.set-variable
src.set-reference-counterrenamed.set-counter
srm.set-reference-moderenamed.set-counter-mode
srv.set-reference-variablerenamed.set-variable
ur.use-referencesuperseded(implicit — underscore variables: my_var)

Counter Display Modes

ModeOutputExample
numericArabic numerals1, 2, 3, 4...
romanLowercase romani, ii, iii, iv...
RomanUppercase romanI, II, III, IV...
alphaLowercase lettersa, b, c...z, aa, ab...
AlphaUppercase lettersA, B, C...Z, AA, AB...

Spacing

ShortMultics CommandStatusLingenic Compose
sp.spacesame.space
spb.space-breakrenamed.space-with-block-break
spf.space-formatrenamed.space-with-format-break
spd.space-to-depthrenamed.space-to-page-depth
spt.space-totalrenamed.space-ensure-total
ps.page-spaceobsolete.space-to-page-depth

Fine Spacing

CommandDescriptionWidth
.space-thinThin space3/18 em
.space-mediumMedium space4/18 em
.space-thickThick space5/18 em
.space-negative-thinNegative thin space−3/18 em
.space-emEm space1 em
.space-double-emDouble em space2 em

Tables

Lingenic simplifies tables with pipe-delimited syntax:

.begin-table 2in 1in 3in
Item   | Qty | Price
---
Widget |   5 | $10
Gadget |   3 | $15
---
Total  |     | $25
.end-table
ShortMultics CommandStatusLingenic Compose
tbd.table-definesupersededuse .begin-table
tbc.table-columnsupersededuse | delimiter
tbo.table-onsupersededuse .begin-table
tbf.table-offsupersededuse .end-table

Table Vertical Alignment

ShortMultics CommandStatusLingenic Compose
vat.vertical-align-topstub.vertical-align-top (implemented)
vac.vertical-align-centerstub.vertical-align-center (implemented)
vab.vertical-align-bottomstub.vertical-align-bottom (implemented)
vaj.vertical-align-justifiedstub.vertical-align-justified (implemented)

Text Titles and Captions

Titles and captions are single-line commands. Long text wraps when rendered.

.title Chapter One: Introduction
.caption Figure 1: System Architecture
ShortMultics CommandStatusLingenic Compose
btt.begin-text-titlesupersededuse .title
ett.end-text-titlesupersededuse .title
btc.begin-text-captionsupersededuse .caption
etc.end-text-captionsupersededuse .caption
thl.text-header-linesupersededuse .title
ttl.text-title-linesupersededuse .title
tcl.text-caption-linesupersededuse .caption
tlc.title-line-captionsupersededuse .caption
tlh.title-line-headersupersededuse .title
stl.split-title-linesupersededuse .title

Character Translation

Character substitution using pattern syntax.

.translate from {a} to {b}           .* global mode — all subsequent text
.translate my_text from {a} to {b}   .* translate variable
.translate-off                       .* turn off global mode
ShortMultics CommandStatusLingenic Compose
trn.translaterenamed.translate [var] from {x} to {y}
trf.translate-formattedsupersededuse .translate
tre.translate-exceptionsstubnot needed
new.translate-off

Underscoring

ShortMultics CommandStatusLingenic Compose
uso.underscore-onsame.underscore-on
usf.underscore-offsame.underscore-off

Undenting

ShortMultics CommandStatusLingenic Compose
un.undentsame.undent
unb.undent-bothsame.undent-both
unh.undent-hangingsame.undent-hanging
unl.undent-leftsame.undent-left
unn.undent-nobreaksame.undent-nobreak
unr.undent-rightsame.undent-right

Vertical Margins

ShortMultics CommandStatusLingenic Compose
vma.vertical-margin-allsame.vertical-margin-all
vmb.vertical-margin-bottomsame.vertical-margin-bottom
vmf.vertical-margin-footersame.vertical-margin-footer
vmh.vertical-margin-headersame.vertical-margin-header
vmt.vertical-margin-topsame.vertical-margin-top

Widow Control

ShortMultics CommandStatusLingenic Compose
wi.widowsame.widow
wif.widow-footnotesame.widow-footnote
wit.widow-textsame.widow-text

I/O Commands

ShortMultics CommandStatusLingenic Compose
rd.readsame.read
ty.typesame.type
wa.waitsame.wait
wrf.write-formattedstub.write-formatted (implemented)
wrt.write-textsame.write-text
wro.write-orderstubobsolete
new.begin-read / .end-read (pattern input)
new.begin-type / .end-type (output block)

Device and Miscellaneous

ShortMultics CommandStatusLingenic Compose
dc.device-controlrenamed.device-control device("") — raw control codes
new.invoke-tool(tool, arguments) — external tool
new.request(api, parameters) — API/service call
du.defer-untilsame.defer-until
dm.dumpstubnot needed
eq.equation-countsame.equation-count
er.errorsame.error
ex.executesame.execute
gm.galley-modesame.galley-mode
te.testsame.test

Index Entries

ShortMultics CommandStatusLingenic Compose
hi.hitsame.hit
hif.hit-filestub.hit-file (implemented)

Rules

ShortMultics CommandStatusLingenic Compose
hr.horizontal-rulesame.horizontal-rule
vr.vertical-rulesame.vertical-rule

Text Wrap (Runaround)

ShortMultics CommandStatusLingenic Compose
ral.runaround-leftstubposition=left wrap attribute
rar.runaround-rightstubposition=right wrap attribute
rac.runaround-centeredstubNot implemented

Lingenic Extensions

New commands not present in Multics Compose:

Lists

CommandDescription
.begin-list [numbered|bulleted|definition]Begin list
.end-listEnd list
.list-itemList item
.list-term termDefinition term
.list-definitionDefinition text
.list-style styleSet marker style

Floats

CommandDescription
.begin-figure [label] [position]Begin figure
.end-figureEnd figure
.begin-table-float [label] [position]Begin floating table
.end-table-floatEnd floating table
.caption textFigure/table caption
.caption-position above|belowCaption placement
.clear left|right|bothClear floats

Cross-References

CommandDescription
.label nameCreate reference target
.refer(name)Reference by number
.refer(name, page)Reference with page
.counter name [start]Define counter
.counter-style name styleSet counter format

Notes

CommandDescription
.begin-endnoteBegin endnote
.end-endnoteEnd endnote
.endnotes-chapterCollect per chapter
.endnotes-documentCollect at document end
.insert-endnotesOutput endnotes
.begin-sidenoteBegin sidenote
.end-sidenoteEnd sidenote
.sidenote-position left|right|outside|insideMargin placement

Bibliography

Citations use @key inline. Style determines format (author-date, footnote, endnote, etc.).

.set-citation-style author-date
According to @smith2020, the results were significant.
See also @jones2019:42-50 for discussion.

.bibliography
SyntaxDescription
@keyInline citation
@key:42Citation with page
@key:42-50Citation with page range
CommandDescription
.begin-source keyBegin source definition
.end-sourceEnd source definition
.import-bibliography "file"Import BibTeX/CSL/RIS
.set-citation-style styleauthor-date, footnote, endnote, numeric
.bibliographyOutput bibliography

Named Blocks

Reusable content chunks. Styles handle formatting, variables handle values, named blocks handle reusable content.

CommandDescription
.begin-define nameBegin named block
.end-defineEnd named block
.insert nameInsert named block
.begin-define signature
Best regards,
John Smith
.end-define

.insert signature

Styles

CommandDescription
.begin-define-style nameBegin style definition
.end-defineEnd style definition
.begin-style nameApply style
.end-styleEnd styled content
.default-style elementSet element default
.include-styles "file"Load style library
.when-hoverInteractive hover state (screen)
.when-clickInteractive click action (screen)
.end-whenEnd interaction block

Modes

Conditional content and styles based on processing mode. Built-in: print, screen. User-defined modes supported.

.mode draft
  TODO: fix this section
.end-mode

.mode print
  See printed appendix for details.
.end-mode

Multiple modes active at once: compose doc.compose --mode print,final

CommandDescription
.mode nameBegin mode-specific block
.end-modeEnd mode block

Pattern Matching

Used with .begin-read / .end-read (see I/O Commands).

PatternDescription
{word}Match literal word
{defined_variable}Variable in pattern (substitutes)
{captured_text...}Capture prefix
{...captured_text...}Capture infix
{...captured_text}Capture suffix
{...discard...}Match and discard
{a|b}Alternation
\\Literal backslash
\{ \}Literal braces
\snake_caseLiteral snake_case (not variable)

Inline Functions

Functions use .verb() syntax — the parentheses distinguish them from commands.

FunctionDescription
.calculate(expr)Math evaluation
.evaluate(expr)Symbolic math (CAS)
.compute(expr)Financial/statistical
.fetch(name)Environment variable
.execute(cmd)Shell command
.invoke-tool(tool, args)External tool/plugin
.request(api, params)API/service call
.format(value, pattern)Format value
.randomize(a, b, c)Random selection

Expression Domains

CommandDescription
.require domainRequire domain
.configure domain backendConfigure backend

Core Math Domain

The .calculate() function evaluates arithmetic expressions. Unicode operators supported.

CategoryOperations
Arithmetic+ × ÷ mod
Comparison< > = (returns 0 or 1)
Functions sin cos tan log ln exp abs min max ⌊⌋ ⌈⌉
Constantsπ e

Mathematics

Math is pure Unicode, rendered in monospace. Code moved to monospace decades ago; math just did. See Mathematics for the full reference.

CommandDescription
.begin-mathBegin math block
.end-mathEnd math block

Everything else is Unicode:

.begin-math
       ⎧ 𝑥    if 𝑥 > 0
𝑓(𝑥) = ⎨ 0    if 𝑥 = 0
       ⎩ −𝑥   if 𝑥 < 0
.end-math

.begin-math
    𝑎 + 𝑏
   ⎯⎯⎯⎯⎯⎯⎯
    𝑐 + 𝑑
.end-math

.begin-math
⎡ 1  0  0 ⎤
⎢ 0  1  0 ⎥
⎣ 0  0  1 ⎦
.end-math

Unicode provides: math italic (𝑎𝑏𝑐𝑥𝑦𝑧), Greek (αβγθπω), operators (+ − × ÷ = ≠ ≤ ≥), roots (√∛∜), summation (∑∏), integrals (⌠⎮⌡), sub/superscripts (₀₁₂²³ⁿ), brackets (⎡⎢⎣ ⎧⎨⎩), fraction bar (⎯), vinculum (⎽).

The source is monospace-aligned and readable — exactly as it should be. For antique calligraphic rendering, embed LaTeX.

Typography

CommandDescription
.tracking [value]Letter spacing
.kerning on|offPair kerning
.drop-cap [lines]Drop capital
.hanging-punctuation on|offHanging punctuation
.optical-alignment on|offOptical margins

Parallel Text

For bilingual editions, synoptic texts, code with commentary.

CommandDescription
.begin-parallel [columns]Begin parallel text (default: 2 columns)
.end-parallelEnd parallel text
.next-parallel-columnSwitch to next column (syncs automatically)
.parallel-column [n]Jump to specific column
.parallel-gutter [value]Space between columns
.begin-parallel 2
Nel mezzo del cammin di nostra vita
mi ritrovai per una selva oscura,
ché la diritta via era smarrita.
.next-parallel-column
Midway upon the journey of our life
I found myself within a forest dark,
For the straightforward pathway had been lost.
.end-parallel

Ruby Text

CommandDescription
.ruby base "annotation"Ruby annotation
.annotate(base, "reading")Inline ruby annotation
.ruby-position above|below|rightAnnotation position
.ruby-size [ratio]Annotation size

Accessibility

CommandDescription
.insert-graphic "path" alt="text"Image with alt text
.language codeSet language
.abbreviation SHORT "expansion"Define abbreviation

Built-in Variables

Any identifier containing an underscore is a variable. The underscore can appear anywhere: prefix (_count), infix (page_number), or suffix (total_). Lingenic uses verbose two-word names.

Variable Typography

Typography distinguishes variable types:

TypeTypographyExample
StringRegular textauthor_name, document_title
NumericUnicode italic𝑥, 𝑦, 𝑟, 𝑛

Unicode italic for numeric variables avoids collision with domain functions (sin, cos, log, max) which use regular ASCII.

.if page_number > 1
.header-left current_file
.header-right "Page " page_number
.footer-center current_date
This is page page_number of page_count.

Page State

MulticsLingenicDescription
pagenopage_numberCurrent page number
next_pagenopage_nextNext page number
pagecountpage_countTotal pages processed
pagelinespage_linesLines on current page
page_lengthpage_lengthPage length in lines
linesleftlines_remainingLines remaining on page
frontpagepage_rectoWhether on front page (recto)

Margins & Spacing

MulticsLingenicDescription
top_marginmargin_topTop margin
bottom_marginmargin_bottomBottom margin
left_indentindent_leftLeft indent
right_indentindent_rightRight indent
left_undentundent_leftLeft undent (outdent)
right_undentundent_rightRight undent
header_marginmargin_headerHeader margin
footer_marginmargin_footerFooter margin
head_spaceheader_spaceSpace after header
linespaceline_spaceLine spacing
measureline_measureCurrent line measure (width)

Text State

MulticsLingenicDescription
text_depthtext_depthCurrent text depth
text_linenotext_lineCurrent line in text
text_widthtext_widthCurrent text width
align_modemode_alignCurrent alignment mode
fill_modemode_fillFill mode (on/off)
keep_modemode_keepKeep mode (on/off)

Typography

MulticsLingenicDescription
fontnamefont_nameCurrent font name
pointsizepoint_sizeCurrent point size

Block Context

MulticsLingenicDescription
block_indexblock_indexCurrent block index
block_nameblock_nameCurrent block name

Device

MulticsLingenicDescription
devclassdevice_classDevice class
devnamedevice_nameDevice name

File & Input

MulticsLingenicDescription
calling_file_namecurrent_fileName of current file
callers_linenocaller_lineLine number in caller
line_inputinput_lineCurrent input line
userinputuser_inputUser input value

Special

MulticsLingenicDescription
dot_addltroutput_addressCurrent output position
equation_modemode_equationEquation mode (on/off)
art_modemode_artworkArtwork mode (on/off)
transmode_translateTranslation mode
symbol_delimiterdelimiter_symbolSymbol delimiter character
title_delimiterdelimiter_titleTitle delimiter character

Template Arguments

MulticsLingenicDescription
Argcurrent_argumentCurrent argument
ArgCountargument_countNumber of arguments
Arg1, Arg2, ...argument_1, argument_2, ...Arguments by position

Lingenic Additions

VariableDescription
current_dateCurrent date
current_timeCurrent time
source_fileCurrent source file path
source_lineCurrent line in source
chapter_numberCurrent chapter number
section_numberCurrent section number
figure_numberCurrent figure number
table_numberCurrent table number
equation_numberCurrent equation number
footnote_numberCurrent footnote number
endnote_numberCurrent endnote number
current_languageCurrent language code

Summary

Multics Compose 10.0e defined approximately 158 long-form commands. Lingenic Compose:

Short forms are provided for editor abbreviation expansion — documents always store canonical verbose forms.