Thanks for coming to InDesignSecrets.com, the world's #1 resource for all things InDesign!

Releasing Inlines

As the King sang “Please Release Me” someday you may want to release an inline graphic from its position as a character in a text frame.

Strangely there is no direct command to release an inline object. You can select an anchored object (sitting outside the text frame) and right-click or choose Object > Anchored Object > Release. The anchored object is unhinged from the text flow.

But an inline graphic is treated differently than its anchored cousins. The Release command is not available.

So how can you release an inline? One method is to simply Cut it and then Paste it. Here are two more elegant (though slightly more time-consuming) solutions:

The first is to select the object and choose Object > Anchored Object > Options and change the Position from Inline to Custom. This converts the object from inline to anchored (though the object will probably move on the page). The Release command is now available from the Anchored Object submenu.

The second is to use the cool script written by the script-genius Dave Saunders. The benefit of this script is that the inline object ends up exactly where it was before it was released. This makes it easy to then use the graphic somewhere else. (The text around it will likely reflow, though.)

You can download this script here. (Open that jsx file in a text editor to see how he did it.)

[Editor’s note: January 21: This file has been updated to a new version called ReleaseAnyAnchor, and it should work in InDesign CS3 to CS5.5 (and perhaps beyond).]

Sandee Cohen

Sandee Cohen

Sandee Cohen is the author of the InDesign CC 2014 Visual QuickStart Guide as well as the co-author, with Diane Burns, of Digital Publishing with Adobe InDesign CC.
Sandee Cohen

Latest posts by Sandee Cohen (see all)

  • - November 30, -0001
Related Articles
Comments

18 Comments on “Releasing Inlines

  1. All this talk of “genius” makes me nervous, but let me point out a couple of things:

    I wrote this script more to make a point (that releasing Inlines can be done fairly easily, so why does Adobe make it so weirdly inconvenient?), and threw in a little bit of error checking, but the script has a couple of limitations, as written, both of which revolve around the use of parentPage as a property of the selected inline:

    1. This means the script only works for CS5 or later.

    2. If you are working with a text frame on the pasteboard, the script will fail.

    This coming weekend, I’ll do some refining.

    Dave

    • Excellent script, can it be made to unanchored all anchored objects in a document in one go?

      Thanks for your help

  2. @Dave: do you think it’s a bug that if I do “cut”/”paste in place” my inline object, the object’s left/bottom position will be at the spine horizontally in the middle of the page? Or should we think of it as a “feature” since this is not new to InDesign CS5.5 at all?

    Scriptwise a simple “mySelection.duplicate()” together with “mySelection.remove()” of the object will do the same. And the same behaviour is true when this method is applied to anchored objects.

    Another observation: if you select an object inside an inline/anchored group of objects and do “cut”/”paste in place” the relative position inside the group will be honored when positioned at the spine.

    Uwe

  3. @Julie: Indeed, Dave’s script is more elegant, but it’s NOT more time consuming! You easily can apply a keyboard shortcut to his script.

    And it will release the inline object at the same position.
    You cannot have that in the UI.

    Uwe

  4. I apologize for putting in the phrase “time consuming options.” The script can be made much quicker and more convenient.

  5. Dave Saunders updated the script so that it is more robust. If you downloaded the earlier version, please click the download link above to get the new version, called ReleaseAnyAnchor.jsx.

    This one now supports Undo. And Dave explained: “Because of the desire to have it work with older versions of ID, I’ve made more nuanced use of the parentPage property — it’s now inside the findPage function, which is a general purpose find page function for any kind of selection: overkill here, but readily available. I’ve also addressed the issue of the text frame being on the Pasteboard. And, I’ve made another functional change, deleting the check to have it only work on inlines. That means it can be used to release any kind of selected anchor so you can hang a shortcut on it and use the shortcut without having to worry about which kind of anchor you’re working with.”

  6. @Uwe — this is one of those scripts that I backed into. I wasn’t really trying to solve a real problem so much as expose a peculiar inconsistency, so I’m not invested much in the functionality.

    I do think that it is superior to using cut/paste because doing that consumes the clipboard.

    The duplicate-then-delete-original approach is an interesting alternative, but I imagine it stresses the document a little more than the release approach. Granted, not much, but I was recently working on a document that had 26,500 page items in it, so adding one and then deleting the other could be the thing that pushed such a document over the edge.

  7. @Dave ? did you test your script on rotated, skewed or skewed and rotated objects?

    It will not fail, but the position of the object after release will be not the original one (tested with InDesign CS5.5).

  8. @Uwe — Of course not. I’m not the least bit surprised it doesn’t work with those variants. How many times does anyone ever use those features and then expect a script to work (unless the script was explicitly written to accommodate such things)?

  9. @Dave – far be it from me to critique the acknowledged Scripting Master (sorry, Ole), but I think your script has an error.

    On line 7, it reads:

    if (parseFloat(app.version < 6)) {

    But shouldn’t the first right paren be moved in, so it reads:

    if (parseFloat(app.version) < 6) {

    And maybe you want “<=" rather than "<" if you're trying to check for InDesign versions below 5.0 ?

    If I'm wrong, I apologize for wasting precious Internet bandwidth.

  10. Chuck,

    You’re right about the parens, but I’m not so sure about the <=. Version 6 was the first to support undo, so if the version is less than 6, we just call the function.

    But this makes me think that maybe the test isn't needed at all. I'm fairly sure that if in InDesign 5 or earler you call doScript with too many parameters, the excess parameters would be ignored.

    I don't have version 5 on this computer so I can't check right now.

    Dave

  11. Just checked it and I’m wrong. The number of parameters is not the whole issue. The UndoModes parameter is undefined in CS3 and earlier and so that statement fails.

    So the test is necessary, but it is correct to check for < 6 because UndoModes is available in CS4.

    Dave

  12. @Dave,

    You’re right about the <=. I keep forgetting that version 6 = CS4. Yuck.

    @David,

    How can you do these updates so quickly? Don't you have any quality control procedures in place? What about regression testing? Unit testing? Taste testing?

  13. I love the script, but how tricky do you think it would be to add some text wrap to the object so that, when released, text wraps around it just as it did when I pasted it inline? I’m talking here about wee inline icons, which my ePub developer has requested I un-anchor before sending them my InDesign files.

Leave a Reply

Your email address will not be published. Required fields are marked *