Release: Xtags 4/5.1.1 for InDesign CS2/CS3
November 14, 2008 by cpr
This set of releases fixes a huge range of bugs and adds improved bold/italic font handling, layer support, object-level scripting support, hierarchical styles, no-content (“none”) frames, updated anchored frame variants with more control, full runaround types on frames, translation tables, macros, tagged text output, and much more.
(This includes all release notes back to the beginning of the CS2/CS3 series.)
Changes at 4/5.1.1 release
- Fixed long-standing problems with
<I>(italic) font face toggling. The tags
<f"a font with no bold style">foo <Bf"a font with a bold style">bar!<f$>
no longer generate a “missing font” error. The selection of a valid, non-missing font will no longer generate a “missing font” error if the font lacks a style for the current bold/italic state; instead, the text will be imported with the font’s default style. Likewise, the toggling of bold and italic faces (via
<I>) will no longer generate an error for fonts lacking an InDesign-recognizable bold or italic style but may instead, for these fonts, generate an invalid font style name (like “BigCaslon-Bold”) which InDesign will then display with the easily-detectable pink highlight.
- Fixed the import of “none” paragraph and character style tags, such that their application no longer removes extant attributes. Also fixed the export of none-style paragraphs to emit a full compliment of character-level tags representing the paragraph’s initial character-level state.
- Fixed a long-standing problem with font face toggling where, once toggled on, bold, italic, superscript, subscript and friends could “stick” to the end of the paragraph despite all attempts to turn the face off. Additionally, the applied character and paragraph styles’ settings are now considered when toggling these faces.
- Fixed a problem introduced in 4/126.96.36.199 where applying a master to a document’s initial page could cause InDesign to crash.
- Added full box-level support for layers. On export, an unanchored box tags now includes the box’s layer, while on import, a reference to a non-existent layer will cause the automatic creation of that layer. Note that, for compatibility with Xtags for QuarkXPress, the document’s bottom-most layer is considered the “Default” layer. Boxes whose tags don’t name a layer will be created on this default layer.
- Reintroduced the ability to import/paste text into one or more text frames selected with the selection tool. Note that, since there’s no insertion point with the selection tool, all imported/pasted text is simply appended to any existing content.
- Added support for
<$$>, which resets the font’s face to that of the current character style,
<a$>, which resets all character attributes to those of the current paragraph style, and
<a$$>, which resets all character attributes to those of the current character style.
- Added scripting support for object-level imports: the get text with Xtags command can now be used on story, page item and text frame objects without first selecting them. For example, the following will append “Through three cheese trees” to all text frames named “fleas” on page 1.
tell page item "fleas" of page 1 get text with Xtags from ("Through three cheese trees" as text) end tell
- 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 InDesign.
Changes at 4/188.8.131.52 release
- Fixed a problem where a scripted get text with Xtags could cause a crash if nothing was selected in the active document.
- Fixed a problem where
&ittags containing a leading
<ParaStyle:...>were generating an extra, unwanted paragraph.
- Sized-to-fit unanchored boxes no longer disappear when placed on any spread other than the first.
- As-anchored unanchored boxes, where no x or y position is specified, are now positioned as a same-sized ascent-aligned anchored box would be. Previously, the tops of these unanchored boxes were being positioned using the line’s leading, which set them much too close to the previous line’s baseline.
- Text copied from table cells via Edit > Copy with Xtags is no longer truncated in cases where the parent story contains fewer characters than the text being copied from the cell.
Changes at 4/184.108.40.206 release
- Fixed a problem introduced in the previous release which was failing to output tab characters in text saved or copied with Xtags.
Changes at Xtags for InDesign 4/220.127.116.11 release
- Fixed a long-standing problem with font face toggling where, with certain fonts, once toggled on via a
<I>the new face would ‘stick’ and not easily turn off. (Mac OS only)
- Fixed a problem with character style definitions where the char-based-on parameter wasn’t being accepted and, if specified, would instead cause the style definition to fail.
- Errors in style definitions are now reported. Previously, errors in style definitions were silently ignored.
- Fixed a problem where the insertion of an Xtags error could nullify subsequent character style changes.
Changes at 4/18.104.22.168 release
- Added support for hierarchical styles, where group names are separated with a
|(vertical bar) both in style definitions and applications. For example,
@header|small:would apply the paragraph style “small” from style group “header”. A literal vertical bar is represented by the escape sequence
\|, as in
@header|foo\|bar:. (CS3 only)
- Changed the non-breaking space tag
<\!s>to produce a single Unicode “hard space” character (U+00A0) in CS3 rather than a space + no-break sequence used in previous versions. (We avoided using U+00A0 in earlier versions because their composers wouldn’t justify lines of text containing such characters. This appears to have changed in CS3, however, where the composer now justifies lines containing hard spaces.) The single character non-breaking space can be used to end nested styles, for example.
- Changed the non-breaking hyphen tag
<\!->to produce a single Unicode non-breaking hyphen character (U+2011) rather than a hyphen + no-break sequence.
- Added an
Ntag to support InDesign’s no-break character attribute. A non-breaking run is started with a
<N1>and can be terminated with either a
<N$>, to return to the current style sheet’s setting, or a
<N0>. This tag may also appear in style definitions.
- Added support for section marker characters via the
- Fixed the output of page number, flush-right tab, no-break hyphen, style run break and flex space characters, which were either being ignored or output incorrectly.
- Generating tags for text colored rules no longer cause a crash. Instead, a
Tis now emitted as the color for text colored rules, where
<*ra(2,,T)>, for example, would represent a 2pt wide text colored rule above.
- Fixed a long-standing problem where applying a master to a document’s initial page was causing that page and all ensuing pages to contain too many boxes (like they had two masters applied).
- Moved keyboard shortcut entries so that they’re each in their respective menu area (File and Edit) rather than being glommed into a generic Xtags area.
- Updated our menu entries to match those of the QuarkXPress 7 sister product. So what was File > Get Text with Xtags… is now File > Import Text with Xtags…, Edit > Copy Xtags Text is now Edit > Copy with Xtags and Edit > Paste Xtags Text is now Edit > Paste with Xtags.
- Fixed a problem where placing an unanchored box “as anchored” within a table cell would instead create the box somewhere within the table’s containing story.
Changes at 4/5.1 release
- This release of Xtags 5 now supports InDesign CS3 (and Xtags 4 supports CS2). We no longer support Xtags 3 for InDesign CS. (Our policy is to support the two latest major versions.)
- Added the
&nbu2tags to represent “none” (unassigned, 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)>
- Added “version 2” anchored 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
<&nb2(1",1",45,,,B,n)>would insert a content-less anchored box at a 45 degree angle to the baseline with no text wrap.
- Added full support for all QuarkXPress runaround styles (auto image, embedded path, alpha channel, non-white areas, same as clipping and picture bounds) as well as all InDesign text wrap methods (jump object, jump to next column and all CS2 and CS3 wrap around object shape settings) where the runaround parameter can now contain the sub-list
(type, flags, index, noise, smoothness, threshold, side)
typeis one of
n– None (QuarkXPress) / No Text Wrap (InDesign)
i– Item / Wrap Around Bounding Box
j– Item / Jump Object
x– Item / Jump to Next Column
a– Auto Image / Wrap Around Object Shape: Detect Edges
b– Picture Bounds / Wrap Around Object Shape: Bounding Box
c– Alpha Channel / Wrap Around Object Shape: Alpha Channel
e– Embedded Path / Wrap Around Object Shape: Phototshop Path
s– Same As Clipping / Wrap Around Object Shape: Same as Clipping
w– Non-white Areas / Wrap Around Object Shape: Detect Edges
flagsmay specify any (or none, the default) of the following:
e– include inner edges
indexspecifies the embedded path or alpha channel when one of those types is selected.
thresholdspecify the tolerance settings for auto image, alpha channel and non-white runaround.
side, in CS3 or above, specifies to which side of an object text should flow and can be one of:
r– right side
l– left side
b– both right & left sides
t– side towards spine
a– side away from spine
g– largest area, the default
Note that tags specifying item runaround will be imported more accurately into CS3 than into CS2. In CS2, item runaround is always converted to Wrap Around Bounding Box which then implicitly wraps to both sides of the object. In CS3, which adds a Wrap To setting, Xtags now properly converts QuarkXPress-style item runaround to Wrap Around Bounding Box: Largest Area so that text wraps to the side of the object with more area, just as in QuarkXPress.
- Fixed a problem where an unanchored box placed relative to a box on a spread’s pasteboard was always being created on the first spread’s pasteboard (in the correct position, just not necessarily on the correct spread).
- Fixed a problem where the first use of an undefined paragraph or character style was being replaced by the “none” style. Such “implicit” styles are now properly applied to the text on their first use.
- When scripting Xtags, importing from a string rather than a file no longer results in a “file not found” error.
- Added support for the import of QuarkXPress-style hidden text tags (the
Atag) representing Xdata marks, mark references and sub-story names. Generally, these tags will come from Xdata-generated text exported from a QuarkXPress document by Xtags. If you’re interested in generating these tags manually, please contact Em Support for their formats.
Note that this support requires that the InData plug-in be present. Lacking InData, these tags will be (silently) ignored. Also note that Xtags does not (yet?) update headers automatically after importing marks. To update headers after importing marked text, use InData > Update Headers/Footers.
- 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 0 or 1 then the resulting character is from MacRoman on Mac OS and WinLatin on Windows. Previously we let the text source’s encoding dictate the handling of numerical escapes, but doing so for Unicode sources was resulting in incorrect characters. Now only the
<\#Unnnn>variants can be used to produce Unicode characters.
- Added support for Unicode picture paths, box names and layer names.
- Added cross-platform path recognition which allows a Windows path like
myfolder/mypicture.tifto work properly in Mac OS and a Mac OS path like
:myfolder:mypicture.tifto work in Windows.
- Fixed a problem where unanchored boxes positioned as if they were anchored were occasionally being placed a few points higher than the ascent of the current line.
- Fixed a problem that was positioning unanchored frames with non-zero stroke weights incorrectly.
- Fixed a problem where placing an unanchored frame relative to an anchored frame could leave the unanchored frame in the center of the page in some situations.
- Paragraph languages in the
*p()tag now use localized language names.
- Added support for translation tables. Xtags will search for translation files specified by a
&tt2tag in the folders
/Network/Library/Preferences/Xtagson MacOS or
.../user/My Documents/Xtagsand then
.../All Users/Documents/Xtagsin Windows. If Xtags doesn’t locate the translation file in one of these folders, it will then search relative to the current document/template’s folder and finally, if a tagged text file is being imported, relative to the tagged text file being imported.
- Added support for macros (the
- The new
&ittag allows the pass-thru of native InDesign Tagged text to access InDesign features that were previously unavailable to Xtags. This tag takes the form
<&it"""...""">, where the ellipsis is your InDesign Tagged Text sequence delimited at its start and end by triple quotes. Any InDesign tag should be usable, including the table, hyperlink and indexing tags.
Note that Xtags automatically prefixes your InDesign tags with the proper start file tag (either
Note also that passing tags thru to InDesign has a lot of overhead and is therefore quite a bit slower than using Xtags tags.
- Added support for nested inline (anchored) objects.
- Added File > Save Text with Xtags… and Edit > Copy Xtags Text.
- Tagged text export supports multiple layout selections. For example, you can multi-select (without grouping) any number of text and/or picture frames; when saved or copied, their corresponding tags will be generated in the order required to re-create the appropriate back-to-front order.
- For better compatibility with Xtags for QuarkXPress, CS2’s default “[Basic Paragraph]” style is considered the “Normal” style, but only if there’s not another paragraph style named “Normal” in the document. This allows Xtags to preface paragraphs based on [Basic Paragraph] with a simpler and more portable
@:tag rather than a
- Since leading and language are paragraph attributes in pre-version QuarkXPress 7.0 tags but are character attributes in InDesign, the corresponding parameters of the
<*p()>tag are filled only if the entire paragraph uses the same leading or language value. If the leading or language setting changes within the paragraph, the corresponding
<*p()>parameter will be left empty.
- Since InDesign supports multiple automatic methods for kerning, we’ve added a named variant to the existing manual kerning tag. The tags
<k"Metrics">may now be used to apply the corresponding InDesign auto-kerning method.
- The encoding of a saved file may be one of MacRoman, WinLatin, UTF-8 or UTF-16. Characters that can’t be represented in the target encoding are automatically converted to a
- Copy Xtags Text places UTF-16 text on the Windows clipboard and both UTF-16 and MacRoman text on the Mac OS clipboard (for compatibility with non-Unicode applications).
- Fixed a problem where quotes within pasted tagged text that were being converted and/or localized by InDesign before being processed by Xtags were causing Paste Xtags Text to fail.
- Added support for table cells, into which tagged text may now be imported and from which tagged text may now be saved. (NB: tables are neither imported nor exported by Xtags.)
- Added PDF page and cropping support to the picture box tags (
&pbu2). The top-level
picture pathparameter may now specify a sub-list with the format below, where
picture pathis the absolute or relative path to the PDF,
page numberis the number of the page to be imported and
cropping styleis the type of the cropping method to be applied.
(picture path, page number, cropping style)
Page numbers are integers in the range 1 to n, where n is the number of the last page in the PDF. Values larger than n are clamped to n while a value smaller than 1 will cause both the page and cropping pameters to be ignored. If not otherwise specified, Xtags will load the the PDF’s first page.
cropping styleparameter may be 0 (media), 1 (contents, the default), 2 (bleed) or 3 (trim).
Xtags will silently ignore the use of these parameters on non-PDF images.
- Added support for the frame position lock flag
Land the frame print suppression flag
- Scriptors may now use the application’s save text with Xtags to export the current selection.
- Scripting now supports object-based exports. Obtain a layer object and tell it to save as Xtags and all objects on that spread’s layer will be exported, in order, as tagged text. This works for master spreads, layers, spreads, pages, stories, page items and any “text” object (like a selection, paragraph, column, etc.).
- If you’re a developer whose plug-in invokes Xtags programmatically, you’ll want our latest API. We’ve added a number of interfaces which allow you to generate tags and we’ve also added new methods with which to import tags.