Printing Irregular Plurals

TableMaster has a lot off output formatting codes that can handle a fair percentage of the plurals in the English language. From simple things like changing house to houses through complex ones like changing mouse to mice, plus control of everything from the location of possessive apostrophes to changing ‘is’ to ‘are’, there are a lot of them, and they can give handle a lot of variations in output. For example, “1 man is carrying a box and a bag” and “4 men are carrying boxes and bags” are both produced by the same line: “<1d6> m\en \r carrying \abox\s and \abag\s.“* It’s the six different output formatting codes that make all the changes automagically.

There are, however, some irregular plurals that are so uncommon that they’re not worth wasting a letter for a formatting code (there aren’t many left) to implement. For instance, it’s fairly unlikely that someone is going to want to pluralize corpus into corpora. Certainly they won’t be doing it very often. You can, however, handle that with a small custom table if you happen to have a need for an irregular plural that doesn’t have an output formatting code in TableMaster.

Read on to see how.

Let’s use, as our example, corpus. The plural is corpora. It’s a good bet that most of us have never needed to use it in either form. It’s certainly not common enough to justify using up a letter for a dedicated output formatting code. But what if you actually might need it?

In that case, you use a subtable like this:

.TABLE corpus
.IF {$Last_Number} = 1 .PRINT corpus

When you need to use it, put that in an embedded subtable call:

He lectured about <1d6> writer\s\' complete [corpus].

Yeah, it was kind of hard to use “corpus” in a sentence; it’s really not all that common a word, especially in the plural. Our little sample works out like this:

He lectured about 1 writer's complete corpus.
He lectured about 3 writers' complete corpora.

Incidentally, that \’ is one of the new output formatting codes; it moves apostrophes around properly for singular and plural possessives. Some of you will argue that it’s grammatically incorrect to write ‘s after nouns ending in s — “the bus’s wheel” versus “the bus’ wheel” — or ss — “the boss’s hat” versus “the boss’ hat.” If I’d done it the other way around, the other half of you would give me grief about it. That’s one of those things, like the Oxford comma, which grammarians don’t agree on, and probably never will. I had to pick one way or another, and I picked this one.

For convenience, I’ve written up examples for the plurals that don’t have dedicated output formatting codes. Just cut and paste into your tables, or put them all a single table file with all of them and .INCLUDE it in other table files when needed. (at some point I’ll probably put a table in each of the Table Packs for the latter option)

.table dice
: changes 'die' to 'dice'
.if {$Last_Number} = 1 .print die
.otherwise .print dice
.table oxen
: changes 'ox' to 'oxen'
.if {$Last_Number} = 1 .print ox
.otherwise .print oxen
.table im
: adds 'im' to seraphim and cherubim
.if {$Last_Number} <> 1 .print im
.table staves
: changes 'staff' to 'staves'
.if {$Last_Number} = 1 .print staff
.otherwise .print staves
.table corpora
: changes 'corpus' to 'corpora'
.if {$Last_Number} = 1 .print corpus
.otherwise .print corpora
.table stomata
: changes 'stoma' to 'stomata'
.if {$Last_Number} = 1 .print stoma
.otherwise .print stomata
.table x
: adds -x to change 'beau' to 'beaux', etc.
.if {$Last_Number} <> 1 .print x
.table genera
: changes 'genus' to 'genera'
.if {$Last_Number} = 1 .print genus
.otherwise .print genera
.table brethren
: changes 'brother' to 'brethren'
.if {$Last_Number} = 1 .print brother
.otherwise .print brethren

So you can use a line like this…

You find <1d6> [staves] and <1d6>[dice]

…and get results like:

You find 3 staves and 1 die
You find 1 staff and 3 dice

That set of tables covers all of the irregular plurals I can come up with. There are likely a few others for foreign loan words, too, and probably an archaic word or two that I’ve missed. If you find yourself needing one, just follow the format of the examples above as needed.


*note: \a was added in 1.0.5; if you’re still running an earlier version, you won’t have this. This is the case for \’ in the second example as well.