Newspaper Jumpline auto page #?

Previous topic - Next topic

GALEN

New user here. Using Scribus 1.5.6.1 for small 16 - 24 pages newspaper and wondering if anyone has a solution to producing automatic jump-lines, that is, when linking text frames to another page, inserting that page number dynamically as a footer to the origin text like "Continued on page 15"?

dragonfly


I have no experience in writing multi column newspapers but as a theoretical exercise my immediate thought is to write the origin column foot note in textframes as ..

"Continued on page %VAR_jump01%"

Repeat for other column jump lines in textframes

%VAR_jump02%
%VAR_jump03%

but of course you can use your own indexing system after the prefix %VAR_

Next create an external csv containing a table of jump lines (as documented in ScribusGenerator python script).

When you now run ScribusGenerator.py in Scripter the variables will be expanded to be the values in your csv file (which you can create just before publication when you know the final binding).

RobSay

It's not available as an application feature - but you can write a script to automate it ..

This is not really 'beginner' territory - but it's a reasonable introduction to scripter capabilities:

  • Open your scribus document ..
  • Select the head text frame in the story
  • Open scripter console and do something like this:

# you can be more defensive, exit if a text frame is not selected etc.
currentFrame = getSelectedObject()
lastFrame = getLastLinkedFrame(currentFrame)
pages = scribus.pageCount()
# textOverflows() doesn't work as I expected - it always includes the linked frames ?
# while (textOverflows(currentFrame,1) == 1) .. always 0
# so cheat ...
totalTextLength = len(getAllText(currentFrame))
currentTextLength = len(getText(currentFrame))

# while there are more linked frames and a jumpline frame
while ((currentTextLength < totalTextLength) and (currentFrame != lastFrame)) :
  nextFrame = getNextLinkedFrame(currentFrame)
 
  jumpPage = currentPage()
  while (jumpPage < pages) :
    # find page which has the next frame in the chain
    if nextFrame in getAllObjects(ITEMTYPE_TEXTFRAME, jumpPage) :
      jumpLineText = "continues on page " + str(jumpPage+1) + " in frame: " + nextFrame
      print(jumpLineText)
      break
    jumpPage+=1
    # end while
  # should check it's actually on another page
  # Add a jumpline frame to current page (x,y,width,height) - my doc is in mm, calc the xy from the size of the current Frame or margins
  jumpLineFrame = createText(10,260,60,10)
  setText(jumpLineText, jumpLineFrame)
  # go to the page where the next frame was found, select the next frame, and continue adding jumpline frames
  gotoPage(jumpPage)
  deselectAll()
  currentFrame = nextFrame
  currentTextLength += len(getText(currentFrame))
  selectObject(currentFrame)
  # end while

You can harden that as a python script, make it more generic (look for any linked text frame) and then run it on whatever files you like when you have a new edition