About
Shop
LaTeX
Free Software
Books
News
Contact
Blog
Recent news (2017-06-16): Blog post "Norfolk".

flowfram package FAQ

Search: Category:
Search Tips

This is the FAQ for the flowfram package. See also the user guide and the documented code

General Queries

What happens if no more flow frames are defined?

If all my flow frames are only defined on, say, pages 1-10, what happens if I then add some extra text so that the document exceeds 10 pages? The output routine will create a new flow frame the size of the typeblock, and use that.

Last Modified: 2013-12-08 17:19:39

Top

Can I use the formatted page number in page lists?

No. When the output routine finishes with one flow frame it looks for the next flow frame defined on that page, if there are none left, it then searches through the page list of all the defined flows frames to see if the next page lies in that range, if there are none defined on that page, it ships out that page, and tries the next page. This gives rise to two problems:
  1. LaTeX is not clairvoyant. If it is currently on page 14, and on the next page the page numbering changes to A, it has no way of knowing this until it has reached that point, which it hasn't yet. So it is looking for a flow frame defined on page 15, not on page A.
  2. How does LaTeX tell if page C lies between pages A and D? It would require an algorithm that can convert from a formatted number back to an integer. Given that there are many different ways of formatting the value of a counter (besides the standard Roman and alphabetical formats) it would be impossible to write an algorithm to do this for some arbitrary format.

Last Modified: 2013-12-08 17:22:29

Top

What happens if I use a command or environment that switches to two-column mode (e.g. theindex)

As from version 1.01, any \onecolumn or \twocolumn commands that occur outside of the preamble will print the contents of the optional argument, and issue a warning. I recommend that you set up your own frames for use in the index.

Last Modified: 2013-12-08 17:22:20

Top

Why has the text from my flow frame appeared in a static or dynamic frame?

Assuming you haven't inadvertently set that text as the contents of the static or dynamic frame, the frames are most likely overlapping. In an attempt to clarify what's going on, suppose you have defined a static frame, a dynamic frame and two flow frames. The following is an approximate1 analogy: TeX has a sheet of paper on the table, and has pencilled2 in a rectangle denoting the typeblock. The paper is put to one side for now. TeX also has four rectangular sheets of transparent paper. The first (which I shall call sheet 1) represents the static frame, the next two (which I shall call sheets 2 and 3) represent the flow frames, and the last one (which I shall call sheet 4) represents the dynamic frame. TeX starts work on filling sheet 2 with the document text. Once it has put as much text on that sheet as it considers possible (according to its views on aesthetics), it puts sheet 2 into the "in tray", and then continues on sheet 3. While it's filling in sheets 2 and 3, if it encounters a command or environment that tells it what to put in the static frame, it fills in sheet 1 and then puts sheet 1 into the "in tray" and resumes where it left off on sheet 2 or 3. Similarly, if it encounters a command that tells it what to put in the dynamic frame, it stops what it's doing, fills in sheet 4, then puts sheet 4 into the "in tray", and resumes where it left off. Only when it has finished sheet 3 (the last flow frame defined on that page), will it gather together all the transparent sheets, and fix them onto the page starting with sheet 1 through to sheet 4, measuring the bottom left hand corner of each transparent sheet relative to the bottom left hand corner of the typeblock. TeX will then put that page aside, and start work on the next page. If two or more of the transparent sheets overlap, you will see through the top one into the one below (unless of course the top one has been painted over, either by setting a background colour, or by adding an image that has a non-transparent background.)

Note that it's also possible that the overlap is caused by an overfull hbox that's causing the text to poke out the side of the flow frame into a neighbouring frame.

1The pedantic may point out that TeX may make several attempts to fill in the flow frames depending on penalties and so on.

2Actually it hasn't drawn anything really, but it has in its mind's eye.

Last Modified: 2013-12-14 09:53:12

Top

Why do I get lots of overfull hbox messages?

Possibly because you have narrow frames, and TeX can't find a good place to break the lines. If you are only getting them on even pages and are using a twoside option with your class file, this has been fixed in version 1.05.

Last Modified: 2013-12-08 17:33:09

Top

Can I make an arbitrary shaped frame?

As from version 1.03, you can assign certain irregular shapes to static or dynamic frames, using the shape key. Note that the bounding box will still appear as a rectangle with the dimensions of the given frame which may not correspond to the assigned shape. This function is not available for flow frames, however you can use TeX's \parshape command within flow frames. (See the sample file sample-news.pdf.)

Last Modified: 2013-12-08 17:35:07

Top

How do I change the vertical alignment of material inside a static or dynamic frame?

As from version 1.03, you can use the valign key in \setstaticframe or \setdynamicframe.

Last Modified: 2013-12-08 17:36:24

Top

Can I mix keywords and page lists?

No. You can either specify the pages as odd, even, all or none, or you can specify the pages as a page list, e.g. <3,5-7,10,>14. If you want frames to only appear on, say, odd numbered pages between 11 and 19, then initially define the frame with none for the pages setting, and then on page 10, use pages=odd, and on page 20, use pages=none for the frame in question.

Last Modified: 2013-12-08 17:37:31

Top

How do I compute the distance from the edge of the page instead of the typeblock?

The following commands all take a length as the argument. The distance from the typeblock to the paper edge will be stored in the length. You can then use this value to go from an absolute position to a relative position. For example, if you want to create a frame whose bottom left corner is one inch from the left edge of the page and half an inch from the bottom edge of the page (this assumes odd and even pages have the same margins):
% define two new lengths to represent the x and y coords
\newlength{\myX}
\newlength{\myY}
% compute the distance from the typeblock to the paper edge
\computeleftedgeodd{\myX}
\computebottomedge{\myY}
% Add the absolute co-ordinates to get co-ordinates
% relative to the typeblock
\addtolength{\myX}{1in}
\addtolength{\myY}{0.5in}

Last Modified: 2013-12-08 17:40:29

Top

How do I find out a frame's dimensions and location?

As from version 1.08, you can use the commands \getflowbounds, \getstaticbounds and \getdynamicbounds. Each of these commands requires a single argument that identifies the required frame. If the starred form is used, the argument should be the frame's identification label, otherwise it should be the frame's identification number. These commands set the lengths \ffareawidth, \ffareaheight, \ffareax and \ffareay.

Last Modified: 2013-12-08 17:41:40

Top

What is the package called flowfram instead of flowframe?

Because a long time ago in prehistoric times when digital dinosaurs roamed the Internet, package authors were asked to limit their filenames to eight dot three, so all my old packages have that limitation. This restriction was lifted quite some time ago, but it's too late to change the name now.

Last Modified: 2015-10-22 03:25:31

Top

Unexpected Output

The lines at the beginning of my flow frames are the wrong width.

This is a problem that will occur if you have flow frames with different widths, as the change in \hsize does not come into effect until a paragraph break. So if you have a paragraph that spans two flow frames, the end of the paragraph at the beginning of the second flow frame will retain the width it had at the start of the paragraph at the bottom of the previous flow frame. (This is due to TeX's output routine mechanism and can't be changed by flowfram.) You can fix the problem by inserting \framebreak at the point where the frame break occurs.

Last Modified: 2013-12-08 17:44:56

Top

My frames shift to the right when I add a border.

This may occur if you use a border that is not recognised by the flowfram package. You will need to set the offset using the offset key.

Last Modified: 2013-12-08 17:45:44

Top

The contents of my all my flow frames are shifted to the right

This has been fixed in version 1.04.

Last Modified: 2013-12-08 17:46:30

Top

I have a vertical white strip along the right hand side of every page.

This can happen if you are using the DVI format as an intermediate step and have, say, an A4 document, but ghostscript has letter as the default paper size. You can change the default paper size by editing the file gs_init.ps. Change:
% Optionally choose a default paper size other than U.S. letter.
% (a4)
to:
% Optionally choose a default paper size other than U.S. letter.
(a4)
Alternatively, consider switching to PDFLaTeX.

Last Modified: 2013-12-08 17:48:30

Top

I don't have any output

All your flow frames are empty. TeX doesn't put the frames onto the page until it has finished putting text into the flow frames. So if there is no text to go in the flow frames it won't output the page. If you only want the static or dynamic frames filled in, and nothing outside of them, just do \mbox{}\clearpage.

Last Modified: 2013-12-08 17:49:14

Top

The last page hasn't appeared

This is the same problem as I don't have any output.

Last Modified: 2013-12-08 17:50:17

Top

My longtables don't look right

Unfortunately flowfram and longtable don't work well together as they both change the output routine. Try using the supertabular package instead.

Last Modified: 2013-12-08 17:51:27

Top

The contents of my static or dynamic frame has shifted to the left when I used \parshape

This will happen if your \parshape specification exceeds the linewidth. For example:
\parshape=1 0.4\linewidth 0.7\linewidth
This specifies a line with overall length 1.1\linewidth which is too long.

Last Modified: 2013-12-08 17:52:15

Top

I get extra pages at the end of the document

This should now be fixed in version 1.07.

Last Modified: 2013-12-08 17:52:41

Top

My page number hyperlinks are undefined (in conjunction with the hyperref package)

This should now be fixed in version 1.08.

Last Modified: 2013-12-08 17:53:21

Top

I changed the value of \columnseprule but it hasn't made a difference

As from version 1.09, the flowfram package uses \ffcolumnseprule instead of \columnseprule to avoid conflict with multicol.

Last Modified: 2013-12-08 17:54:25

Top

Error Messages

Illegal unit of measure (pt inserted)

All lengths must have units. Remember to include the units when defining new frames. The following keys require lengths: width, height, x, y and offset. (offset can also have the value compute.)

Last Modified: 2013-12-08 17:56:09

Top

Missing number, treated as zero

LaTeX is expecting a number. There are a number of possible causes:
  1. You have used an IDL instead of an IDN. If you want to refer to a frame by its label, you need to remember to use the starred versions of the \settypeframe commands, or when setting the contents of static frames or dynamic frames.
  2. When specifying page lists, you have mixed keywords with page ranges. For example: 1,even is invalid.

Last Modified: 2013-12-08 17:57:50

Top

Flow frame IDL 'label' already defined

All IDLs within each frame type must be unique. There are similar error messages for duplicate IDLs for static frames and dynamic frames.

Last Modified: 2013-12-08 17:59:01

Top

Can't find flow frame id

You have specified a non-existent flow frame IDL. There are similar error messages for static frames and dynamic frames. Check to make sure you have spelt the label correctly, and check you are using the correct frame type command. (For example, if a static frame has the IDL mylabel, and you attempt to do \setflowframe*{mylabel}{options}, then you will get this error, because mylabel refers to a static frame not a flow frame.)

Last Modified: 2013-12-08 18:00:23

Top

Key 'clear' is boolean

The clear key can only have the values true or false.

Last Modified: 2013-12-08 18:01:26

Top

Key 'clear' not available

The clear key is only available for static and dynamic frames.

Last Modified: 2013-12-08 18:02:20

Top

Key 'style' not available

The style key is only available for dynamic frames.

Last Modified: 2013-12-08 18:02:54

Top

Key 'margin' not available

The margin key is only available for flow frames.

Last Modified: 2013-12-08 18:03:29

Top

Key 'shape' not available

The shape key is only available for static and dynamic frames.

Last Modified: 2013-12-08 18:04:14

Top

Dynamic frame style 'style' not defined

The specified style style must be the name of a command without the preceding backslash. It is possible that you have mis-spelt the name, or you have forgotten to define the command.

Last Modified: 2013-12-08 18:05:31

Top

Argument of \fbox has an extra }

This error will occur if you do, say, border=\fbox instead of border=fbox. Remember not to include the initial backslash.

Last Modified: 2013-12-08 18:06:19

Top

Not in outer par mode

You can not have floats (such as figures, tables or marginal notes) in static frames or dynamic frames. If you want a figure or table within a static frame or dynamic frame use staticfigure or statictable.

Last Modified: 2013-12-08 18:07:06

Top

Somethings wrong--maybe missing \item

Assuming that all your list type of environments start with \item, this may be caused by something going wrong with the .toc (table of contents), .ttb (thumbtab) or .aux (auxiliary) files in the previous run. Try deleting them, and rerun.

Last Modified: 2013-12-08 18:08:10

Top

Undefined control sequence (\@ldc@l@r)

This seems to happen when the draft option is used without a colour package, such as color or xcolor, in conjunction with PDFLaTeX. It doesn't seem to happen with LaTeX. For some reason with PDFLaTeX the \color command is defined in the begin document hook, but not the command \@ldc@l@r which is the cause of this error message. You can avoid this error message by including the color package. You can use the monochrome option if you don't want any colour in your document:
\usepackage[monochrome]{color}
\usepackage[nocolor]{flowfram}

Last Modified: 2013-12-08 18:09:53

Top

Undefined control sequence (\@nil)

This has been fixed in version 1.02.

Last Modified: 2013-12-08 18:10:24

Top

Undefined control sequence (\c@dynamic)

This has been fixed in version 1.08.

Last Modified: 2013-12-08 18:10:58

Top

No room for a new \skip

You have exceeded TeX's 256 register limit. Use the etex package.

Last Modified: 2013-12-08 18:11:45

Top

I get an error when using verbatim text inside the dynamiccontents environment

You can not use verbatim text inside either the starred or unstarred version of the dynamiccontents environment. (This is because the contents of dynamic frames are stored in a macro.) Try using a static frame and use staticcontents instead. See also Why doesn’t verbatim work within …?

Last Modified: 2013-12-08 18:13:45

Top

© 2012 Dickimaw Books. "Dickimaw", "Dickimaw Books" and the Dickimaw parrot logo are trademarks. The Dickimaw parrot was painted by Magdalene Pritchett.

Terms of Use Privacy Policy Site Map FAQs