1

I'm using InDesing CS4.

Is there a way to setup text frames to start at the end of thread and flow upwards?

This is how I want it to look/work. Each box will represent a text frame on a page:

enter image description here

If I add a new line:

enter image description here

Edit: This data gets filled in by an automated app. So re sizing, or adding frame-breaks not really an option.

1

Now, this is a problem I also once faced - and I did not find a solution back then. However, nowadays I know about scripting a bit, so I put together a quick snippet that should do what you want.

You need to save it as a .jsx file and put it in your scripts folder. Then select any of your text frames that belong to the flowing text and run the script by double clicking it in the scripts panel (under Window > Automation in InDesign CS4).

Or you could even assign the script to a keyboard shortcut, so you could execute the script with the press of a button any time you have a text frame selected.

Here it is:

#target InDesign

//Checks if a text frame was selected.
if(app.selection.length < 1 || (! app.selection[0].hasOwnProperty("parentStory")) ){
    alert("Error\nSelect a text frame and try again.");
    exit();
    }

var story = app.selection[0].parentStory;
var tcs = story.textContainers;

var p = story.paragraphs[0].characters.length;

//Removes any empty paragraphs at the beginning in case the script has been run before.
while(p == 1){
    story.paragraphs[0].remove();
    p = story.paragraphs[0].characters.length;
    }

//Checks if the text would fit into the text frames at all.
if(story.overflows){
    alert("Error\nThe text does not fit in the textframes. Try adding or resizing some text frames.");
    exit();
    }

//Aligns all text to the bottom of the text frames.
for(var i = 0; i < tcs.length; i++){
    tcs[i].textFramePreferences.verticalJustification = VerticalJustification.BOTTOM_ALIGN;
    }

//Keeps adding empty paragraphs at the beginning until text overflows, then removes one again.
while(!story.overflows){
    story.insertionPoints[0].contents = "\r";
    }
story.paragraphs[0].remove();

Now this is pretty basic, but should work in most situations.

It certainly could be improved to work better for you specific situation, e.g. it could go through the entire document and do all the reflowing at once, but then you would need to label the text frames that the script should perform on first.

  • Nice! I was thinking something like checking the overflow and adjusting might be the direction I need to go to solve this. – Crispy Sep 25 '15 at 16:18
2

Text is simply content in a frame, so you need to change the behavior of the frame in this case.

  1. Go to the top menu, choose Object > Text Frame Options...
  2. In the Vertical Justification section, choose Align: Bottom and hit Okay

Both of your text frames can be aligned to bottom, or just the second one.

Bonus tip: If you want to control which item precedes the flow into the next frame, place your cursor after that item and head up to the Type Menu, choose Insert Break Character > Frame Break. This will force the following text into the next linked frame.

  • Add frame-break would work, unfortunately text going into this filed is automated and I wouldn't be able to tell where to insert the frame break without manually doing it :( Hoping or a solution without frame breaks. – Crispy Sep 23 '15 at 17:23
  • @Crispy: but the forced frame break is only a bonus. It's no part of the essential answer, which appears the correct way to me and ought to do exactly what you describe. – usr2564301 Sep 25 '15 at 23:49
  • 1
    @Jongware: The question is not about how to align text in text frames at the bottom, but rather how to flow a threaded text (a story) from the end of its text containers instead of the beginning. So without a page break the first text frame would be entirely filled with text, the second one half filled, which is not what Crispy describes. – mdomino Sep 26 '15 at 11:23
1

I have 2 alternative options than using align - bottom with 2 different examples in this image (which probably shouldn't be used...).

1) The first part of the image uses a textbox with a space as the first line. I then applied a space before to the 1 of .33" (This will change depending on your text size and line-height). The second part of the image shows me adding another line to the example.

2) The alternative if you don't want to use space before is to just lower the height of the textbox. You can see this in the third part of the image.

lines

  • Thanks. Hoping for a way to do it without having to manually add spaces or resize. Text going into thread is unknown size and is filled through a computer app. – Crispy Sep 23 '15 at 17:17

Your Answer

By clicking “Post Your Answer”, you agree to our terms of service, privacy policy and cookie policy

Not the answer you're looking for? Browse other questions tagged or ask your own question.