flowfram package FAQ
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?
- Can I use the formatted page number in page lists?
- What happens if I use a command or environment that switches to two-column mode (e.g. theindex)
- Why has the text from my flow frame appeared in a static or dynamic frame?
- Why do I get lots of overfull hbox messages?
- Can I make an arbitrary shaped frame?
- How do I change the vertical alignment of material inside a static or dynamic frame?
- Can I mix keywords and page lists?
- How do I compute the distance from the edge of the page instead of the typeblock?
- How do I find out a frame's dimensions and location?
- What is the package called flowfram instead of flowframe?
- Unexpected Output
- The lines at the beginning of my flow frames are the wrong width.
- My frames shift to the right when I add a border.
- The contents of my all my flow frames are shifted to the right
- I have a vertical white strip along the right hand side of every page.
- I don't have any output
- The last page hasn't appeared
- My longtables don't look right
- The contents of my static or dynamic frame has shifted to the left when I used \parshape
- I get extra pages at the end of the document
- My page number hyperlinks are undefined (in conjunction with the hyperref package)
- I changed the value of \columnseprule but it hasn't made a difference
- Error Messages
- Illegal unit of measure (pt inserted)
- Missing number, treated as zero
- Flow frame IDL 'label' already defined
- Can't find flow frame id
- Key 'clear' is boolean
- Key 'clear' not available
- Key 'style' not available
- Key 'margin' not available
- Key 'shape' not available
- Dynamic frame style 'style' not defined
- Argument of \fbox has an extra }
- Not in outer par mode
- Somethings wrong--maybe missing \item
- Undefined control sequence (\@ldc@l@r)
- Undefined control sequence (\@nil)
- Undefined control sequence (\c@dynamic)
- No room for a new \skip
- I get an error when using verbatim text inside the dynamiccontents environment
General Queries
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.
2013-12-08 17:19:39
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:
- 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.
- 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.
2013-12-08 17:22:29
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.
2013-12-08 17:22:20
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.
2013-12-14 09:53:12
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.
2013-12-08 17:33:09
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.)
2013-12-08 17:35:07
As from version 1.03, you can use the valign
key in \setstaticframe
or \setdynamicframe
.
2013-12-08 17:36:24
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.
2013-12-08 17:37:31
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.
\computeleftedgeeven
Compute the left edge of the page, relative to the left edge of the typeblock for even pages.computeleftedgeodd
Compute the left edge of the page, relative to the left edge of the typeblock for odd pages.\computebottomedge
Compute the bottom edge of the page, relative to the bottom of the typeblock.\computerightedgeeven
Compute the right edge of the page, relative to the left edge of the typeblock for even pages.\computerightedgeodd
Compute the right edge of the page, relative to the left edge of the typeblock.\computetopedge
Compute the top edge of the page, relative to the bottom of the typeblock.
% 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}
2013-12-08 17:40:29
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
.
2013-12-08 17:41:40
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.
2015-10-22 03:25:31
Unexpected Output
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.
2013-12-08 17:44:56
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.
2013-12-08 17:45:44
This has been fixed in version 1.04.
2013-12-08 17:46:30
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.
2013-12-08 17:48:30
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.
2013-12-08 17:49:14
This is the same problem as I don't have any output.
2013-12-08 17:50:17
Unfortunately flowfram and longtable don't work well together as they both change the output routine. Try using the supertabular package instead.
2013-12-08 17:51:27
This will happen if your \parshape
specification exceeds the linewidth. For example:
\parshape=1 0.4\linewidth 0.7\linewidthThis specifies a line with overall length 1.1\linewidth which is too long.
2013-12-08 17:52:15
This should now be fixed in version 1.07.
2013-12-08 17:52:41
This should now be fixed in version 1.08.
2013-12-08 17:53:21
As from version 1.09, the flowfram package uses \ffcolumnseprule
instead of \columnseprule
to avoid conflict with multicol.
2013-12-08 17:54:25
Error Messages
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.)
2013-12-08 17:56:09
LaTeX is expecting a number. There are a number of possible causes:
- 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. - When specifying page lists, you have mixed keywords with page ranges. For example:
1,even
is invalid.
2013-12-08 17:57:50
All IDLs within each frame type must be unique. There are similar error messages for duplicate IDLs for static frames and dynamic frames.
2013-12-08 17:59:01
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.)
2013-12-08 18:00:23
The clear
key can only have the values true
or false
.
2013-12-08 18:01:26
The clear
key is only available for static
and dynamic
frames.
2013-12-08 18:02:20
The style
key is only available for dynamic frames.
2013-12-08 18:02:54
The margin
key is only available for flow frames.
2013-12-08 18:03:29
The shape
key is only available for static
and dynamic
frames.
2013-12-08 18:04:14
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.
2013-12-08 18:05:31
This error will occur if you do, say, border=\fbox
instead of border=fbox
. Remember not to include the initial backslash.
2013-12-08 18:06:19
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
.
2013-12-08 18:07:06
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.
2013-12-08 18:08:10
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}
2013-12-08 18:09:53
This has been fixed in version 1.02.
2013-12-08 18:10:24
This has been fixed in version 1.08.
2013-12-08 18:10:58
You have exceeded TeX's 256 register limit. Use the etex package.
2013-12-08 18:11:45
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 …?
2013-12-08 18:13:45