FOM Reference > Formatting > Tables > fTable interface
  
fTable interface
Objects of this class collect all settings pertaining to tables.
HorizontalAlignment enumeration
By default unless a table exactly fits a frame PTC ALD will position it flush left within it. You can change the position of the table (as long as it is smaller than the frame) by using horizontalAlign.
The HorizontalAlignment enumeration has the following constants of type DOMString.
ALIGN_LEFT = "left"
Horizontally left aligned and justified.
ALIGN_MIDDLE = "middle"
Horizontally centered.
ALIGN_CENTER = "center"
Horizontally centered.
ALIGN_RIGHT = "right"
Horizontally right aligned.
OverflowMode enumeration
In Version One Tables, tables were unable to overflow either columns or pages. The text in tables would start to flow from one cell to the next rather than the table breaking and restarting. In Version Two Tables, if a table overflows in either circumstances it will break as a whole and restart by default.
The OverflowMode enumeration has the following constants of type int.
OVERFLOW_END_TABLE = 0
When the bottom of a page, frame or column is reached, text flows from one cell to the next, terminates the table and restarts the next page, frame or column in normal text mode.
OVERFLOW_RESTART_ROW = 1
When a cell overflows the bottom of a column, the whole of the row is removed and restarted in the next column.
OVERFLOW_BREAK_ROW = 2
Break mid-row. When a cell overflows the bottom of a column, the rest of the cell is skipped, and text is formatted in subsequent columns as if the cell had been able to complete normally. Then in the next column, the table is restarted, with all the table columns restarting where they left off.
OVERFLOW_FLOW_COLUMNS = 3
When a text overflows the bottom of a column, the text "flows" into the next column of the table. If the text overflows the last column of the table, the table is restarted in/on the next frame/page and the text flows back into the first table column.
RowZeroMode enumeration
When a table flows from one column to the next, or from one page to the next, the row number will continue. Thee constants can be used with fTable.overflowRowZero to control if and how the row number gets reset.
The primary row number is used internally and identifies the row within the table.
The secondary row number (new in PTC ALD 10.0 M050) is not used internally, but is incremented with the primary row number. This number can be used in Rules and Backgrounds to control their look.
Use fTable.ZERO_PRIMARY + fTable.ZERO_SECONDARY to reset both row numbers.
The RowZeroMode enumeration has the following constants of type int.
ZERO_NONE = 0
After a break in the table, the prmary and secondary row numbers will continue.
ZERO_PRIMARY = 1
After a break in the table, the prmary row number will be reset to zero.
* 
This will only occur when fTable.overflow is set to fTable.OVERFLOW_RESTART_ROW.
ZERO_SECONDARY = 2
After a break in the table, the secondary row numbers will be reset to zero.
* 
This will only occur when fTable.overflow is set to fTable.OVERFLOW_RESTART_ROW or fTable.OVERFLOW_BREAK_ROW.
See fFormatting.LineNumberTypeROW_NUMBER.
KeepPriorities enumeration
The priority on keeps used within tables, usable with keepWithNext, keepWithPrevious and keepTogether. The same settings are also used by rowWidowPriority and rowOrphanPriority.
The KeepPriorities enumeration has the following constants of type int.
KEEP_OFF = 0
Off.
KEEP_PARTIAL = 100
On: But do not leave empty partial columns.
KEEP_FRAME = 200
On: But do not leave empty whole columns.
KEEP_ALWAYS = 255
On: Always.
absoluteEnd attribute
PI: tbabsend
This property can be used to control where the right edge of a table is measured from. Specifying true controls where the right hand edge of the table is measured from and only has an effect for a table that is nested within another table or block.
Normally in a nested table its edges are measured from the inside of the parent cell's rules after also taking into account any cell padding.
Searching back through the hierarchy of parent tables and blocks, if one is found with more than a single column, or one had its number of columns specified explicity, then when absoluteStart = true the table will be measured from the border of that parents column edge. This will still be inside any rules of the parent cell but will ignore any of its cell padding. If no conforming parent table/block exists then absoluteStart = true will measure directly from the frame column boundary. From this right boundary, the current table's right margin will then be applied, along with table rules and padding etc in the normal way.
absoluteEnd
Access
read-write
Returns
int
absoluteStart attribute
PI: tbabsstart
This property can be used to control where the left edge of a table is measured from. Specifying true controls where the left hand edge of the table is measured from and only has an effect for a table that is nested within another table or block.
Normally in a nested table its edges are measured from the inside of the parent cell's rules after also taking into account any cell padding.
Searching back through the hierarchy of parent tables and blocks, if one is found with more than a single column, or one had its number of columns specified explicity, then when absoluteStart = true the table will be measured from the border of that parents column edge. This will still be inside any rules of the parent cell but will ignore any of its cell padding. If no conforming parent table/block exists then absoluteStart = true will measure directly from the frame column boundary. From this left boundary, the current table's left margin will then be applied, along with table rules and padding etc in the normal way.
absoluteStart
Access
read-write
Returns
int
allowBreaks attribute
PI: tbbreaks
With old version 1 Tables, they weren't allowed to break over columns and pages, so when a column break or table break was encountered inside a table, it wasn't treated as such and instead terminated the table. This is still the default case for version 1 tables and corresponds to allowBreaks = false.
Version 2 tables default to allowBreaks = true, which means that column breaks and pages breaks will do as you'd expect, but will remain ‘inside' the table. If you want the col and page breaks to do what they did for version 1 tables, then set allowBreaks = false.
allowBreaks
Access
read-write
Returns
boolean
avoidAll attribute
PI: tbavoidall
avoidAll
Access
read-write
Returns
boolean
avoidClear attribute
PI: tbavoidclear
avoidClear
Access
read-write
Returns
boolean
avoidMe attribute
PI: tbavoidme
avoidMe
Access
read-write
Returns
boolean
avoidNone attribute
PI: tbavoidnone
avoidNone
Access
read-write
Returns
boolean
avoidPreserve attribute
PI: tbavoidpreserve
avoidPreserve
Access
read-write
Returns
boolean
backgroundColor attribute
PI: tbbgc
It is possible to assign a colour to the entire table, using backgroundColor. You must specify a colour with the command, this will then be applied to the table. You will only see the table background colour if cells have no colour assigned or where gutters occur in the table.
backgroundColor
Access
read-write
Returns
fColor
columnSets attribute
PI: tbcolsets
Specifies column set display definitions.
Instead of automatically letting PTC ALD work out the sets of columns to use when duplicating a table, you can specify them manually. These sets of columns will then be used if the table is too wide for the frame column, or if widthMode = 2 is used. Each colset is a list of columns to include, separated by commas. You can specify as many colsets as you need. i.e. table.columnSets = '(0,1,2,3),(0,4,5),(0,6,7)' will produce three copies of the table instead of one very wide table with 8 columns.
columnSets
Access
read-write
Returns
String
columnSpans attribute
PI: tbspanspec
Column span specifications for the tabse.
This property contains an array of column span specifications, accessible by their names. When starting a cell using fFormatting::tableCellStart, the name of a span specification may be used instead of giving starting and ending column numbers or names.
columnSpans
Access
read-write
Returns
fArray
columns attribute
The individual columns of the table. If you specify the number of columns in numColumns, there will be just as many items available in this array.
If the number of columns is left unspecified, this array will grow as needed to accomodate the columns of the table, up to the maximum number of columns supported by PTC ALD (currently 200). In this case, the last column object from the array on which any properties are defined will be repeated for all the remaining columns required by the data in the table.
columns
Access
read-write
Returns
fArray
defaultCell attribute
This object represents the default settings for cells in this table.
defaultCell
Access
read-write
Returns
fTableCell
defaultRow attribute
This object represents the default settings for rows in this table.
defaultRow
Access
read-write
Returns
fTableRow
footnote attribute
PI: tbfnote
Specifies a footnote control stream for table footnotes.
When a footnote control stream specifying sidenotes is applied to a table, the columns of the table will behave like the columns in a frame.
This can be used in conjunction with fTableColumn::reserve, which will reserve the relevant columns for the placement of sidenotes.
If a footnote reference is processed inside a table and that table does not have a footnote control stream, then the footnote control stream of the frame containing the table is applied. Similarly if a footnote is placed in a nested table which has no footnote control stream, then the parent table's footnote control stream is used, if it exists, else that of the frame.
footnote
Access
read-write
Returns
fFootnote
frameColumnEdges attribute
PI: tbrulefc
Only relevant when used in conjunction with spanAvoid = true. If true, then table-columns on the left of frame-columns will return true for (?l) or [l] when specified as the conditions for cell rules/background colours. Works similarly for right hand edges and (?r) or [r].
If you want to use this but still need to detect for a real left column, then use an explicit test of (x=1). Detecting for a real right hand columns requires you to know the number of columns in advance and use (x=5) for a 5 column table for instance.
frameColumnEdges
Access
read-write
Returns
boolean
gutterLeft attribute
PI: tbgutl
As well as being able to add gutters between the columns in the table, you can add gutters outside columns and inside table rules. There are two properties for this, use gutterLeft to add a left gutter and gutterRight to add a right gutter to the table. For each of these commands, you can either specify a fixed width (e.g. table.gutterLeft = '20mm') or specify that you want a relative width (e.g. table.gutterLeft = '1*').
gutterLeft
Access
read-write
Returns
fColumnWidth
gutterRight attribute
PI: tbgutr
As well as being able to add gutters between the columns in the table, you can add gutters outside columns and inside table rules. There are two properties for this, use gutterLeft to add a left gutter and gutterRight to add a right gutter to the table. For each of these commands, you can either specify a fixed width (e.g. table.gutterLeft = '20mm') or specify that you want a relative width (e.g. table.gutterLeft = '1*').
gutterRight
Access
read-write
Returns
fColumnWidth
headerKeepTogether attribute
PI: tbhkeeptog
If true, specifies that any header rows for the table will automatically be kept together.
headerKeepTogether
Access
read-write
Returns
boolean
horizontalAlign attribute
PI: tbfmth
Specifies table format criteria.
horizontalAlign
Access
read-write
Returns
String
horizontalProgression attribute
PI: tbfmthdir
This effects the alignment of the table within it's parent column is useful in Arabic systems or any other language which reads from right to left. If horizontalProgression is 1, the system will transpose left and right settings of the horizontalAlign property. This will only affect tables which are smaller than the parent column. See also progression.
horizontalProgression
Access
read-write
Returns
int
ignoreFillers attribute
PI: tbigfill
By default when using frame fillers, any vertical space where text could be vertically justified is potential area to be filled. This includes space at the bottom of cells that are not the deepest within their row.
Using ignoreFillers = true will restrict the fillers and stop this space at the bottom of cells from being filled.
ignoreFillers
Access
read-write
Returns
boolean
ignoreRuleWidths attribute
PI: tbignrw
If false then table rules extend into the table and their width reduces the amount of space for content. If true then the width of any table rules are ignored and they are drawn centred on the table boundary.
ignoreRuleWidths
Access
read-write
Returns
boolean
keepTogether attribute
PI: tbkeeptog
Specifies that the contents of the table is kept together, using the priorities in the same way other table keeps work
This is a column based keep and ensures that the table is kept within the same parent column, be it either a frame column, a slim table column or a block column.
keepTogether
Access
read-write
Returns
int
keepWithNext attribute
PI: tbkeep
This can be used to keep the end of a table with the item following it, with the priority behaving in a similar way to paragraph keeps. How much of the table is kept with the next item, depends on the overflow mode of the table, widows and orphans and any row keeps etc. All that this ensures is that the very last thing within the table is kept.
This is a column based keep and ensures that the item is kept within the same parent column, be it either a frame column, a block column or a slim table column.
You cannot keep from the end of a multi-column balance to the next item, because by definition they will be in different columns.
keepWithNext
Access
read-write
Returns
int
keepWithPrevious attribute
PI: tbkeepp
Specifies that the start of this table is kept with the previous item, using the priorities in the same way that paragraph keeps work How much of the table this keeps is dependant on the overflow mode in use and whether any row keeps are also in use etc.
This is a column based keep and ensures that the item is kept within the same parent column, be it either a frame column, a block column or a slim table column.
You cannot keep with the end of a multi-column balance from the next item, because by definition they will be in different columns.
keepWithPrevious
Access
read-write
Returns
int
margin attribute
PI: tbma
This property sets the top, bottom, left and right margins to the given size.
margin
Access
read-write
Returns
fLength
marginBottom attribute
PI: tbmb
It is possible to add margins to the outside of the table, in this way you can adjust the table position relative to the text surrounding it. With all the table margin commands you need to add a value (height or width) for the margin you require e.g. table.marginBottom = '20mm' would add a 20mm margin under the table.
marginBottom
Access
read-write
Returns
fLength
marginBottomPriority attribute
PI: tbmbp
Priority for bottom margin.
marginBottomPriority
Access
read-write
Returns
int
marginColumnTop attribute
PI: tbmct
Margin at the top of each column.
marginColumnTop
Access
read-write
Returns
fLength
marginColumnTopPriority attribute
PI: tbmctp
Priority for column top margin.
marginColumnTopPriority
Access
read-write
Returns
int
marginDropTop attribute
PI: tbmdt
This allows you to specify a top drop which will occur whenever a table is at the top of a column. The definition of column top is the same used for paragraph column top margins. This means the top of a frame column, the top of a cell when the parent table is of overflow type 3 or <?tbsimcol> has been used, or following a "break across columns". Note that this top drop is in addition to either marginTop or marginColumnTop and occurs mid-table as well as at the top of a table. This in particular gives you control over where headers occur in relation to the top of a column.
marginDropTop
Access
read-write
Returns
fLength
marginFollowOrientation attribute
PI: tborientm
If true, the values for marginTop, marginLeft, marginBottom and marginRight will be adjusted so they follow the orientation of the table.
marginFollowOrientation
Access
read-write
Returns
boolean
marginLeft attribute
PI: tbml
It is possible to add margins to the outside of the table, in this way you can adjust the table position relative to the text surrounding it. With all the table margin commands you need to add a value (height or width) for the margin you require e.g. table.marginLeft = '20mm' would add a 20mm margin left of the table.
marginLeft
Access
read-write
Returns
fLength
marginMiddle attribute
PI: tbmmid
Specifies the height of the margin between duplicate sets of a table: the default value is 0.
marginMiddle
Access
read-write
Returns
fLength
marginRight attribute
PI: tbmr
It is possible to add margins to the outside of the table, in this way you can adjust the table position relative to the text surrounding it. With all the table margin commands you need to add a value (height or width) for the margin you require e.g. table.marginRight = '20mm' would add a 20mm margin right of the table.
marginRight
Access
read-write
Returns
fLength
marginTop attribute
PI: tbmt
It is possible to add margins to the outside of the table, in this way you can adjust the table position relative to the text surrounding it. With all the table margin commands you need to add a value (height or width) for the margin you require e.g. table.marginTop = '20mm' would add a 20mm margin above the table.
marginTop
Access
read-write
Returns
fLength
marginTopModeAcross attribute
PI: tbmtmodea
By default tables following a break across will use a column top margin. Setting this to true will cause the table to use normal top margins in this situation instead.
marginTopModeAcross
Access
read-write
Returns
boolean
marginTopModeTable attribute
PI: tbmtmodet
By default tables following a table will use a column top margin. Setting this to true will cause the table to use normal top margins in this situation instead.
marginTopModeTable
Access
read-write
Returns
boolean
marginTopPriority attribute
PI: tbmtp
Priority for top margin.
marginTopPriority
Access
read-write
Returns
int
marginTopSpan attribute
PI: tbmtspan
Setting this to true, will cause table top or column top margins specified after a span, to themselves span as well.
marginTopSpan
Access
read-write
Returns
boolean
mustFit attribute
PI: tbmustfit
If true, specifies that this table must fit and so it will overlap with a warning if it doesn't.
An expected use would be for a rotated table within a parent table column, to ensure that the rotated content will fit, even if the parent column is too narrow.
mustFit
Access
read-write
Returns
boolean
name attribute
A name can be given to the table in order to make it easier to determine which table is being started and ended using the tableStart() and tableEnd() routines and to determine which table object is being formatted.
name
Access
read-write
Returns
String
noSkipCounters attribute
PI: tbnsshow
When table headers and footers are being skipped (using mode 2), then by default any changes to the showstring counters are also skipped/ignored.
With noSkipCounters = true then the showstring counters are not-skipped but flow through to the main body of the table.
noSkipCounters
Access
read-write
Returns
boolean
numColumns attribute
PI: tbcoln
By default, 3B2 will count the number of columns within a table by pre-scanning it, if either no columns were specified or if they were specified using fTableColumn::width as opposed to the old, version 1, < ?tbcols> PI. This has the disadvantage that you need to include explicit row break commands, when you want to start a new row. Using numColumns you can explicitly state the number of columns within the table, and cells will wrap onto new rows automatically. The final number of columns in the table is determined from numColumns as follows:
0
The number of columns will be counted by prescanning the whole of the table
-1
The number of columns[].width specified are counted to give the number of columns
>0
The number of columns.
If you set numColumns to explicitly define a number of columns then any tables nested within this table, will use its column edges if absoluteStart or absoluteEnd are true.
Slim tables of overflow = 3 flow content from one column to the next and so cannot be prescanned to count the number of columns. The number of columns must be specified explicitly.
numColumns
Access
read-write
Returns
int
numRows attribute
PI: tbrown
This specifies the number of rows in the table. This is only required for fTable.rowWidows, and if it is not specified, fTable.rowWidows will be ignored.
numRows
Access
read-write
Returns
int
orientation attribute
PI: tborient
This property is used to rotate a table 90 degrees counter clockwise. This is a particularly useful function if the table is too wide for the frame. Using orientation you can rotate a table so that it is presented in a landscape view that fits the dimensions of the frame.
orientation
Access
read-write
Returns
int
overflow attribute
PI: tbovflow
Specifies table overflow mode, as described in OverflowMode.
overflow
Access
read-write
Returns
int
overflowRowZero attribute
PI: tbovrowz
When a table overflows from one page to the next, or one column to the next, then the appropriate row number will be reset to zero when the table restarts. See fTable.RowZeroModes.
overflowRowZero
Access
read-write
Returns
int
paddingBottom attribute
PI: tbpadb
Amount of padding at the bottom of the table.
paddingBottom
Access
read-write
Returns
fLength
paddingLeft attribute
PI: tbpadl
Amount of padding left of the table.
paddingLeft
Access
read-write
Returns
fLength
paddingRight attribute
PI: tbpadr
Amount of padding right of the table.
paddingRight
Access
read-write
Returns
fLength
paddingTop attribute
PI: tbpadt
Amount of padding at the top of the table.
paddingTop
Access
read-write
Returns
fLength
positionReset attribute
PI: tbposreset
positionReset
Access
read-write
Returns
boolean
prescan attribute
PI: tbprescan
With Version 2 tables, 3B2 will normally pre-scan the data for the table, to determine how many columns there are and to pick up width information about the columns. The exception to this is when the user has specified the number of columns, and all their widths, either using the version-1 lump style attribute or a combination of numColumns and columns[].width properties at the start of the table. In these cases, 3B2 skips the pre-scan to save time.
Unfortunately, 3B2 also uses the pre-scan to pick up the position of the start of footers, (and other information in the future), and so to make the footers work, you will need to prescan = true to force 3B2 to do a pre-scan anyway.
prescan
Access
read-write
Returns
boolean
progression attribute
PI: tbdir
This effects the progression direction of the columns within the table. The columns normally flow left to right, but setting progression = 1 the columns will flow from right to left instead. This means that both the data and the column definition will start in the column on the right.
N.B. This does not mean that the text within the cells will flow from right to left; to achieve that as well, the paragraph needs to be told to work right to left too, which is done using currentParagraph.direction = 1.
progression effects the column ordering only; it does not affect the definitions of left and right, so table rules and margins are not effected
Cell rules also still obey left and right, so that cell tests for being on the left or right of the table still work; although they will now be triggered within different columns.
progression
Access
read-write
Returns
int
resetCounters attribute
PI: tbreshow
When a table overflows a page and headers and footers etc. are inserted then by default the showstring counters flow through from the main body of the table. If resetCounters is non-zero, then when 3B2 re-inserts the header, the showstring counters are put back to the values that they had when the header was first encountered and stored. The header is then formatted and then the counters are restored to the value they had ready for the rest of the body of the table.
N.B. This includes restoring the value of the show string counters for the current page number. So within the header the page number being displayed will be the page on which the header was defined.
When using column and frame references there is a potential clash with any table headers and particularly when using resetCounters = 1. The column and frame references are inserted within the context of the header, so will pick up the header's show string counters, will modify those counters for the duration of the header, and then those changes will be discarded for the main body of the table and any text afterwards. To add more flexibility in this situation, from version 8.10s, resetCounters can also take the value 2. When setting resetCounters = 2, the header is still formatted within its original context and counters, but the frame and column references get given the counters from the main body of the table, and any changes they make are then carried over into the main body of the table after the header finishes.
Added num[,slot] option from version 8.11q, which only applies if num is non-zero. slot is allowed to take a value from 1-5 which has two corresponding effects:
When the counters are recalled, the counters from the main flow of the table are placed in the designated slot (1-5), so they can then be accessed using <?showget>, <?showput>, <?showswap> and <?showclear>.
Whatever counters are in the designated slot will then be used when returning to the main body of the table.
The point of these options is to allow the header to pick up the counters it had when it was originally defined so that it formats as expected; but also to allow the header to make changes within the body of the table - ie to increment a count for each header displayed. The expected use is that for any counter changes that the header needs to make for the body of the table, the following actions will be done:
get the existing counters from the body of the table that are currently in the slot by using <?showget> or <?showswap>
modify the counters
put them back into the slot using either <?showput> or <?showswap> knowing that these will be restored to the body of the table once the header finishes.
Added num[,slot][,f] option from version 11.m050, which only applies if num is non-zero. This allows any footnote counters to be carried through the header, even if all the rest of the counters are being recalled from their value when the header was defined. This applies to standard counters: "fklmn" If you're going to place a footnote inside a repeated header, this prevents the footnote counter from resetting each time it's encountered, and works in combination with combining identical footnotes if the header is likely to appear multiple times on a single page.
resetCounters
Access
read-write
Returns
String
rowFill attribute
PI: tbrfill
This feature or command has not been fully implemented in 3B2 or is still under development for a future release. Use of this feature or command is done so entirely at your own risk before notification of full implementation in the release notes or documentation.
Table Line padding. When there is a need for more cells in a table to fill a line, rowFill will add more cells so that a line is full. The cells generated by PTC ALD use, if it exists, the empty cell reference declared with fTableCell::emptyReference.
rowFill
Access
read-write
Returns
boolean
rowOrphanPriority attribute
PI: tbrorp
Sets the priority of the rowOrphans. Orphans are the first rows of a table which occur at the bottom of a column or page. See KeepPriorities.
rowOrphanPriority
Access
read-write
Returns
int
rowOrphans attribute
PI: tbror
The rowOrphans attribute enables you to define the minimum number of orphan rows for the current table. Orphans are the first rows of a table which occur at the bottom of a column or page.
rowOrphans
Access
read-write
Returns
int
rowOrphansExtended attribute
PI: tbrorx
This option determines when the orphans are applied to tables. If false (the default), the orphans are only applied to the first rows in the table. If true, the orphans are applied to the first rows in any portion of the table where it overflows.
rowOrphansExtended
Access
read-write
Returns
boolean
rowSkipMode attribute
PI: tbrskipmode
Specifies the required syntax and behaviour when a row is entirely spanned by cells in earlier rows. By default, these are not specified, in the same way that cells that are spanned aren't specified. But when rowSkipMode is true, each of the skipped rows must still have its corresponding row-start and first cell-start, just so that these can then be ignored/skipped. This mode matches the behaviour of FOSI, editor and Excel and defaults to true for PTC ALD in the Styler template.
rowSkipMode
Access
read-write
Returns
boolean
rowWidowPriority attribute
PI: tbrwidp
Sets the priority of the rowWidows. Widows are the last rows of a table which overflow to the top of a column or page. See KeepPriorities.
rowWidowPriority
Access
read-write
Returns
int
rowWidows attribute
PI: tbrwid
The rowWidows attribute enables you to define the minimum number of widows rows for the current table. Widows are the last rows of a table which overflow to the top of a column or page.
The number of rows in the table must be specified using fTable.numRows for row widows to be used.
rowWidows
Access
read-write
Returns
int
ruleBottom attribute
PI: tbbotr
When a table flows over from one page to the next, or one column to the next, by default the bottom rule around the whole table is not included where the table broke. When true, this property forces the bottom rules to be displayed.
ruleBottom
Access
read-write
Returns
boolean
ruleTop attribute
PI: tbtopr
When a table flows over from one page to the next, or one column to the next, by default the top rule around the whole table is not re-inserted where the table broke. When true, this property forces the top rules to be displayed.
ruleTop
Access
read-write
Returns
boolean
rules attribute
PI: tbrules
This property is used to specify table rules. It is similar to fTableCell::rules (table cell rules), except that the flags are the rules or corners to use and not conditions. Previously, in Version One Tables, adding table rules meant having to specify a table style paragraph lump.
rules
Access
read-write
Returns
fRules
simulateColumns attribute
PI: tbsimcol
In normal tables, the top of each cell is treated like the top of a column, in that paragraph column top margins will be used. However, this does not allow fParagraph::topDrop to be used and if you overflow the cell, column top margins won't apply after the break. When using overflow = 3 for slim tables, it is designed to simulate frame columns and so as well as flowing from one column to the next on overflows, it also works with fParagraph::topDrop and follows the behaviour of normal text at the top of each cell, as if it was at the top of a column; including broken cells.
Setting simulateColumns = 1 allows normal non-slim tables to also simulate column tops at the top of each cell and when breaking and hence also allows fParagraph::topDrop to be used.
When specifying simulateColumns = 2 it works in the same way as simulateColumns = 1 but only applies to cells that are themselves at the top of a frame column. See marginColumnTop and marginDropTop for definition of what is at the top of a frame column and note that the use of simulateColumns allows this definition to cascade down a series of nested tables.
When using simulateColumns = 2 within a boxhead the behaviour is slightly different, as the expected use is to try and align content with the top of a column and within a boxed row the top of cells don't necessarily align with each other. Therefore within the boxhead, fParagraph::topDrop doesn't get applied to each individual cell, but is applied as a one-off to the whole boxed row. This is done by picking up the value of fParagraph::topDrop for the highest cell within the row and using this as a vertical shift for the whole row.
When specifying simulateColumns = 3 it works in the same way as simulateColumns = 1 allowing the use of fParagraph::topDrop, but normal top margins are used instead of using column top margins. This will then also cascade into nested tables or blocks at the top of the cell.
N.B. This does mean that if your cells have top rules, then fParagraph::topDrop won't be seen to have its usual effect.
Blocks: default to simulateColumns = 2 unless numColumns is set explicitly, at which point they use simulateColumns = 1 instead. The basic principle is that if the block is being used to define columns, then they will be treated as such.
simulateColumns
Access
read-write
Returns
int
skipEndGutter attribute
PI: tbskipegut
By default for new tables, no column gutter is allowed after the right hand column, and if you want a gutter there set the gutterRight property, and similarly the gutterLeft property on the left.
The skipEndGutter property can be used to override this and has a default value of true for new tables and false for old tables. Even when skipEndGutter = false a gutter is only after the right hand column if the gutter is specified explicitly, and was not implied by repeating the fTableColumn::gutter properties. (i.e. in a three column table, if you want a gutter on the right hand column, you must set 3 separate columns[].gutter properties and not just one, with repeat.
skipEndGutter
Access
read-write
Returns
boolean
spanAvoid attribute
PI: tbamode
Avoid mode for frame gutters. This command is only relevant when used in conjunction with spanColumns. If spanAvoid is set to true then PTC ALD will try and fit the table columns within the frame columns whilst avoiding the frame gutters. Only if this is infeasible will Arbortext PTC ALD ignore this command and break across the frame columns in the normal manner, irrespective of the frame gutters.
spanAvoid
Access
read-write
Returns
boolean
spanColumns attribute
PI: tbacross
Allows the table to break across columns within the frame. If true, the table will break across columns and if false it won't. If spanColumnsNum is unspecified, then the table will default to breaking across all the columns in the frame.
When specified within a table that is nested within a parent slim table of overflow = 3 or within a parent multi column block, this will span across the parents columns.
If the columns being spanned are also being balanced this will delineate the balance regions.
In the same way as fParagraph::spanColumns, content following a table that breaks across columns, will have the column top margin applied instead of the normal top margin.
spanColumns
Access
read-write
Returns
boolean
spanColumnsNum attribute
PI: tbacross
If spanColumns is true, the table will break across columns and if false it won't. The value of spanColumnsNum specifies how many columns to break across; if unspecified, then the table will default to breaking across all the columns in the frame.
spanColumnsNum
Access
read-write
Returns
int
spanFrame attribute
PI: tbspanframe
Allows the table to break across all columns within the frame. If true, the table will break across all columns and if false it won't.
Unlike spanColumns, this will always result in the table spanning the full frame column.
spanFrame
Access
read-write
Returns
boolean
spreadColumns attribute
PI: tbspread
If a width is specified for the table, and the sum of all the columns and gutters etc. falls short of this width, then if spreadColumns is true the columns will all be expanded in proportion to their widths to make up the shortfall.
Note: this is the last stage in calculating column widths, and if there are any relative widths specified for either the columns or gutters, they will have swallowed up all remaining space.
spreadColumns
Access
read-write
Returns
boolean
vjAbsolute attribute
PI: tbabsvj
This works in exactly the same way as fParagraph::vjAbsolute and ensures that any table vertical margins specified are absolute limits to how much stretch can be applied.
vjAbsolute
Access
read-write
Returns
boolean
vjForce attribute
PI: tbfvj
This property specifies always 'Force Vertical Justification'. Vertical justification lets you pad out the text in a table to fill the full column depth.
vjForce
Access
read-write
Returns
boolean
vjGutter attribute
PI: tbvjmgut
Space between rows of the table.
vjGutter
Access
read-write
Returns
fLength
vjGutterPriority attribute
PI: tbvjpgut
Priority for space between rows of the table.
vjGutterPriority
Access
read-write
Returns
int
vjLimit attribute
PI: tbfvjl
If there is less than the specified height left at the bottom of the column, then vjLimit will cause the whole table to VJ.
vjLimit
Access
read-write
Returns
fLength
vjMarginBottom attribute
PI: tbvjmbot
Space below the table, which is ignored if the table is the last thing in the column.
vjMarginBottom
Access
read-write
Returns
fLength
vjMarginBottomPriority attribute
PI: tbvjpbot
Priority for space below the table, which is ignored if the table is the last thing in the column.
vjMarginBottomPriority
Access
read-write
Returns
int
vjMarginColumnTop attribute
PI: tbvjmctop
Space above the table when the table is the first thing in a column.
vjMarginColumnTop
Access
read-write
Returns
fLength
vjMarginColumnTopPriority attribute
PI: tbvjpctop
Priority for space above the table when the table is the first thing in a column.
vjMarginColumnTopPriority
Access
read-write
Returns
int
vjMarginRow attribute
PI: tbvjmrow
Space below the text in the row, which effectively makes each cell deeper. This will mean that if the text is vertically centred, flushed to bottom or VJ'ed itself, then it will use this extra space.
vjMarginRow
Access
read-write
Returns
fLength
vjMarginRowBottom attribute
PI: tbvjmrowb
Space below the text in each cell, but above any bottom cell rules. The text will not expand into this space, as it does with vjMarginRow.
vjMarginRowBottom
Access
read-write
Returns
fLength
vjMarginRowBottomPriority attribute
PI: tbvjprowb
Priority for Space below the text in each cell, but above any bottom cell rules. The text will not expand into this space, as it does with vjMarginRowPriority.
vjMarginRowBottomPriority
Access
read-write
Returns
int
vjMarginRowPriority attribute
PI: tbvjprow
Priority for space below the text in the row, which effectively makes each cell deeper. This will mean that if the text is vertically centred, flushed to bottom or VJ'ed itself, then it will use this extra space.
vjMarginRowPriority
Access
read-write
Returns
int
vjMarginRowTop attribute
PI: tbvjmrowt
Space below any top rules in a cell, but above the text. The text will not ignore this space when vertically centring, VJ'ing etc.
vjMarginRowTop
Access
read-write
Returns
fLength
vjMarginRowTopPriority attribute
PI: tbvjprowt
Priority for space below any top rules in a cell, but above the text. The text will not ignore this space when vertically centring, VJ'ing etc.
vjMarginRowTopPriority
Access
read-write
Returns
int
vjMarginRuleBottom attribute
PI: tbvjmrbot
Space between the last row of the table and the table bottom rules.
vjMarginRuleBottom
Access
read-write
Returns
fLength
vjMarginRuleBottomPriority attribute
PI: tbvjprbot
Priority for space between the last row of the table and the table bottom rules.
vjMarginRuleBottomPriority
Access
read-write
Returns
int
vjMarginRuleColumnTop attribute
PI: tbvjmrctop
Space between the table top rule and the first row when the table is the first thing in a column.
vjMarginRuleColumnTop
Access
read-write
Returns
fLength
vjMarginRuleColumnTopPriority attribute
PI: tbvjprctop
Priority for space between the table top rule and the first row when the table is the first thing in a column.
vjMarginRuleColumnTopPriority
Access
read-write
Returns
int
vjMarginRuleTop attribute
PI: tbvjmrtop
Space between the table top rule and the first row when the table is not the first thing in a column.
vjMarginRuleTop
Access
read-write
Returns
fLength
vjMarginRuleTopPriority attribute
PI: tbvjprtop
Priority for space between the table top rule and the first row when the table is not the first thing in a column.
vjMarginRuleTopPriority
Access
read-write
Returns
int
vjMarginTop attribute
PI: tbvjmtop
Space above the table when the table is not the first thing in a column.
vjMarginTop
Access
read-write
Returns
fLength
vjMarginTopPriority attribute
PI: tbvjptop
Priority for space above the table when the table is not the first thing in a column.
vjMarginTopPriority
Access
read-write
Returns
int
width attribute
PI: tbw
If you do not enter a width for the table, PTC ALD will work it out by calculating the columns, gutters and rules within it. This may give unpredictable results, therefore it is advisable to specify a width.
width
Access
read-write
Returns
fColumnWidth
widthCalc attribute
PI: tbwcalc
Specifies the algorithm used when calculating the column widths, but only has any effect when the contents of cells spanning multiple columns are wider than the sum of the columns they span. The current methods implemented for num are as follows:
0 Default
An attempt is made to increase the width of all individual columns equally, spreading the space between them.
1 Right-most
Extra space needed for the spanning cell, is applied to the rightmost column being spanned only. Adjusts the column widths, working up in the number of columns spanned.
2 None
Cells spanning multiple columns have no effect on the width of columns, so if the text within them is too wide, it will need to wrap.
3 Right-most
New for v6.51a: Extra space needed for the spanning cell, is applied to the right-most column being spanned as in mode 1. But works from the left column to the right which should guarantee the smallest table necessary.
N.B.
Other methods may be added in the future, so make sure you stick to these four.
From version 6.52a, widthCalc needs to interact with widthCalcMode and fTableCell::widthMode when cell widths are allowed to wrap. Spanned cells can now also be given minimum and maximum widths in the same way that normal cells can. widthCalc still always affects the order in which spanned columns are taken into account, but now only affects the distribution of space to columns once those columns are at least as wide as their maximum widths.
widthCalc
Access
read-write
Returns
int
widthCalcMode attribute
PI: tbhcalc
This only has any effect when fTableCell::widthMode or fTableColumn::widthMode are set to true . It effects the method that 3B2 will use to determine how to allocate space to columns, when there is enough space for all minimum measured column widths to be used, but not enough for maximum measured widths. This works in conjunction with widthCalc if the table contains cells that span columns. The values of code are as follows:
0
This is the default method. Priority is given to columns with a higher ratio of maximum to minimum widths. This should give the effect of keeping the number of lines within each row to a minimum.
1
Space is allocated proportionately.
2
Minimum widths only are used.
When pre-scanning to measure the column widths, by default 3B2 limits the width of any column to the maximum width of the frame/table. By setting wide_mode to 1, 3B2 will measure any columns as wide as possible. This has the effect of increasing the priority given to columns containing long paragraphs.
N.B.
Do not use any values of code, other than the ones specified, as others may be added in the future.
Much greater control of the final look can also be gained by setting fTableCell::widthMode on individual rows/cells; i.e. measuring could be restricted to the table header.
widthCalcMode
Access
read-write
Returns
String
widthMode attribute
PI: tbwmode
When a table is too wide for a frame column, by default it just takes up the space that it needs. widthMode lets you specify alternative behaviours as follows:
0
This is the default, which lets the table be too wide, unless columnSets has been specified.
1
Strips off any columns on the right until the table fits.
2
Strips off columns from the right until the table fits, and then duplicates the table below with any master columns and any remaining columns. This will continue until all the columns have been accounted for. When duplicating and repeating a table with a different set of columns, any columns that have been designated as masters will be inserted into every copy of the table. By default column 1 will be treated as a solitary master column, but you can use fTableColumn::isMaster = true on it and other columns to override the default. 3B2 will always insist that each set of columns includes the master columns and at least one extra column and will still make the table too wide if this rule can't be followed. When you want two columns to stay together use fTableColumn.keepWidthNext = true to keep one column with the next.
3
Will always use the values specified in columnSets even if the table is narrow enough for the frame column.
> 3
Reserved; do not use.
widthMode
Access
read-write
Returns
int
widthReference attribute
PI: tbwref
widthReference lets you specify a series of alternate width references and breaks to use when the table is too wide to fit within the current measure. Each option will be tried in turn until the resulting table either fits within the measure or until there are no more options to try.
When specifying widthReference = '[b] "ref1" [, [b] "ref2" [, [b] "ref3" ...] ]' , each reference ref1, ref2, ref3 etc is simply a text tag which contains relevant table PIs. You must always specify at least one reference, although it doesn't make sense to specify less than two; and you can specify as many as you want. Whilst working out the width of the table and columns, the table preamble will be formatted multiple times using ref1 the first time and then each subsequent time including the next reference in the sequence. This may include prescanning the table multiple times if necessary, so be aware of speed implications. As well as the references themselves you can optionally include b parameters, but these must always be followed by a reference. They allow you to break to a new column for b1 or page for b2 before trying the new reference.
As an example:
widthReference = '"w1","w2",b2,"w3"' where
w1 contains: <?tbcolw=#+1mm><?tbcolgut=5mm>
w2 contains: <?tbcolw=#><?tbcolgut=2mm+*><?tbcpat h="10pt">
w3 contains: <?tbcolw=#><?tbcolgut=5mm><?tborient=1>
By default this will create a table using reference "w1" where all the columns are measured with an extra 1mm padding and have a 5mm gutter between them. If that doesn't fit we will try reference "w2" where we've reduced the gutter to 2mm and reduced the text height to 10pt by passing the relevant attribute to an assumed fTableCell::paraReference (this could also have used a completely different paraReference instead). If that still doesn't fit then the table will break to a new page because of the 'b2' option and will then use reference "w3" which will rotate the table 90 degrees anticlockwise.
widthReference
Access
read-write
Returns
String
fTable method
Create a new fTable object.
fTable
Parameters
None
Returns
fTable. The newly created table object.
readResolve method
Return the object corresponding to the given serialized representation.
readResolveobj
Parameters
Objectobj
The serialized representation.
Returns
fTable. The object corresponding to the serialized representation.
writeReplace method
Create a serializable representation of this object.
writeReplace
Parameters
None
Returns
Object. A serializable representation of this object.