2- STYLES

# Generic part; the characters will be scaled later
<FLD>   carnpb  famnam  gennam  plname  plsyno  plrema  comdut  comfre  georan ...
# ______Macro____Macro definition ___________________________________________________
<MAC>   AUT     /Helvetica-Condensed 40 0
<MAC>   BAR     0
<MAC>   COM     /Helvetica 50 0
<MAC>   CR      zcr
<MAC>   GEO     /Times-Italic 40 0
<MAC>   HOLE    0.5 10
<MAC>   LIFE    1.5 2
<MAC>   LINEW   0 2 0 0
<MAC>   OTH     /Helvetica 40 0
<MAC>   PHA     /Helvetica-Condensed 55 0
# _____Plate definition ______________________________________________________________
<PLATE> 1-01    10      88      0.7    
 

Overview :

<FLD> field1  field2 ...   : provides the fields names, to be used during the format definition
<PLATE> definition_file    default_X_offset(%)   default_X_span(%)    general_scaling(fonts, symbols)  : defines the plate
<MAC>    macroname    macro_content_with_no_TABS links a macro name to a string of definitions, mainly FONT, FONT SIZE, underlining(0/1)

See the definition of the macros in conjunction with their operators

3- BLOCKS


a- the basic blocks allow to place the texts within well defined boxes, with style and particular operators.

For example, the cyan box defines the barcode place; the yellow box deals with a complex object : multi line/multi font/multi field text describing the taxon

Boxes

To create a box, :

#                      box definition              filling description
#               /---------------------------\  /--------------------------------------------------\
#     Block#    X0      Y0      Xspan   Yspan   Operator      align   macro\field pair or pairs 
<BLK>   1       -       5       -       20      std           r       OTH\famnam
<BLK>   2       50      8       10      10      symb          c       HOLE\dummy
<BLK>   3       +1      16      10      10      symb          l       SEX\sexcod
<BLK>   4       -       15      -       65      hbox          c       TAX\gennam|CR|TAX\plname| ...
<BLK>   5       -       90      -       10      std           c       GEO\georan
<BLK>   6       0       0       7       100     frame         -       LINEW\dummy
<BLK>   7       1       25      5       50      vbar          -       BAR\carnpb  
<BLK>   5       -       82      -       10      embold        r       PHA\pharm|PHA2\pharm2   

Overview

The blocks are linked to a sequence number, to allow a subsequent redefinition

Box definition :

The fields X0 and Xspan can be expressed  implicitely, using the defaults (provided elsewhere); an explicitely signed value (+x or -x) is computed as 'default ±x %' for small portable adjustments (symbols...)
Otherwise, the fields X0, Y0, Xspan & Yspan are simply expressed as % of the plate dimension;

Operators

Some operators are provided to handle the information :


the more complex object : multi lines, multi styles, multi fields, balanced within the box, and scaled down is the box is not large enough for a complex text

The complex text is automatically balanced within its box,

Moreover, the complex text is automatically scaled down if the reserved space is insufficient.
The other fields are kept at their declared scale (on the figure, 'Asteraceae' and 'Rosaceae' are kept at the same scale, when the cyan box is clearly scaled down to fit all the provided information)

Alignement

The classical choices are supported :

Macros\Field pairs

The simplest case defines one pair 'macro\field' (OTH\famnam); to read more easily the string, the macro names are defined in UPPERCASE (case sensitive)


The complex case (vbox & hbox) uses the same approach, but defines a list of pairs, separated by '|'
(TAX\gennam|CR|TAX\plname|CR|COM\empty|CR|COM\comdut|CR|COM\comfre); some additional tricks are implemented :

Operator abbreviation Elements of the linked macro Example of macro (separator : space)
standard std Fontname Fontsize 0 (=no underlining) /Times-Roman 40 0 
 
symbol symb Scale Linewidth 1.5 2
frame frame Left-vertical-linewidth
Right-vertical-linewidth
Top-horizontal-linewidth
Bottom-horizontal-linewidth
0 2 0 0
vertical barcode 
horizontal barcode
vbar
hbar
Explicit_number_flag (0|1) 0
embolding (two strings are provided, the first one is printed like a standard string, the second is used to locate the embolded part)  embold First:      Fontname Fontsize 0
Second : Fontname Fontsize 1 
     Underline_y_offset 
     Underline_width
First:     /Helvetica 35 0
Second: /Helvetica 35 1 0.2 3

Example of underling :

The first field  contains '2i - 8b - 10c - 11 - 14d' (yellow), the second '8b' (green), so only the common part of the two strings will be embolded/underlined;

The whole string is written in sequence : the not-underlined  header, the underlined part, the not-underlined trailer.
So the style is switched accordingly. It is easy to define very different styles for the embolding/underlining process :