Strange Eons

Table of HTML-like Mark-up Tags Used For Layout

Send Feedback      Home Page > Strange Eons > FAQ > Tag Table

This table lists the mark-up tags that can be used in Strange Eons text fields. An example that demonstrates some of the more advanced tags and features can be found here.

Contents

Style and Typography Tags
Symbol Tags
Image Tag
Variable Replacement Tags
Case Book Library Tags

Style and Typography Tags

Section Tags
<h1> ... </h1> Name of major rule (e.g. a special ability rule).
<h2> ... </h2> Name of minor rule (e.g. "Worshippers").
Style Tags
<b> ... </b> bold text
<i> ... </i> italic text
<u> ... </u> underlined text
<del> ... </del> deleted text
<sup> ... </sup> Superscript text
<sub> ... </sub> Subscript text
Colour Tags
<black> ... </black> Request black text (the colour used for regular card text).
<red> ... </red> Request red text (as used for the bottom line of skill pairs).
<blue> ... </blue> Request blue text (as  used for the top line of skill pairs).
<green> ... </green> Request green text (as used for special monster borders).
<yellow> ... </yellow> Request yellow text (as used for stationary monster borders).
<purple> ... </purple> Request purple text (as used for stalker monster borders).
<colour col> ... </colour>

or

<color col> ... </color>

Specify an arbitrary colour for text using one of two colour formats:

Red-Green-Blue (HTML-style)
The colour can be specified in the same way as colours in HTML: #rrggbb,  where rr, gg, and bb are the hexadecimal digits for the proportion of red, green, and blue to use. In addition, an optional alpha value may be specified (#aarrggbb), which defines an opacity for the colour: higher values are less transparent, with 00 being completely clear and ff  being completely opaque. Example: <color #dc9627> would produce the following colour:    .

Hue-Saturation-Brightness
Since hexadecimal and the red-green-blue colour space can be hard for people to work in, you may prefer to specify your colour using hue, saturation, and brightness (HSB). This is the same system used to tint cards. HSB colours are defined using three numbers: the hue, which is an angle between 0° and 360° around a colour wheel (0° is pure red), the saturation, which is a number between 0 (colourless) and 1 (pure colour), and brightness, also a number between 0 (darkest) and 1 (brightest). You may add a fourth, optional, alpha value between 0 (completely clear) and 1 (completely opaque). The equivalent to the above example in HSB notation is <color 37 0.82 0.86>.

Colours with no alpha value given are completely opaque.

<bgcolour col> ... </bgcolour>

or

<bgcolor col> ... </bgcolor>

Specify an arbitrary background colour for text. The colour is specified exactly as above.
Typeface Tags
<body> ... </body> Use the main body typeface.
<tt> ... </tt> Use the typewriter typeface (used for titles).
<card> ... </card> Use the eroded small caps Caslon typeface (used for investigator card titles).
<largecard> ... </largecard> Use the regular eroded Caslon typeface (used for Ancient One card titles).
<gate> ... </gate> Use the Albertus-style typeface (used for gate markers and monster attributes).
<scenario> ... </scenario> Use the Dominican Italic typeface (used for scenarios).
<family "name"> ... </family> Use the typeface family (font) indicated by name.
<size n> ... </size>
or
<size n%> ... </size>
Use a size of n points for the current typeface (72pt = 2.54cm = 1 inch). If the size has a percent sign following it, then the size is chosen as a percentage of the current size instead.
<width value> ... </width> Change the width of the text. The value may either be one of several predefined widths, or else a number between 0.5 and 10 (where 1 is the regular width). The predefined widths are (from narrowest to widest): condensed, semicondensed, regular, semiextended, and extended.

<no kerning> ... </no kerning> Do not kern this section. Kerning is currently disabled by default because of a bug that appears when cards are exported or printed at high resolution, so this tag has no effect.
<no ligatures> ... </no ligatures>

Do not automatically create ligatures in this section. Ligatures are substitute letter shapes that are used to improve readability when certain letters appear together.

<tracking n> ... </tracking> Adjust the relative tracking (letter spacing) in the section to n. Useful values are in the range of about -0.1 to 0.2; a value of 0 results in no change.

Layout Tags
<tabwidth w [w2...]> Set the distance between tab stops to width. The width value is a measurement in the same format as the one used for images. More than one width may be given in order to define a set of tab stops. If the widths given do not add up to enough to cover the entire line length, then the widths will repeat (starting from the first) as many times as needed to fill out the line.
<left>, <center>, <right>
Left-align, center, or right-align subsequent body text.

Note: If the start of a paragraph is written with right-to-left characters (Arabic, Hebrew), then the entire paragraph will be considered right-to-left overall. In this case, the meaning of the <left> and <right> tags is reversed: <left> will justify right-to-left paragraphs on the right, and vice-versa. So the <left> tag might better be thought of as "normal justification," and <right> might be thought of as "opposite justification."

<top>, <middle>, <bottom> Align body text to top, middle, or bottom of the block, overriding the normal settings for the card type.
<ragged>, <justified> Change the justification for the block to ragged (unjustified) or full justification, overriding the normal settings for the card.
<tight> Minimize the line advance after this line.
<loose> Increase the line advance after this line.

Symbol Tags

Quotation Marks
<no punctuation> ... </no punctuation> Do not perform punctuation replacement on this section. Punctuation replacement automatically generates curly quotes from straight quotes, converts dash sequences into en- and em-dash characters, and period sequences into ellipsis characters (see below).
<lq> or <"> left double quote (“)
<rq> or </"> right double quote (”)
<lsq> or <'> left single quote (‘)
<rsq> or </'> right double quote (’)—double and single quotation marks are normally generated automatically from " and ', but you can use these tags to override the automatic choice
<lg> left guillemet («)
<rg> right guillemet (»)
<lsg> left single guillemet ()
<rsg> right single guillemet ()
<lt> less than symbol (<)
<gt> greater than symbol (>)
Spacing
<nbsp> or < > non-breaking space (the second form is a single space between angle brackets)
<thsp> thin space
<emsp> em-space
<ensp> en-space
<hsp> hair space
Typographic Symbols
<endash> or  -- en-dash (–)
<emdash> or --- em-dash (—)
<...> or ... ellipsis (…)
Miscellaneous Symbols
<infinity> lemniscate (∞)
<u+xxxx> the Unicode (UTF-16) character u+xxxx

Image Tag

Image Tag

<image url [width [height]] [alignment [offset]]>
Insert an image at the current position in the text.

The url parameter is the URL of the image. For local files, either a standard file pathname or a file:/ URL can be used. The special URL protocol res:// accesses Strange Eons's built-in resources. As with all tag parameters, the URL must be surrounded by quotes if it contains any spaces.

The width parameter specifies a width for the image. If no width is specified, the image will be sized automatically by assuming a 150 dot per inch resolution.

The height parameter specifies a height for the image. If no height is specified, the height will be chosen automatically according to the width, so that the image's original aspect ratio is maintained.

The width and height values are physical measurements in centimetres, inches, or points. The desired unit is indicated by writing cm, in, or pt after the measurement, respectively. If no unit is specified, centimetres will be used.

An optional alignment parameter can be given after the width and height (if any). This can be any of the following keywords:

top
Align top of image to top of line.
bottom
Align bottom of image to bottom of line.
baseline
Align the offset position (default is bottom of image) to the Roman baseline.
center
Align the offset position (default is center of image) to the center baseline.
hanging
Align the offset position (default is top of image) to the hanging baseline.

The default alignment is baseline. For the baseline alignment types, an optional offset can be given. This is a measurement (as used to set the width or height). It determines the offset from the top of the image that will be aligned to the requested baseline.

Examples

<image d:\pictures\smile.jpg top>
Insert an image from a file, aligned to the top of the line and at the default size.

<image http://www.sfu.ca/~cjenning/eons/avatar.png 1.5cm>
Insert an image from a web address. The image will be 1.5 cm wide and the height will be set automatically.

<image res://icons/ky-expansion-icon.png 12pt 12pt>
Insert an image from Strange Eons's internal resources (this is the icon used to indicate the The King in Yellow expansion). The image will be 12 points wide and 12 points high.

<image "file:///c:/documents and settings/joe/my documents/my pictures/picture 22.jpg">
Insert an image from a local file. Note that quotes are required because the URL contains spaces. Also, there is a third "/" after the "file://" (a technical detail related to how file URLs are defined). Instead of using a URL, a standard file pathname could also have been used, in this case "c:\documents and settings\joe\my documents\my pictures\picture 22.jpg".

Variable Replacement Tags

Standard Tags
<name> First word of the item or character's name. This takes multiple first names, initials, and epithets into account: for "John Q. Public", <name> will print "John" even though the first name field is "John Q."
<lastname> Last name of an investigator. (Only investigators have a last name.)
<fullname> The full name of the item or character.
<home> The investigator's home location.
<the home> The investigator's home location, preceded by an article. The result depends on the active game language as well as the location. For example, in English you would get "the Graveyard," but "Velma's Diner." En français: "les Contrées du Rêve", mais "la Maison de la Sorcière".
<The home> or <capital the home> The investigator's home location, preceded by a capitalized article. The result depends on the active game language.
Gender-Specific Tags

You may insert tags that will be replaced with different text depending on the gender of the investigator. These tags have the form <m/f>, where the m text specifies what appears for male investigators, and the f text specifies what appears for female investigators. If either value is a dash (-), it means no text is produced for that gender. (This is needed so that the program can tell a gender tag like <-/i> from a style tag like </i>. The tag text is case-sensitive (unlike most tags), so you can write, e.g. <He/She> or <he/she>.

Backwards Compatibility: You can also produce capitalized tags by writing "capital " in front of the gender tag: <he/she> becomes <capital he/she>, as in (very) old versions. There is a small compatibility issue with old cards, however, because a few rarely used tags forced capitalization or added extra characters. For example, <mr/mrs> produced Mr./Mrs but will now produce mr/mrs, exactly as written.

User-defined Tags (Macros)

You may define new tags that will replace themselves with any text you specify. Your new tags may optionally accept parameters that can be inserted at any point in your replacement text. To define a new tag, use the tag <define tag replacement>. The name of your new tag will be tag, and when used it will insert the text replacement. If the tag or replacement contains spaces, you must surround them in quotes ("). To include a quote within a replacement that is surrounded with quotes, preface the quote with a backslash (\"). The replacement must also be placed in quotes if it includes any tags. For example, <define "a test" "OK"> would create a tag <a test> that prints OK when used.

When using a user-defined tag, you may also include a list of optional parameters. You can insert these parameters into your replacement text by including text of the form @n; in the replacement. The n should be replaced by the index of the argument in your list of arguments; the first argument will be @1;, the second will be @2;, and so on. For example, <define bi "<b><i>@1;</i></b>"> would create mark-up equivalent to <b><i>this</i></b> if you wrote <bi "this">.

Tags must be defined before they can be used, so <x><define x OK> would not work. Your definitions can use any other tags, including other definitions. However, you must be careful not to create definitions that directly or indirectly refer to themselves (that is, definitions must not be recursive). This creates an infinite loop that will effectively lock up Strange Eons.

A useful trick when working with user-defined tags is to place a backslash after each definition. A backslash causes any following whitespace to be ignored. By adding a backslash, you can leave space between the definitions and the rest of your text without adding space to your layout.

A second macro tag is <repeat n text>; it repeats the text parameter n times.

There are some practical examples of user-defined tags in the built-in examples provided by Strange Eons as well as the mark-up example page.

See also: Standard Case Book Library Tags

Standard Case Book Library Tags (2.01)

The Case Book Macro Library
This library contains definitions that are useful for writing casebooks. You do not need to use these definitions; you can just write the equivalent text instead. However, there are some advantages to using them:
  • it usually saves typing
  • it makes your phrasing more consistent for the player
  • once you recognize the definitions, you will be able to read through
    your case book more quickly
  • it makes it possible to write plug-ins that can analyze or modify your
    case book automatically
  • it means less work if someone wants to translate your case book

Many of these definitions have different forms depending on the final punctuation in the definition name. A definition name that ends with '.' will insert a complete, stand-alone sentence. A definition name that ends with ';' will insert the start of a sentence. If the name uses neither '.' nor ';', then it will insert a sentence fragment that falls in the middle of a sentence without starting or ending it. Examples:

<complete.>
  This Vignette is complete.

<complete;> only when I say so.
  This Vignette is complete only when I say so.

Have a snack when <complete>, if you want.
  Have a snack when this Vignette is complete, if you want.
Do not confuse the use of '.' and ';' with the use of '?'. When a definition name includes a '?' at the end, this is a hint that the text is conditional. That is, the text that is produced will direct the player to do one of two or more things depending on the current game state.
Events and Vignettes
<complete>
<complete.>
<complete;>
Inserts standard text to mark the current vignette as complete:
The tentacled mass falls limp to the ground. <complete.>

 The tentacled mass falls limp to the ground. This
Vignette is complete.
<failed>
<failed.>
<failed;>
Inserts standard text to mark the current vignette as failed:
The librarian asks you to leave. <failed.> <toarkham.>

 The librarian asks you to leave. This Vignette has
failed. All investigators in this Vignette return to
Arkham.
<unlock ^label>
<unlock. ^label>
<unlock; ^label>
Unconditionally make a new Vignette available to the players. Note that the parameter should almost always be a root reference (^label), not a standard reference (#label). See also <unlock?>.
A strange woman was seen near the crypt at sunset.
<unlock. ^vampire>

 A strange woman was seen near the crypt at
sunset. Unlock Vignette A.
<unlock? ^label>
<unlock?. ^label>
<unlock?; ^label>
Conditionally unlocks a Vignette only if it is not already unlocked,
completed, or failed. Note that the parameter should almost always be a root reference (^label), not a standard reference (#label).
You turn the key and the gate creaks open.
<unlock?. ^cemetary>

 You turn the key and the gate creaks open.
If Vignette A is locked, unlock it.
<enter  #label>
<enter. #label>
<enter; #label>
Directs the reader to enter a Vignette location (such as "[A1]").
Draw 1 Clue token and <enter #garden>.

 Draw 1 Clue token and enter [A1].
<enter? ^label #label>
<enter?. ^label #label>
<enter?; ^label #label>
Directs the reader to enter a location if a certain Vignette is unlocked. Usually, the location is the first location in the Vignette, so you would use the location's root reference and standard reference together.
<enter?. ^garden #garden>

 If Vignette A is unlocked, enter [A1].
<mayenter  #label>
<mayenter. #label>
<mayenter; #label>
Allows the reader to enter a Vignette location.
<mayenter. #library>

 You may enter [A1].
<mayenter? ^label #label>

<mayenter?. ^label #label>

<mayenter?; ^label #label>
Allows the reader to enter a Vignette location if a certain Vignette is unlocked. Usually, the location is the first location in the Vignette, so you would use the location's root reference and standard reference together.
<mayenter?; ^library #library> and gain 1 Stamina.

 If Vignette A is unlocked, you may enter [A1]
and gain 1 Stamina.
<nothing>
<nothing.>
<nothing;>
Inserts text indicating that "nothing happens". This is most often used as the event for locations not used by the case book.
<nothing.>

 Nothing happens.
<ornothing>
<ornothing.>
<ornothing;>
Inserts text indicating that "otherwise, nothing happens". This is most often used at the end of a location's initial event when the plotted options have been exhausted.
If you have a lantern, <mayenter? ^tunnel #tunnel>.
<ornothing.>

 If you have a lantern, you may enter [A1] if
Vignette A is unlocked. Otherwise, nothing happens.
<toarkham>
<toarkham.>
<toarkham;>
Inserts standard text that returns players in the Vignette to Arkham. This is usually used when a Vignette completes or fails, to ensure that all teams are kicked out of the Vignette, even if they are at another Vignette location.
<failed;>: <toarkham>.

 This Vignette has failed: all investigators in
this Vignette return to Arkham.
<teamtoarkham>
<teamtoarkham.>
<teamtoarkham;>
Inserts standard text that returns the team to Arkham. This is usually used when one team leaves a Vignette due to the current encounter, but the Vignette is still unlocked.
If you decide to turn back, <teamtoarkham>.

 If you decide to turn back, all investigators on
this team return to Arkham.
Skill Checks
The skill check tags refer to actions. This indicates that the parameter in question will be wrapped in an <action> tag (which is described in detail below). Essentially, if an action parameter is a label, text like "read paragraph 6" will be inserted, and if it is not a label, the parameter text is inserted unchanged. You can also leave out an action and it will default to "nothing happens".
<check test act1 act2>
<check. test act1 act2>
<check; test act1 act2>
Inserts text that directs the player to make some kind of skill check. The player performs the first action if it is a success; the second if it is a failure. This text consists of multiple sentences, so it always ends in a period. A ';' version is defined for completeness, but in English it is the same as the '.' version.
<check. "Speed (-1) [2]" #success "discard 1 Sanity">

 Make a <b>Speed (-1) [2] check</b>. If you succeed,
read paragraph 2. If you fail, discard 1 Sanity.
<teamcheck test act1 act2>

<teamcheck. test act1 act2>

<teamcheck; test act1 act2>
Inserts text that directs the players to make an assisted skill check. The team performs the first action if it is a success; the second if it is a failure. This text consists of multiple sentences, so it always ends in a period. A ';' version is defined for completeness, but in English it is the same as the '.' version.
<teamcheck. "Luck (-1)" #success #failure>

 Make an assisted <b>Luck (-1) check</b>. If you
succeed, read paragraph 6. If you fail, read
paragraph 42.
<invcheck name pronoun test act1 act2>

<invcheck. name pronoun test act1 act2>

<invcheck; name pronoun test act1 act2>
This is similar to <check>, but it names a specific investigator. Although all three forms are provided, they all do the same thing because the text consists of multiple sentences and the start of the inserted text is determined by the provided name.
<invcheck. "The first player" "he or she" "Lore (-2)"
    "draw 1 Unique item" #failure>

 The first player must make a <b>Lore (-2) check</b>.
If he or she succeeds, draw 1 Unique item. Otherwise,
read paragraph 6.
Timeline Events
<proceedon roll>
<proceedon. roll>
<proceedon; roll>
The standard Arkham Investigations rules use a die roll to decide when to proceed to the next event on the timeline. The case book editor takes a more generic approach: it lets you specify any condition that you like. If you just want to use die rolls as in the standard rules, this definition makes that easy. Tip: Use two hyphens between a range of acceptable values. Strange Eons will convert this into an en dash, which is the correct punctuation for number ranges.
<proceedon. 5--6>
 The first player rolls <b>5--6</b> on a die.

<proceedon. 6>
 The first player rolls <b>6</b> on a die.

Every investigator is <i>blessed</i> and <proceedon 4--6>.
 Every investigator is <i>blessed</i> and the first
player rolls <b>4--6</b> on a die.
Miscellaneous
<action act> Inserts text to describe an action. If the parameter starts with # or ^, it is taken to be a label reference. For # labels, text like "read paragraph 42" is inserted. For ^ labels, text like "Vignette A" is inserted. If the parameter does not start with # or ^, it is inserted unchanged. If the parameter is not defined, "nothing happens" is inserted. (The inserted text will be localized by game language.)
<action #the-par>
 read paragraph 6

<action "eat candy">
 eat candy

<action>
 nothing happens
<ifdef parameter true false> If parameter is defined in the current macro expansion, then the true text is inserted; otherwise, the false text is inserted. This is normally used within another definition to print different (or no) text if some of the definition's parameters are missing. The definition relies on the fact that an undefined parameter is expanded to ?n?, where n is the parameter number.
<define or "<ifdef \"@1;\" \" or @1;\" \"\">" >
<define must "You must @1;<or @2;>.">

<must walk drive>
 You must walk or drive.

<must walk>
 You must walk.
<ifequal str1 str2 true false>

<ifequalnocase str1 str2 true false>
If str1 is equal to str2, inserts true; otherwise inserts false. If <ifequalnocase> is used, the comparison is case insensitive.
<dpexp>
<dhexp>
<kyexp>
<khexp>
<bgexp>
<xxexp>
If you wish to point out instructions that can/should only be followed if
the players have an optional expansion, you can use these definitions
to insert appropriate icons.
Fight a <dhexp> Tcho-tcho (High Priest).
<url hyperlink text> Insert a link to a URL into the document. Use this if you wish to place a URL in your case book. When printed from Strange Eons, then hyperlink (or text  if it is defined) will be printed as regular text. When viewed in the Preview Draft tab or exported to an HTML file, the URL will be shown as a clickable link. (If the link is clicked on the preview page, the page will open in your default Web browser.)
<url "http://www.mywebsite.org">
<url "http://www.mywebsite.org" "my web site">
Scripting
<script scriptfile [param1] [param2] ...> Execute a script file, calling its main() function with the parameters passed to the <script> tag. If the main() function returns a non-null value, that value is converted into a string and inserted as text in place of the tag. The script file is located in exactly the same way as scripts are found by uselibrary() (see the plug-in authoring kit documentation for details).
<script res:///my/scripts/hello.js "Sunshine">
 Hello, Sunshine!
This assumes that the following script hello.js is on the class path in the /my/scripts folder:
function main( name ) {
    return "Hello, " + name;
}
<eval expression> Evaluates the script expression parameter that is passed to it and inserts the result as text in place of the <eval> tag.
<eval "Math.pow(2,10)">
 1024.0

<! insert param 1 if debug==1, else insert an empty string>
<define debug "<eval \"debug==1?'@1;':'';\"> ">
<eval "var debug=1;">
<debug "debug enabled">
 debug enabled
<eval "var debug=0;">
<debug "debug enabled">
 

Return to Home Page    Send Feedback

March 28, 2007  — Updated January 01, 2011