Release: Xtags 6/7/22.214.171.124 for XPress 6/7/8
May 18, 2010 by cpr
This set of releases includes a huge set of bug fixes, and such features XPress 8 support, XPress Server 7/8 support, as intelligent @-sign handling, improved missing picture handling, Xtags Pro (table) handling improvements, a massive performance speed-up when placing unanchored boxes (up to 10X), “version 2” variants of all the anchored box tags, new “none” box tags, box background blend support, auto-shrinking of text boxes horizontally and in the face of multiple columns, box background and frame opacity support, blends in table, row, and cell tags, and much more.
Note that this covers all releases back to the start of the XPress 6/7/8 series.
Changes at 6/7/126.96.36.199 release
- At-signs (@) appearing in, for example, e-mail addresses, within the body of a paragraph are no longer treated specially, so long as there is an end-of-paragraph or some other tag-like character(s) (less-than (<), greater-than (>), and at-sign (@)) between it and the next (if any) colon (:). Meaning, so long as an @ doesn’t look like a paragraph style application, it will not be treated as one. For example, in
@pstyle1:Some text and firstname.lastname@example.org: Some more text.
Xtags will attempt to apply the paragraph style
mnop.xyz, because the
@mnop.xyz:looks like a paragraph style application, and there are no other special characters intervening. However, in
@pstyle1:Some text and email@example.com. Some more text.
pstyle1will be applied since the use of the @ no longer looks like a style application (there’s no colon between it and the end of the paragraph). Previously, all of the text from the @ to the end of the paragraph would be lost.
If a colon must follow the e-mail address, as in the first example above, then you’ll need to continue escaping the at-sign, as in:
@pstyle1:Some text and abc<\@>mnop.xyz: Some more text.
unless there are other intervening characters that make it clear this is not a style application, as in:
@pstyle1:Some text and firstname.lastname@example.org. Some more text.<\c>@pstyle2:In a new column now.
Changes at 6/7/188.8.131.52 release
- Fixed a problem where text beneath a placed unanchored box wasn’t always properly reflowing around the placed box.
Changes at 6/7/184.108.40.206 release
- Fixed a problem in QuarkXPress 8 where the missing picture’s proxy image (the red question mark) wasn’t being scaled properly to fit its box.
- Fixed a problem where the filenames of placed missing pictures could sometimes show up in QuarkXPress 8’s Picture Usage dialog with trailing garbage characters.
- Changed the handling of missing pictures in QuarkXPress 8 because references to missing pictures were sometimes being lost and displayed as “No Disk File” in the Utilities > Usage > Pictures dialog.
In versions prior to QuarkXPress 8, a reference to a missing picture was always retained exactly as it was specified.
Now, on Mac OS, a full path to a missing picture (
"Macintosh HD:Users:me:Pictures:cat.jpg", for example) is retained only if each folder in the path actually exists. If any folder of a full path is missing, or the missing picture is specified with a partial path (like
":Pictures:cat.jpg"), then just the picture’s filename (
"cat.jpg") is retained, relative to either the current document, if the document has ever been saved, or to the user’s home folder.
On Windows, a full path to a missing picture is always retained. Partial/relative paths to missing pictures are retained as being relative to either the current document, if the document has ever been saved, or to the user’s home folder.
- Corrected the positions of the Xtags copy and paste menu items in QuarkXPress 8.1 for Mac OS X.
Changes at 6/7/220.127.116.11 release
- Fixed a problem where overwriting an existing file while saving tagged text was sometimes leaving extra characters after the newly exported tagged text.
- Fixed a problem where
*htags (for H&J) weren’t always being output correctly in QuarkXPress 7 and 8.
- Fixed a problem where attempting to import a missing picture could produce a filename with trailing garbage characters in the Picture Usage dialog. (QuarkXPress 8, Mac OS X only)
Changes at 6/7/18.104.22.168 release
- Fixed a problem with importing hidden text
A(...)tags, where the resulting hidden text could be incorrect.
Changes at 6/7/8.3.3 release
- Added support for QuarkXPress Server 8.0.
- Added support for
<\z>, QuarkXPress 7’s undocumented zero-width space special character tag.
- Added support for Xcatalog’s new Unicode-supporting links. If you plan on exporting links created using Xcatalog 6/7/8.3.2 or later, or Xdata 6/7/8.4.1 or later, then you must upgrade to this Xtags release.
- Fixed a problem that would sometimes cause a mysterious crash after placing an anchored table. (Pro only)
- Fixed a problem where pictures specified with paths relative to the document template’s folder weren’t being found in QuarkXPress Server 7.
- Additional text file types entered in the Xtags Preferences dialog are now also used as filename extensions in Mac OS X. (They’ve always been treated as filename extensions in Windows.)
Changes at 6/7/22.214.171.124 release
- Fixed a problem where batch control (.xbc) files were being ignored but still deleted.
Changes at 6/7/126.96.36.199 release
- Added support for importing and pasting tagged text into a text frame selected with the item tool. Note that, since there’s no insertion point with the item tool, all imported/pasted text is simply appended to any existing content.
- Fixed a problem where placing an anchored table box could cause the document to become unstable. (Pro only)
- Worked around an issue where text wasn’t always flowing properly after applying a master page. (XPress 7+ Mac OS X only)
- On export, tags for empty and non-file-based pictures boxes are now generated with an empty file name rather than No Disk File. (XPress 7+ only)
- Batch folders, which were inadvertently disabled for the 6/7/8.3.2 release, have been re-enabled.
- Reverted the default encoding of text exported via our “classic” XT-to-XT API to always be platform-native (MacRoman/WinLatin) so that existing callers aren’t suddenly confronted with UTF-8-encoded text in Q7+ environments. To export text in newer encodings (like UTF-8), recompile your XTension to use our newer export API.
- The plug-in’s registration information is now properly retained for all users. Previously, Windows XP and Vista users whose accounts had limited privileges were being asked for a serial number each time they started QuarkXPress.
Changes at 6/7/188.8.131.52 release
- Shrinking boxes to fit their content now works again. (We broke it back in 6/7.3.2.)
@$ptag, which restores the current paragraph’s character style, now works properly in QuarkXPress 8.0.
- Fixed a tables problem introduced in 6-184.108.40.206 where setting any grid attribute (color, weight, style, etc.) of the bottom-most edge of the table might cause a crash. (Pro only)
- Fixed a tables problem where fixed-width columns were ignoring their applied numeric alignment. (Pro only)
- Fixed a tables problem where hitting an auto-sized column gutter’s width limit would cause the resulting table to be too narrow. (Pro only)
Changes at 6/7/220.127.116.11 release
- Improved the speed at which tables containing custom gridline weights are created. (Xtags Pro)
- Added XPressMath XT support under QuarkXPress 7.x and QuarkXPress Server 7.x.
- Fixed a problem where some rows’ heights were getting switched when creating a table containing header rows and enough additional rows to cause the table to break into two or more fragments. (Xtags Pro)
- Fixed a problem which was preventing Xtags Server 7 from loading in QuarkXPress Server 7 for Mac OS X.
- Fixed a problem where placing an unanchored box with no current box selection would cause Xtags Server 7 to crash.
Changes at 6/7/8.3.2 release
- Added support for QuarkXPress 8.0.
- The Xtags Server 7 XTension now requires QuarkXPress Server 7.2 or greater. (This change allows us to provide a Universal binary on Mac OS rather than a PPC-only XTension.)
- Flush left/centered column headers are now positioned (centered) independently from the column’s body rows. (Xtags Pro only)
- Table gutters and margins may now be suppressed on a cell-by-cell basis (handy for table titles and column headers that require preset insets) by specifying a zero-width gutter in the cell’s start tag, like
&tcs(:0,...). (Xtags Pro only)
- Fixed a number of issues which were resulting in incorrectly-sized cells and tables. (Xtags Pro only)
- Fixed a problem where a mix of proportionally- and auto-sized columns could result in either mis-sized columns or a crash. (Xtags Pro only)
- Refined table sizing so that gutters more tightly bound the right edge of columns containing wrapped text. (Pro only)
- Fixed a problem with left- and right-aligned numerical columns where text to the right of the number’s decimal point would overset in some situations. (Pro only)
- Fixed a problem that would give spanning cells (like headers) whose content’s width was very close to that of the spanned columns’ an extra line’s worth of height. (Pro only)
- Fixed a compatibility issue with KyTek’s XMLxt where numerically-aligned cells containing hidden XML were sometimes overflowing. (Pro only)
- Lowered the floor of proportional table sizes from 1 to 0.01 (1/100th) to provide an easier way to specify a right margin that sizes itself relative to the table’s inner gutters. For example, the long-ish
(1*,1*:2*|C,1*:2*|C), which specifies a fixed left margin and a right margin that’s half the width of the inner gutters, can now be shortened to
(.5*,1*|C,1*|C). (Pro only)
- Added support for table margins and column gutters. (Pro only)
Margin and gutter widths may be specified in the table tag’s column-widths parameter. The left margin qualifier takes the form
[<width>, the right margin qualifier the form
]<width>and gutters the form
:<width>. If not provided, Xtags defaults to flexible, equal gutters and right margin and a zero-width left margin (or
[0:1*]1*in Xtags parlance).
Margin and gutter qualifiers may be given in one of three forms:
- as a fixed measurement, like
:2p(for a gutter 2 picas wide) or
[0(for a zero-width left margin);
- as a range limited width of the form
min-width?max-widthwhere the gutter is allowed to size flexibly and equally (it’s treated as a
1*internally) until either limit is reached; or,
- as a proportional width, denoted with a
1*:2*, for example, which would cause Xtags to create a table whose inside gutters get twice as much space as its outside gutters. (Where
1*is simply shorthand for
There are two ways to include margin and gutter qualifiers in the column-widths parameter. If all column widths, alignments and gutter widths are the same such that the sub-list form of the parameter is unnecessary, then the sizing qualifiers can be placed directly in the column-widths parameter. For example,
creates a four column unanchored table that’s 80% of the containing column’s width with all inside gutters twice the width of the outside margins.
creates a similar table but with fixed, zero-width outside gutters and the default flexible, equal inside gutters. Lastly,
imposes a fixed 1p left margin, flexible and equal inside gutters limited to a width of 2p and a right margin that will obtain all remaining extra space.
If control over the individual column widths is needed such that the sub-list form of the column-widths parameter is required, then each column width in the list may include a gutter qualifier to be applied to the space between that column and the next column. For example,
makes the first gutter’s width (the space between columns one and two) 2p and the second gutter’s width 1p. The left and right margin qualifiers, if needed, can appear anywhere in the sub-list. The tag
creates a three column table with 6pt fixed margins, a 2p fixed gutter between the numerically right-aligned second and third columns and a gutter between the first two columns that obtains all remaining extra space.
- as a fixed measurement, like
- Improved the speed of placing unanchored boxes (text boxes in particular) by up to a factor of ten. (Which brings us back close to QuarkXPress 4 speeds).
- Fixed a problem where shrinking a text box to fit the width of its contents could shrink the box too much if its text ended with a paragraph marker.
- Fixed a problem where shrinking a text box to fit the width of its contents would fail if any paragraph rules were present.
- Fixed a long-standing problem which was preventing errors in style definitions from being reported.
- Added support for mixed column alignments within a single table column. Any column alignment type may now be specified in a table cell start tag’s width parameter and will locally override any alignment specified for the entire column. A cell of a particular alignment type (left, center, right, alphabetic or none) will be so aligned with all other cells of the same alignment type in that same column. (Pro only)
- The alphabetic table column format now handles long and multi-line entries properly. (Pro only)
- Fixed a long-standing problem which could leave columns artificially wide if they contained more than one cell each containing more than a single word. (Pro only)
- Fixed a problem which prevented tables from being anchored with ascent alignment or an offset baseline. (Pro only)
- Fixed a problem with tables where specifying a lock or maintain geometry flag would prevent the table from autosizing. (Pro only)
- Fixed a problem where representing a missing picture with our proxy image (the red ‘?’) would cause the scaling and positioning settings specified in the
&pbu2tag to be lost.
- Added the alphabetic
Acolumn format, where the content of all cells in the column is aligned on the left and adjusted so that the widest entry is centered within the column. Alphabetically-aligned cells are, by default, indented at least 6 points relative to left-aligned content. This indent may be specified by following the A key-letter with an indentation value, like “|A8”, which would increase the indent to 8 points, or “|A0”, which would remove the indent and make the alphabetic column indistinguishable from a left-aligned column. (Pro only)
- Added the “default”
$column format, which removes all Xtags-imposed formatting and lets each cell’s current style sheet determine the content’s alignment. This format can also be specified in &tcs’s width parameter (
<&tcs(|$)>) in order to disable a column’s format for a particular cell. (Pro only)
- Text boxes lacking a closing
&teand tables lacking a closing
&tseno longer cause Xtags to crash XPress. Such non-terminated box tags are now automatically closed.
- Fixed a problem where creating a table or non-rectangular box could sometimes cause a crash.
- Fixed a problem where creating an unanchored, positioned but default-sized box (like
<&tbu(36,36)>) would fail claiming the width parameter was “out of range”.
- Added “version 2” anchored text, picture and none box tag variants (
&nb2) to support rotation, skew, flags and runaround on anchored boxes.
(width, height, angle, skew, flags, anchored alignment, item runaround, frame width...)
For example, the tag
would insert a content-less anchored box at a 45 degree angle to the
baseline with no text wrap.
- The content of a text box may now be exported even if the box is a shape that’s not currently supported (like polygonal, bezier or a text-on-a-path). The Copy Xtags Text/Save Xtags Text… menu items are no longer disabled for the latter cases when in content mode.)
- On output, anchored and grouped boxes with an unsupported box shape are now silently ignored, instead of causing an error which aborted the export.
- Fixed an output problem where group members not actually touching the group’s page were being output with incorrect box offsets.
- In QuarkXPress 7, anchored box tags in which a runaround type is either not specified or is not specifiable (such as in the case of the
&nbtags) now create an anchored box with item runaround if any text outset is specified or an anchored box with the default runaround (as obtained from the corresponding tool’s preferences) if the text outset parameter is empty.
- In QuarkXPress 6, a Unicode character specified by
<\#U+nnnn>is now converted to the corresponding ASCII (MacRoman/WinLatin) character or substituted with a “?” if no conversion is available.
- Fixed problems with MacOS HFS-style partial path handling where using one or more parent directory references (like
:..:) in a picture’s path could prevent Xtags from finding the picture.
- Fixed some text box shrink-to-fit issues where hyphenated words, forced line ends and paragraph rules could prevent the text box from shrinking properly.
- Added the
&nbu2tags to represent “none” (content-less) boxes. The anchored none box tag takes the form
<&nb(width, height, anchored alignment, frame width, frame color, frame shade, frame style, background color, background shade, text outset, box name)>
while the unanchored none box tag has the form
<&nbu2(x, y, width, height, box angle, box skew, flags, item runaround, frame width, frame color, frame shade, frame style, background color, background shade, text outset, box name, layer name)>
- Addressed a QuarkXPress 7/Mac OS issue where tagged text put on the clipboard by Copy Xtags Text wasn’t available to non-Unicode applications like FileMaker Pro 9. Xtags 7 now copies both Unicode and non-Unicode (MacRoman) tags to the clipboard so that tagged text can be pasted into these older or non-Unicode-enabled applications.
- Fixed a problem where translation files with Unix-style line ends weren’t being read properly.
- Added the ability to Copy/Save selections containing multiple (ungrouped) items and a singly-selected item that belongs to a group.
- When shrinking a text box to fit its content’s width, Xtags now stops at a width that is just large enough to prevent words from breaking/hyphenating.
- Fixed a problem that could cause the display of an incorrect serial number in our QuarkXPress 6/Windows XTensions’ About dialogs.
- Added support for box background blends. A box’s background color parameter now accepts a sub-list that can specify blend-specific parameters, like:
(background color, blend color, blend style, blend angle)
where the blend style is one of
If not otherwise specified, a blend’s style defaults to
Linear, its blend color defaults to
K(black) and its angle defaults to
Similarly, the background shade parameter now accepts a sub-list that can specify a blend’s shade and opacity.
(background shade, background opacity, blend shade, blend opacity)
If not otherwise specified, a blend’s shade and opacity both default to 100%.
A non-empty setting for one or more blend-specific parameters will cause the box to contain a blend. For example,
<&pbu2(1",1",2",2",,,,,,,,,,(,,50))>, which simply specifies a blend shade of 50%, is enough to set a linear blend from 100% white to 50% black on the box.
Note that opacity parameters are ignored in QuarkXPress 6.
- Added support for shrinking text boxes width-wise. For example,
<&tb(160?,20)>The quick brown fox.<&te>
will produce a 20pt high anchored box whose width fits the contained text exactly while
<&tb(160?,20?)>The quick brown fox.<&te>
will produce an anchored box that tightly bounds its contained text both width-wise and height-wise.
- Added support for shrinking multi-column text boxes height-wise. For example,
<&tbu2(72,72,100,120?,,,,,,,,,,,,2)>The quick brown fox.<&te>
now produces a two-column text box whose height fits the contained text.
- Added support for box background and frame opacity in QuarkXPress 7. The background shade parameter now accepts a sub-list of the form
(background shade, background opacity, blend shade, blend opacity)
while another expanded sub-list for the frame shade parameter lets you specify the frame and gap opacities of the form:
(frame shade, frame gap shade, frame opacity, frame gap opacity)
where missing opacities and shades default to 100%.
creates a picture box with an 8pt black 50% opaque frame. Likewise,
creates a picture box with an 8pt frame, where the black dots are 50% opaque and the magenta gaps are 20% opaque.
- Fixed missing picture path preservation in QuarkXPress 7. A non-conditional missing picture file will result in a picture box containing a big red question mark proxy image along with a corresponding entry in the Picture Usage dialog.
- Missing picture errors now display the full path of the missing picture’s file.
- Worked around a QuarkXPress 7 limitation where it would refuse to import a picture when specified with a relative path and a filename containing a / (forward slash). For example, the import of
":picfolders:photo1/24/04.tif"now works as expected. (Mac OS only)
- A box being sized relative to a referenced box is now limited to its original size (meaning, it can only shrink). For example, the sequence
will generate a caption box that’s the width of the fit-to-contents picture box, but only up to 360 points.
- Fixed a problem where overwriting an existing file while saving tagged text was sometimes leaving garbage characters after the newly exported tagged text.
- Numerical character escapes like
<\#nnn>now always result in a character from either the MacRoman or the WinLatin character set depending upon the current
<en>setting and the OS. For
<e0>, a numerical escape results in a character from the MacRoman character set. For
<e1>, a WinLatin character is produced. If no
etag is present or if the
etag specifies an encoding other than
the resulting character is from MacRoman on Mac OS and WinLatin on Windows.
- Fixed a problem where pasting with Xtags could result in multiple “invalid tag” errors.
- Fixed general file type and creator issues in QuarkXPress 7 on Intel-based Mac OS machines that were preventing some text files from being selectable in the Import Text with Xtags… dialog. (XPress 7, Mac OS, Intel only)
- Added support for blends in table, table row and table cell tags. Each tag’s
background shadeparameters have been expanded just like the picture and text box tags. (See above.) Setting a blend on a table will produce a single blend for the entire table that will only be visible behind transparent cells (cells with None background color or those with opacities other than 100%). Setting a blend with a
table row tag will set the specified blend on each cell in that row. Setting a blend with a table cell tag will apply the blend to only that cell. (Pro only)
- Added support for table cell background opacity in QuarkXPress 7. (See normal box background opacity, above.) (Pro only)
- Added support for table gridline opacity in QuarkXPress 7. For tags explicitly versioned with a
<v7.00>tag or for non-versioned tags being imported into QuarkXPress 7, a
gridline opacitiesparameter has been inserted after the existing
gridline shadesparameter and a
gridgap opacitiesparameter has been inserted after the existing
gridgap shadesparameter in both the
&ts(table start) and the
&trs(table row start) tags. (Pro only)
- Fixed general table creation instabilities in QuarkXPress 7/Windows. (Pro only)
- Fixed a problem where inserting an anchored table could cause a crash. (Pro only)
- Fixed a byte order problem in
preventing other XTensions from finding Xtags on Intel-based Macs. Note that this change requires any QuarkXPress 7-level XTensions using our xt2xtags API to be recompiled with the new header. (OEM/VAR only)
- When generating v7.0 tags, Xtags no longer puts a language parameter in the
*p(...)tag since that attribute is now a character-level setting in QuarkXPress 7 (represented by the new
<n#>tag). When reading v7 tags, a language parameter, if present, is silently ignored so as not to break the reading of tags generated by previous versions of Xtags 7. (QXP7 only)
- Text insets for table cells are now set correctly in QXP7. (Pro only, QXP7 only)
- Worked around a QuarkXPress limitation which caused the creation of breaking tables with hundreds of rows to fail with the message “Box is too large to fit on the spread”. (Pro only)
- Fixed a problem where the height of rows in breaking tables containing hundreds of rows would be incorrect if the weight of the table’s horizontal gridlines was greater than zero. (Pro only)
- Fixed a glitch where exported PDF page numbers were off by one.
- Fixed the Euro character conversion between the MacRoman (<\#219>) and WinLatin (<\#128>) character encodings.
- Corrected a problem in the XT-to-XT API which was causing any import using the
XT2XTAGS_IMPORT_USEPREFERENCESflag to fail with paramErr (-50).
- The XMLxt, Autopage and XPressMath XTensions are now invoked (if present) for each created text box.
- Fixed a problem where single word cells were wrapping their contents. A cell’s text inset is no longer ignored when a cell’s smallest “nonbreaking” width is used. (Pro only)
- Worked around QuarkXPress limitations in order to fully support breaking tables. Tables large enough to break upon creation (hundreds of rows) will now import correctly. (Pro only)
- Added checks for breaking tables which ensure that all headers, footers and at least one body row (or group of spanned rows) will fit within the specified break height. (Pro only)
- Tables are now forcibly shrunk in order to attain a table width specified within the table’s start tag, even if doing so would cause cells’ contents to wrap or hyphenate. (Pro only)
- Table cells with very wide content will no longer blow out their columns’ widths. Rather than use such content’s natural width, we now use its minimum “non-breaking” width to help determine an appropriate width for the column. (Pro only)
- When measuring text width for column alignment and autosizing, Xtags now ignores the nominal width QuarkXPress tacks on to lines ending with line break characters. (Pro only)
- Added auto-center (which attempts to center a column’s content in a balanced way), auto-left and auto-right column alignment options. Use
|Lfor left and
|Rfor right in the column widths parameter. (Pro only)
- Fixed a problem where a column’s alignment wasn’t being accounted for when auto-sizing a column’s width. (Pro only)
- The content of table cells in aligned columns are no longer allowed to wrap. (Pro only)