From 007f67a693e4d031fd3d792df8e4d5f43e2cb2e7 Mon Sep 17 00:00:00 2001 From: Karl Berry Date: Mon, 9 Jan 2006 00:49:07 +0000 Subject: doc/latex git-svn-id: svn://tug.org/texlive/trunk@84 c570f23f-e606-0410-a88d-b1316a301751 --- Master/texmf-dist/doc/latex/flowfram/README | 38 + .../texmf-dist/doc/latex/flowfram/ffuserguide.pdf | Bin 0 -> 297505 bytes .../texmf-dist/doc/latex/flowfram/ffuserguide.tex | 1548 ++++++++++++++++++++ .../texmf-dist/doc/latex/flowfram/ffuserguide.ttb | 7 + Master/texmf-dist/doc/latex/flowfram/flowfram.pdf | Bin 0 -> 262334 bytes .../doc/latex/flowfram/samples/brochure.pdf | Bin 0 -> 64936 bytes .../doc/latex/flowfram/samples/brochure.tex | 343 +++++ .../doc/latex/flowfram/samples/poster.pdf | Bin 0 -> 19254 bytes .../doc/latex/flowfram/samples/poster.tex | 362 +++++ 9 files changed, 2298 insertions(+) create mode 100644 Master/texmf-dist/doc/latex/flowfram/README create mode 100644 Master/texmf-dist/doc/latex/flowfram/ffuserguide.pdf create mode 100644 Master/texmf-dist/doc/latex/flowfram/ffuserguide.tex create mode 100644 Master/texmf-dist/doc/latex/flowfram/ffuserguide.ttb create mode 100644 Master/texmf-dist/doc/latex/flowfram/flowfram.pdf create mode 100644 Master/texmf-dist/doc/latex/flowfram/samples/brochure.pdf create mode 100644 Master/texmf-dist/doc/latex/flowfram/samples/brochure.tex create mode 100644 Master/texmf-dist/doc/latex/flowfram/samples/poster.pdf create mode 100644 Master/texmf-dist/doc/latex/flowfram/samples/poster.tex (limited to 'Master/texmf-dist/doc/latex/flowfram') diff --git a/Master/texmf-dist/doc/latex/flowfram/README b/Master/texmf-dist/doc/latex/flowfram/README new file mode 100644 index 00000000000..92cf0f10339 --- /dev/null +++ b/Master/texmf-dist/doc/latex/flowfram/README @@ -0,0 +1,38 @@ +LaTeX Package : flowfram v 1.0 + +Last Modified : 27th July 2005 + +Author : Nicola Talbot + +Files : flowfram.dtx - documented source file + flowfram.ins - installation script + ffuserguide.pdf - user manual + ffuserguide.tex - source code for user manual + samples/ - directory containiing sample files + +Create frames for posters, brochures or magazines + +The flowfram package is designed to enable you to create +frames in a document such that the contents of the +document environment flow from one frame to the next in the +order in which they were defined. This is useful for creating posters +or magazines or any other form of document that does not +conform to the standard one or two column layout. + + +To extract the documentation do: + +latex flowfram.dtx +makeindex -s gind.ist flowfram +makeglos.pl flowfram +latex flowfram.dtx +latex flowfram.dtx + +(The documentation requires at least version 2.2 of the +glossary package.) + +This material is subject to the LaTeX Project Public License. +See http://www.ctan.org/tex-archive/help/Catalogue/licenses.lppl.html for the details of that license. + +http://theoval.cmp.uea.ac.uk/~nlct/ + diff --git a/Master/texmf-dist/doc/latex/flowfram/ffuserguide.pdf b/Master/texmf-dist/doc/latex/flowfram/ffuserguide.pdf new file mode 100644 index 00000000000..5225df4ee67 Binary files /dev/null and b/Master/texmf-dist/doc/latex/flowfram/ffuserguide.pdf differ diff --git a/Master/texmf-dist/doc/latex/flowfram/ffuserguide.tex b/Master/texmf-dist/doc/latex/flowfram/ffuserguide.tex new file mode 100644 index 00000000000..1c03a70aa57 --- /dev/null +++ b/Master/texmf-dist/doc/latex/flowfram/ffuserguide.tex @@ -0,0 +1,1548 @@ +\documentclass[a4paper,twoside]{book} + + +\usepackage{times} +\usepackage{courier} +\usepackage{helvet} +\usepackage{makeidx} +\usepackage[landscape,margin=1in,top=1in,bottom=1in]{geometry} +\usepackage{color} +\usepackage[colorlinks, + linkcolor=black, + bookmarksopen, + pdfauthor={Nicola Talbot}, + pdftitle={Creating Flow Frames for Posters, Brochures or Magazines using flowfram.sty}, + pdfkeywords={LaTeX;text frames;posters;brochures}]{hyperref} +\usepackage[style=altlist,toc,number=none]{glossary}[2005/07/15] +\usepackage{pgf} +\usepackage[norotate,ttbnotitle,ttbnum]{flowfram} + +% Define some commands for consistency and indexing +\newcommand{\sty}[1]{\textsf{#1}\index{#1@\textsf{#1} package}} +\newcommand{\env}[1]{\textsf{#1}\index{#1@\textsf{#1} environment}} +\newcommand{\cmdname}[1]{\texttt{\symbol{92}#1}\index{#1@\texttt{\symbol{92}#1}}} +\newcommand{\meta}[1]{\textnormal{\textless\textit{#1}\textgreater}} +\newcommand{\appname}[1]{\texttt{#1}\index{#1@\texttt{#1}}} +\newcommand{\pkgopt}[1]{\textsf{#1}\index{#1@\textsf{#1} option}} +\newcommand{\key}[1]{#1\index{frame settings!#1}} + +% Glossary Stuff + +\storeglosentry{typeblock}{name=typeblock,description={The +area of the page where the main body of the text goes. +The width and height of this area are given by +\protect\cmdname{textwidth} and \protect\cmdname{textheight}}} + +\storeglosentry{flow}{name=flow frame,description={The frames in +a document such that the contents of the \protect\env{document} +environment flow from one frame to the next in the order +that they were defined. There must be at least one flow frame on +every page.}} + +\storeglosentry{static}{name=static frame,description={Frames +in which text is fixed in place. Static frames are usually +cleared after each page. The contents are fixed until +explicitly changed.}} + +\storeglosentry{dynamic}{name=dynamic frame,description={Frames +in which text is fixed in place, but the contents are re-typeset +after each page.}} + +\storeglosentry{frame}{name=frame,description={A rectangular +area of the page in which text can be placed (not to be +confused with a frame making command). There are three types: +flow, static and dynamic.}} + +\storeglosentry{fcmd}{name=frame making command,description={A +\LaTeX\ command which places some kind of border around its +argument. For example: \protect\cmdname{fbox}.}} + +\storeglosentry{pglist}{name=page list,description={A list of +pages. This can either be a single keyword: \texttt{all}, +\texttt{odd}, \texttt{even} or \texttt{none}, or it can +be a comma-separated list of individual page numbers or +page ranges. For example: \texttt{\textless3,5,7-11,\textgreater15} +indicates pages 1,2,5,7,8,9,10,11 and all pages after page 15. +Note that these numbers refer to the actual value of the +page counter, not the absolute physical page number.}} + +\storeglosentry{pgrange}{name=page range,description={Page +ranges can be closed, e.g.\ \texttt{5-10}, or open, e.g. +\texttt{\textless7} or \texttt{\textgreater9}.}} + +\storeglosentry{bbox}{name=bounding box,description={The smallest +possible rectangle that completely encompasses the object.}} + +\newacronym{IDN}{identification number}{description={A unique +number assigned to each frame, which you can use to identify +the frame when modifying its appearance. Example: if you +have defined 3 flow frames, 2 static frames and 1 dynamic +frame, the flow frames will have IDNs 1, 2 and 3, the static +frames will have IDNs 1 and 2, and the dynamic frame will +have IDN 1.}} + +\newacronym{IDL}{identification label}{description={A unique +label which can be assigned to a frame, enabling you to +refer to the frame by label instead of by its IDN.}} + +\makeglossary +\makeindex + +% Page layout stuff + +% set up some background frames to liven up the title page +\newlength{\leftwidth} +\newlength{\rightwidth} + +\computeleftedgeodd{\leftwidth} +\setlength{\leftwidth}{-\leftwidth} +\addtolength{\leftwidth}{0.4\textwidth} +\setlength{\rightwidth}{\paperwidth} +\addtolength{\rightwidth}{-\leftwidth} +% only defined on page 1 unfortunately the document +% has more than one page 1, so will need to change the settings after the title page +\vtwotone[1]{\leftwidth}{magenta}{backleft}{\rightwidth}{[cmyk]{0,0.48,0,0}}{backright} + +% This is for the back cover. +\vtwotone[none]{\rightwidth}{[cmyk]{0,0.48,0,0}}{lastbackright}{\leftwidth}{magenta}{lastbackleft} + +\vtwotonetop[odd]{1cm}{\leftwidth}{magenta}{oddtopleft}{\rightwidth}{[cmyk]{0,0.48,0,0}}{oddtopright} +\vtwotonetop[even]{1cm}{\rightwidth}{[cmyk]{0,0.48,0,0}}{eventopleft}{\leftwidth}{magenta}{eventopright} + +% Set the margin width +\setlength{\marginparwidth}{2cm} + +% now set up main document frames. Each page has a dynamic +% frame for the chapter heading, and a flow frame for the +% text. +\newflowframe{0.6\textwidth}{\textheight}{0pt}{0pt}[main] +\newdynamicframe{0.38\textwidth}{\textheight}{0.62\textwidth}{0pt}[chaphead] + +% swap them round on even pages +\setflowframe*{main}{evenx=0.4\textwidth} +\setdynamicframe*{chaphead}{evenx=0pt,clear} + +% set the margins to appear on the spine side of the page +\setflowframe*{main}{margin=inner} + +% put chapter headings in dynamic frame with IDL chaphead +\dfchaphead*{chaphead} + +% append chapter minitocs to same dynamic frame. +\appenddfminitoc*{chaphead} + +% change the style of the chapter headings + +% numbered chapters: +\renewcommand{\DFchapterstyle}[1]{% +\raggedright\sffamily\bfseries\Huge\color{blue}\thechapter. #1\par +} + +% unnumbered chapters: +\renewcommand{\DFschapterstyle}[1]{\raggedright\sffamily\bfseries\Huge\color{blue} #1\par +} + +% Make thumb tabs (specify each tab to be 0.75in high) + +\makethumbtabs{0.75in} +\enableminitoc + +% Thumbtabs are grey by default which looks a bit boring, +% so change the colours +\setthumbtab{1}{backcolor=[rgb]{0.15,0.15,1}} +\setthumbtab{2}{backcolor=[rgb]{0.2,0.2,1}} +\setthumbtab{3}{backcolor=[rgb]{0.25,0.25,1}} +\setthumbtab{4}{backcolor=[rgb]{0.3,0.3,1}} +\setthumbtab{5}{backcolor=[rgb]{0.35,0.35,1}} +\setthumbtab{6}{backcolor=[rgb]{0.4,0.4,1}} +\setthumbtab{7}{backcolor=[rgb]{0.45,0.45,1}} + +% change the text style on the thumbtabs +\newcommand{\thumbtabstyle}[1]{\textsc{\sffamily #1}} +\setthumbtab{all}{style=thumbtabstyle,textcolor=white} + +% set default page style + +\pagestyle{plain} + +% Put headers and footers in dynamic frames +\makedfheaderfooter + +\newlength{\xoffset} +\computerightedgeodd{\xoffset} +\addtolength{\xoffset}{-2cm} +\newlength{\yoffset} +\computebottomedge{\yoffset} + +\newcommand{\footstyle}[1]{\bfseries\LARGE #1} + +% pages is initially set to none, as I don't want the footer to +% appear on the title page. + +\setdynamicframe*{footer}{oddx=\xoffset,y=\yoffset,width=2cm,height=2cm, +backcolor=blue,textcolor=white,style=footstyle,pages=none} + +% now work out the x offset for the even pages + +\computeleftedgeeven{\xoffset} +\setdynamicframe*{footer}{evenx=\xoffset} + +% Now create some frames for the index, and modify +% theindex environment + +% These are for the odd pages + +\twocolumninarea[none]{0.6\textwidth}{\textheight}{0pt}{0pt} +% Give a label to the last 2 flow frames: +\newcounter{N} +\newcounter{I} +\setcounter{N}{\value{maxflow}} +\addtocounter{N}{-2} +\whiledo{\value{N}<\value{maxflow}}{% +\stepcounter{N}\stepcounter{I} +\setflowframe{\value{N}}{label=oddcol\theI}} + +% These are for the even pages + +\twocolumninarea[none]{0.6\textwidth}{\textheight}{0.4\textwidth}{0pt} +% Give a label to the last 2 flow frames: + +\setcounter{I}{0} +\setcounter{N}{\value{maxflow}} +\addtocounter{N}{-2} +\whiledo{\value{N}<\value{maxflow}}{% +\stepcounter{N}\stepcounter{I} +\setflowframe{\value{N}}{label=evencol\theI}} + +\makeatletter +\renewenvironment{theindex}{% +\setflowframe*{oddcol1,oddcol2}{pages=odd} +\setflowframe*{evencol1,evencol2}{pages=even} +\clearpage +\mbox{}\framebreak +\setflowframe*{main}{pages=none} +\setdynamiccontents*{chaphead}{\DFschapterstyle{\indexname}} +\addcontentsline{toc}{chapter}{\indexname} +\setlength{\parindent}{0pt}% +\setlength{\parskip}{0pt plus .3pt}% +\let\item\@idxitem}{% +\setflowframe*{main}{pages=all}% +\setflowframe{>1}{pages=none}% +\finishthispage} +\makeatother + +\begin{document} +% swap frames around for title page +\ffswapoddeven*{main} +\dfswapoddeven*{chaphead} + +\title{Creating Flow Frames for Posters, Brochures or Magazines using flowfram.sty v 1.0} +\author{Nicola L. C. Talbot} +\date{26th July 2005} +\pagenumbering{alph} +\maketitle + +%suppress the background +\setstaticframe*{backleft}{pages=none} +\setstaticframe*{backright}{pages=none} + +\noindent +Dr Nicola Talbot\\ +School of Computing Sciences\\ +University of East Anglia\\ +Norwich. Norfolk. NR4 7TJ.\\ +United Kingdom\\ +\url{http://theoval.cmp.uea.ac.uk/~nlct/} + +\frontmatter +% swap frames back again +\ffswapoddeven*{main} +\dfswapoddeven*{chaphead} + +\tableofcontents +\thumbtabindex + +%\tocandthumbtabindex % not enough room for this + +% make the footers appear from this point on +\setdynamicframe*{footer}{pages=all} + +\clearpage + +\mainmatter +\chapter{Introduction} +\enablethumbtabs +\pagenumbering{arabic} + +The \sty{flowfram} package is a \LaTeXe\ package designed to +enable you to create text \gls{frame}s in a document such that +the contents of the \env{document} environment flow from one +\gls{frame} to the next in the order that they were defined. +This is useful for creating posters +or magazines or any other form of document that does not +conform to the standard one or two column layout. + +The \sty{flowfram} package provides three types of \gls{frame}: +\gls{flow}s, \gls{static}s and \gls{dynamic}s. +The main contents of the document environment flow from +one defined \gls{flow} to the next in the order of definition, +whereas the contents of the static and dynamic frames +are set explicity using commands described in +\autoref{sec:modattr}. Note that +unless otherwise stated, all co-ordinates are relative to the +bottom left hand corner of the \gls{typeblock}. If you have +a two-sided document, the absolute position of the \gls{typeblock} +may vary depending on the values of \cmdname{oddsidemargin} +and \cmdname{evensidemargin}, and all the \gls{frame}s will shift +accordingly unless otherwise indicated. + +Since floats (such as figures and tables) can only go in +\gls{flow}s, this package provides +the additional environments: +\env{staticfigure} and +\env{statictable} which can be used in \gls{static}s +and \gls{dynamic}s. Unlike their \env{figure} and +\env{table} counterparts, they are fixed in place, and +so do not take an optional placement specifier. The +\cmdname{caption} and \cmdname{label} commands can +be used within \env{staticfigure} and \env{statictable} as +usual, but it is recommended that you \cmdname{protect} the +\cmdname{label} command, otherwise the label may end up +being multiply defined. + +The standard \env{figure} and \env{table} commands will +behave as usual in the \gls{flow}s, but their starred versions, +\env{figure*} and \env{table*} behave no differently +from \env{figure} and \env{table}\footnote{This is because +of the arbitrary layout of the flow frames.}. + +This package has only been tested with a limited number of +class files and packages. Since it modifies the output routine, +it is likely to conflict with any other package which also +does this. The \sty{flowfram} package works fine with +\appname{pdflatex}, \appname{latex} and \appname{dvips}, +however \appname{ps2pdf} and \appname{dvipdf} both seem to +cause a slight left shift in the page which may result in a +vertical white band on the right side of the page. +This problem does not seem to occur with Acrobat Disiller. + +You should load \sty{flowfram} \emph{after} \sty{hyperref} +and any colour package (e.g.\ \sty{color}). + +\section{Draft Option} + +The \sty{flowfram} package has the package option \texttt{draft} +which will draw the \gls{bbox}es for +each \gls{frame} defined. At the bottom right of each +\gls{bbox} (except for the \gls{bbox} denoting the +\gls{typeblock}), a marker will be shown in the form: +[\meta{T}:\meta{idn};\meta{idl}], where \meta{T} is a single +letter denoting the \gls{frame} type, \meta{idn} is the \IDN\ +for the \gls{frame} and \meta{idl} is the \IDL\ for that +\gls{frame}. Values of \meta{T} are: \texttt{F} (\gls{flow}), +\texttt{S} (\gls{static}) or \texttt{D} (\gls{dynamic}). +Markers of the form: [M:\meta{idn}] indicate that the +\gls{bbox} is the area taken up by the margin for \gls{flow} +with \IDN\ \meta{idn}. + +If you want to show or hide specific types of bounding +boxes, you can use one of the following commands: +\begin{itemize} +\item +\cmdname{showtypeblocktrue} Display the \gls{bbox} +for the \gls{typeblock}. + +\item +\cmdname{showtypeblockfalse} Do not display the \gls{bbox} +for the \gls{typeblock}. + +\item +\cmdname{showmarginstrue} Display the \gls{bbox} +for the margins. + +\item +\cmdname{showmarginsfalse} Do not display the \gls{bbox} +for the margins. + +\item +\cmdname{showframebboxtrue} Display the \gls{bbox} +for the \gls{frame}s. + +\item +\cmdname{showframebboxfalse} Do not display the \gls{bbox} +for the \gls{frame}s. + +\end{itemize} + +You can see the layout for the current page (irrespective of +whether or not the \texttt{draft} option has been set) using +the command: +\cmdname{flowframeshowlayout} + +The \sty{flowfram} package also has the options \pkgopt{nocolor} +and \pkgopt{norotate} for previewers that can not process +colour or rotating specials. (Otherwise you may end up with +large black rectangles obscuring your text, instead of +the pale background colour you were hoping for.) + +\section{Frame Stacking Order} + +The material on each page is placed in the following order: +\begin{enumerate} +\item Each \gls{static} defined for that page in ascending +order of \IDN. + +\item Each \gls{flow} defined for that page in ascending +order of \IDN. + +\item Each \gls{dynamic} defined for that page in ascending +order of \IDN. + +\item \useGlosentry{bbox}{Bounding boxes} if the \texttt{draft} +package option has been used. +\end{enumerate} + +This ordering can be used to determine if you want something +to overlay or underlay everything else on the page. + + +\chapter{Defining New Frames} + +\section{Flow Frames} + +The \gls{flow} is the principle type of \gls{frame}. +The text of the \env{document} environment will flow from +one \gls{frame} to the next in order of definition. Each +\gls{flow} has an associated width, height, +position on the page, and optionally a border. To define +a new \gls{flow} use:\\[10pt] +\cmdname{newflowframe}\verb/[/\meta{page list}\verb+]{+% +\meta{width}\verb/}{/% +\meta{height}\verb/}{/% +\meta{x}\verb/}{/% +\meta{y}\verb/}[/% +\meta{label}\verb/]/\\[10pt] +where \meta{width} is the width of the \gls{frame}, \meta{height} +is the height of the \gls{frame}, (\meta{x},\meta{y}) is the +position of the bottom left hand corner of the \gls{frame} +relative to the bottom left hand corner of the \gls{typeblock}. +The first optional argument, \meta{page list}, indicates the +list of pages for which this \gls{frame} is defined. + +A \gls{pglist} can either be specified by the keywords: +\texttt{all}, \texttt{odd}, \texttt{even} or \texttt{none}, or +by a comma-separated list of either individual page numbers or +\useGlosentry{pgrange}{page ranges}. If \meta{page list} is +omitted, \texttt{all} is assumed. +A \gls{pgrange} can be a closed +range (e.g.\ \verb+2-8+) or an open range (e.g.\ +\verb+<10+ or \verb/>5/). For example: \verb'<3,5,7-11,>15' +indicates pages 1, 2, 5, 7, 8, 9, 10, 11 and all pages +greater than page 15. These page numbers refer to the value of +the page counter\footnote{why can't I use the page number format? +See item~\ref{itm:whynot} on page~\pageref{itm:whynot}}, +so if you have a page~i and a page~1, they +will both have the same layout (unless you change the +page range setting somewhere between the two pages). + +Each \gls{frame} has its own unique \IDN, +corresponding to the order in which it was defined. So the first +\gls{flow} to be defined has the \IDN~1, +the second has \IDN~2, and so on. This number can then +be used to identify the \gls{frame} when you want to modify its +settings. Alternatively, you can assign a unique \IDL\ to the +\gls{frame} using the final optional argument \meta{label}. + +By default, the \gls{flow} will not have a border, but the +starred form, \cmdname{newflowframe*}, +will place a plain border around the \gls{flow}. + +Note that there must be at least one \gls{flow} +defined on every page of your document. If there are no +\useGlosentry{flow}{flow frames} defined at the start of your +document, a single \gls{flow} will be defined, emulating +one column mode. If the document continues beyond the last +defined \gls{flow}, again a single \gls{flow} will be +defined, emulating one column mode. If there exists a page +in the middle of the document for which there is no \gls{flow} +defined, an error will be generated, and you will lose some +of your text. + +In this document, I have used the command +\begin{verbatim} +\newflowframe{0.6\textwidth}{\textheight}{0pt}{0pt}[main] +\end{verbatim} +to define the main \gls{flow}\footnote{the +position for the even pages is set using \cmdname{setflowframe} +defined in \autoref{sec:modattr}} (i.e.\ this one.) + +\subsection{Prematurely Ending a Flow Frame} +\label{sec:framebreak} + +You can force text to move immediately to the next defined +\gls{flow} using one of the commands: \cmdname{newpage}, +\cmdname{clearpage}, \cmdname{pagebreak} or \cmdname{framebreak}. +The first three work in an analogous way to the way they +work in standard two column mode. The latter, +\cmdname{framebreak}, is required +when a paragraph spans two \useGlosentry{flow}{flow frames} +of different widths, as \TeX's output routine does not +adjust to the new value of \cmdname{hsize} until the last +paragraph of the previous \gls{frame} has ended. As a +result, the end of the paragraph at the beginning of the new +\gls{flow} retains the width of the previous \gls{flow}. + +If you want to start a new page, rather than simply move to the +next \gls{frame}, use the command \cmdname{finishthispage}, +or for two-sided documents, to start on the next odd page +do \cmdname{cleardoublepage}. + +\section{Static Frames} + +A \gls{static} is a rectangular area in which text neither +flows into, nor flows out of. The contents must be set +explicitly, and once set, the contents of the \gls{static} will +remain the same on each page until it is explicitly +changed. Thus, a \gls{static} can be used, for example, to make +a company logo appear in the same place on every page. + +A new \gls{static} is defined using the command:\\[10pt] +\cmdname{newstaticframe}\verb/[/\meta{page list}\verb+]{+% +\meta{width}\verb/}{/% +\meta{height}\verb/}{/% +\meta{x}\verb/}{/% +\meta{y}\verb/}[/% +\meta{label}\verb/]/\\[10pt] +where, as with \cmdname{newflowframe}, \meta{width} is the width of +the \gls{static}, \meta{height} is the height of the \gls{static}, +(\meta{x},\meta{y}) is the position of the bottom left hand +corner of the \gls{static} relative to the bottom left hand +corner of the \gls{typeblock}. The first optional argument, +\meta{page list}, indicates the \gls{pglist} for which this +\gls{static} should appear, and the final optional argument, +\meta{label} is a unique textual \IDL\ which you can use to +identify this \gls{static}. If no label is specified, you +can refer to this \gls{static} by its unique \IDN. +The first \gls{static} defined has \IDN~1, the second +has \IDN~2, and so on. + +As with \cmdname{newflowframe}, there is a starred version +\cmdname{newstaticframe*} which will place a border around that +\gls{static}. + +To set the contents of a particular \gls{static}, you can +either use the \env{staticcontents} environment:\\[10pt] +\verb/\begin{staticcontents}{/\meta{IDN}\verb+}+\\ +\meta{contents}\\ +\verb/\end{staticcontents}/\\[10pt] +where \meta{IDN} is the unique \IDN\ associated with +that \gls{static} and \meta{contents} is the contents of the +\gls{static}, or you can use the +command:\\[10pt] +\cmdname{setstaticcontents}\verb/{/\meta{IDN}\verb+}{+\meta{contents}\verb!}!\\[10pt] +which will do the same thing. + +There are starred versions available for both the environment +and the command to enable you to identify the \gls{static} +by its associated \IDL\ rather than its \IDN +:\\[10pt] +\verb/\begin{staticcontents*}{/\meta{IDL}\verb+}+\\ +\meta{contents}\\ +\verb/\end{staticcontents*}/\\[10pt] +or the equivalent:\\[10pt] +\cmdname{setstaticcontents*}\verb/{/\meta{IDL}\verb+}{+\meta{contents}\verb!}! + +\section{Dynamic Frames} + +A \gls{dynamic} is similar to a \gls{static}, but its contents +are re-typeset on each page. (A \gls{static} stores its +contents in a savebox, whereas a \gls{dynamic} stores its +contents in a macro). + +To create a new \gls{dynamic}, use the command:\\[10pt] +\cmdname{newdynamicframe}\verb/[/\meta{page list}\verb+]{+% +\meta{width}\verb/}{/% +\meta{height}\verb/}{/% +\meta{x}\verb/}{/% +\meta{y}\verb/}[/% +\meta{label}\verb/]/\\[10pt] +The parameters are exactly the same as for \cmdname{newflowframe} +and \cmdname{newstaticframe}. +Again, each \gls{dynamic} has an associated unique \IDN, +starting from 1 for the first \gls{dynamic} defined, and +a unique \IDL\ can also be set using the final optional +argument \meta{label}. + +As with the other \gls{frame} types, there is also a starred +version +\cmdname{newdynamicframe*} +which will place a plain border around the \gls{dynamic}. +For example, in this document I have used the command +\begin{verbatim} +\newdynamicframe{0.38\textwidth}{\textheight}{0.62\textwidth}{0pt}[chaphead] +\end{verbatim} +which has created the \gls{frame} on the +right on odd pages, and on the left on even pages (the +position for the even pages is set using \cmdname{setdynamicframe} +defined in \autoref{sec:modattr}). + +The contents of a \gls{dynamic} are set using the command:\\[10pt] +\cmdname{setdynamiccontents}\verb/{/\meta{id}\verb+}{+\meta{contents}\verb'}'\\[10pt] +where \meta{id} is the unique \IDN\ associated with that +\gls{dynamic}, and \meta{contents} is the contents of the +\gls{dynamic}. Alternatively, if you have assigned an \IDL, +\meta{label}, to the \gls{dynamic}, you can use the starred +version:\\[10pt] +\cmdname{setdynamiccontents*}\verb/{/\meta{label}\verb+}{+\meta{contents}\verb'}'\\[10pt] +There is no environment equivalent. + +You can additionally append text to a \gls{dynamic} using +either:\\[10pt] +\cmdname{appenddynamiccontents}\verb/{/\meta{id}\verb+}{+\meta{contents}\verb'}'\\[10pt] +or:\\[10pt] +\cmdname{appenddynamiccontents*}\verb/{/\meta{label}\verb+}{+\meta{contents}\verb'}'\\[10pt] + +You can make the chapter titles (if \cmdname{chapter} is defined) +appear in a dynamic frame using the command +\cmdname{dfchaphead}\verb"{"\meta{IDN}\verb"}" +where \meta{IDN} is the \IDN\ of the dynamic frame. There is +also a starred version of this command if you want to +use the \IDL\ instead of the \IDN. For example, in this +document, I used the command: +\begin{verbatim} +\dfchaphead*{chaphead} +\end{verbatim} + +The headers and footers can be turned into \gls{dynamic}s +using the command \cmdname{makedfheaderfooter}. This will +create two \gls{dynamic}s with \IDL{}s \texttt{header} and +\texttt{footer}. The page style will be used as usual, but +you can then move or resize the header and footer using +\cmdname{setdynamicframe} (described next). + +\chapter{Modifying Frame Attributes} +\label{sec:modattr} + +Once you have defined the \useGlosentry{flow}{flow frames}, +\useGlosentry{static}{static frames} and +\useGlosentry{dynamic}{dynamic frames}, their attributes +can be changed. The three types of \gls{frame} mostly have the +same set of attributes, but some are specific to a certain type. +\\[10pt] +\useGlosentry{flow}{Flow frame} attributes are modified using +either the command:\\[10pt] +\cmdname{setflowframe}\verb/{/\meta{idn list}\verb+}{+\meta{key-val list}\verb!}!\\[10pt] +or the starred version:\\[10pt] +\cmdname{setflowframe*}\verb/{/\meta{label list}\verb+}{+\meta{key-val list}\verb!}!\\[10pt] +or the attributes for all \useGlosentry{flow}{flow frames} can be +set using:\\[10pt] +\cmdname{setallflowframes}\verb+{+\meta{key-val list}\verb!}! +\\[10pt] +\useGlosentry{static}{Static frame} attributes are modified +using either the command:\\[10pt] +\cmdname{setstaticframe}\verb/{/\meta{idn list}\verb+}{+\meta{key-val list}\verb!}!\\[10pt] +or the starred version:\\[10pt] +\cmdname{setstaticframe*}\verb/{/\meta{label list}\verb+}{+\meta{key-val list}\verb!}!\\[10pt] +or the attributes for all \useGlosentry{static}{static frames} +can be set using:\\[10pt] +\cmdname{setallstaticframes}\verb+{+\meta{key-val list}\verb!}! +\\[10pt] +\useGlosentry{dynamic}{Dynamic frame} attributes are modified +using either the command:\\[10pt] +\cmdname{setdynamicframe}\verb/{/\meta{idn list}\verb+}{+\meta{key-val list}\verb!}!\\[10pt] +or the starred version:\\[10pt] +\cmdname{setdynamicframe*}\verb/{/\meta{label list}\verb+}{+\meta{key-val list}\verb!}!\\[10pt] +or the attributes for all \useGlosentry{dynamic}{dynamic frames} +can be set using:\\[10pt] +\cmdname{setalldynamicframes}\verb+{+\meta{key-val list}\verb!}! +\\[10pt] +In each of the above, \meta{idn list} can either be one of the +keywords: \texttt{all}, \texttt{odd} or \texttt{even} (indicating +all \useGlosentry{frame}{frames} of that type, +\useGlosentry{frame}{frames} of that type whose \IDN\ +is odd or \useGlosentry{frame}{frames} of that type whose \IDN\ +is even), or it can be a comma-separated list of ID numbers, or +\IDN\ ranges. + +For the starred versions, \meta{label list} should be +a comma-separated list of \IDL{}s. Note that you can +not use the above keywords, or have ranges with the +starred versions. + +The \meta{key-val list} argument must be a comma-separated +list of \meta{key}=\meta{value} pairs, indicating which +attributes to modify. The available values are as follows: + +\begin{description} +\item[\key{width}=\meta{length}] The width of the \gls{frame}. + +\item[\key{height}=\meta{length}] The height of the \gls{frame}. + +\item[\key{x}=\meta{length}] The x-coordinate of the \gls{frame} +for all pages on which it is defined. + +\item[\key{y}=\meta{length}] The y-coordinate of the \gls{frame} +for all pages on which it is defined. + +\item[\key{evenx}=\meta{length}] The x-coordinate of the +\gls{frame} for all even pages on which it is defined, but only if +the document is a two-sided document. + +For example, in this document, I have used the commands +\begin{verbatim} +\setflowframe*{main}{evenx=0.4\textwidth} +\setdynamicframe*{chaphead}{evenx=0pt} +\end{verbatim} +to switch the positions of the \gls{flow} and \gls{dynamic} +containing the document text and chapter headings, respectively, +on even pages. + +You can swap the odd and even values using the commands: +\cmdname{ffswapoddeven}\verb"{"\meta{IDN}\verb"}" (for +\gls{flow}s) \cmdname{sfswapoddeven}\verb"{"\meta{IDN}\verb"}" +(for \gls{static}s) or +\cmdname{dfswapoddeven}\verb"{"\meta{IDN}\verb"}". These +commands all have starred versions which take the frame's +\IDL\ instead of its \IDN. + +\item[\key{eveny}=\meta{length}] The y-coordinate of the +\gls{frame} for all even pages on which it is defined, but only if +the document is a two-sided document. + +\item[\key{oddx}=\meta{length}] The x-coordinate of the +\gls{frame} for all odd pages on which it is defined, if the +document is two-sided. + +\item[\key{oddy}=\meta{length}] The y-coordinate of the +\gls{frame} for all odd pages on which it is defined, +if the document is two-sided. + +\item[\key{label}=\meta{text}] Assign an IDL to the \gls{frame}. +(If you do not specify a label when you first define a \gls{frame} +it wil be given a label identical to its \IDN.) This key is +provided to allow the user to label frames that have been +generate by certain predefined layout commands described +in \autoref{sec:layouts}. + +\item[\key{border}=\meta{style}] The style of the border around the +\gls{frame}, this can take the values: \texttt{none} (no border), +\texttt{plain} (plain border) or the name of a \LaTeX\ +\gls{fcmd} without the preceding backslash. (I admit +the notation is a little confusing, a \gls{fcmd} +is a command that places some kind of border around its +argument, such as \cmdname{fbox}, or if you are using the +\sty{fancybox} package: \cmdname{doublebox}, \cmdname{ovalbox}, +\cmdname{Ovalbox} and \cmdname{shadowbox}.) +The value \texttt{fbox} is equivalent to \texttt{plain}. + +For example, to make the first \gls{static} have an oval border: +\begin{verbatim} +\setstaticframe{1}{border=ovalbox} +\end{verbatim} +Or you can define your own border: +\begin{verbatim} +\newcommand{\greenyellowbox}[1]{\fcolorbox{green}{yellow}{#1}} +\setstaticframe{1}{border=greenyellowbox} +\end{verbatim} + +\item[\key{offset}=\meta{offset}] The border offset, if it is a +user-defined border. This is the distance from the outer +edge of the left hand border to the left edge of the +\gls{bbox} of the text inside the border. The \sty{flowfram} +package is able to compute the border for the following +known \gls{fcmd}s: \cmdname{fbox}, \cmdname{ovalbox}, +\cmdname{Ovalbox}, \cmdname{doublebox} and \cmdname{shadowbox}. +For all other borders, the offset is assumed to be +$-$\cmdname{flowframesep}$-$\cmdname{flowframerule}. +If you define your own \useGlosentry{fcmd}{frame} +\useGlosentry{fcmd}{making} \useGlosentry{fcmd}{command}, +you may need to +specify the offset explicitly, or the flow/static/dynamic frames +may end up shifted to the right or left. + +The above two examples can compute their own offsets, however, +if you were to do, for example: +\begin{verbatim} +\newcommand{\thickgreenyellowbox}[1]{% +{\setlength{\fboxsep}{5pt}\setlength{\fboxrule}{6pt}% +\fcolorbox{green}{yellow}{#1}}} +\end{verbatim} +Then you would have to specify the offset. In this example, +the offset is $-5\mathrm{pt}-\mathrm{6pt}=-11\mathrm{pt}$, +so you would need to do: +\begin{verbatim} +\setstaticframe{1}{border=thickgreenyellowbox,offset=-11pt} +\end{verbatim} + +\item[\key{bordercolor}=\meta{colour}] The colour of the border +if you are using a standard \gls{fcmd}. +The colour can either be specified as, e.g.\ \texttt{green}, +or including the colour model, e.g. \verb/[rgb]{0,1,0}/. +For example: +\begin{verbatim} +\setallflowframes{border=doublebox,bordercolor=[rgb]{1,0,0.5}} +\end{verbatim} + +\item[\key{textcolor}=\meta{colour}] The text colour for that +\gls{frame}. Again, the colour can either be specified as, +e.g.\ \texttt{green}, or including the colour model, +e.g. \verb/[rgb]{0,1,0}/. + +\item[\key{backcolor}=\meta{colour}] The background colour for +that \gls{frame}. Again, the colour can either be specified as, +e.g.\ \texttt{green}, or including the colour model, +e.g. \verb/[rgb]{0,1,0}/. Note that the background colour +only extends as far as the \gls{bbox}, not the border. +If you want it to extend as far as the border, you +will need to define your own border type (see above). + +\item[\key{pages}=\meta{page list}] The \useGlosentry{pglist}{list of +pages} for which the \gls{frame} +should appear. This can either have the values: \texttt{all}, +\texttt{even}, \texttt{odd} or \texttt{none} (the latter +removes the \gls{frame} from that point on---useful if you +have multiple pages with the same number), or it can be a +comma-separated list of single pages, or +\useGlosentry{pgrange}{page ranges}. +For example: +\begin{verbatim} +\setdynamicframe{1}{pages=1,5,8-10} +\end{verbatim} + +\item[\key{margin}=\meta{side}] The side of +the \gls{flow} that its corresponding margin should go on. This +can take the values \texttt{left}, \texttt{right}, +\texttt{inner} or \texttt{outer}. This setting is only available +for \gls{flow}s. + +\item[\key{clear}=\meta{boolean}] +If this value is set, the static or dynamic frame will be +cleared at the start of the +next page, otherwise it will only be clear on the next +occurrence of \cmdname{setstaticcontents} or the +\env{staticcontents} environment, or the +\cmdname{setdynamiccontents}, depending on the frame type. +This value is not set by default. This setting is not +available for \gls{flow}s. + +For example, to prevent the chapter heading reappearing on +every page, I have used the command: +\begin{verbatim} +\setdynamicframe*{chaphead}{clear} +\end{verbatim} + +\item[\key{style}=\meta{cmd}] This should be +the name of a command \emph{without} the preceding backslash, +to be applied to the contents of the specified \gls{dynamic}. +The command may either be a declaration, for example: +\begin{verbatim} +\setalldynamicframes{style=large} +\end{verbatim} +which will set the contents of all the dynamic frames in a +large font, or it can be a command that takes a single argument, +for example: +\begin{verbatim} +\setalldynamicframes{style=textbf} +\end{verbatim} +which will make the text for all the dynamic frames come out in +bold. To unset a style, do \verb/style=none/. +This setting is only available for \gls{dynamic}s. + +\end{description} + +\chapter{Predefined Layouts} +\label{sec:layouts} + +The \sty{flowfram} package has a number of commands which +create \gls{frame}s in a predefined layout. These commands +may only be used in the preamble. + +\section{Column Styles} + +The standard \LaTeX\ commands \cmdname{onecolumn} and +\cmdname{twocolumn} are redefined to create one or two +\gls{flow}s that fill the entire \gls{typeblock} separated +from each other (in the case of \cmdname{twocolumn}) by a +gap of width \cmdname{columnsep}. The height of these +\gls{flow}s may not be exactly as high as the \gls{typeblock}, +as their height is adjusted to make them an integer +multiple of \cmdname{baselineskip}. You can switch off this +automatic adjustment using the command: \cmdname{ffvadjustfalse}. + +The \cmdname{onecolumn} and \cmdname{twocolumn} commands +also take an optional argument which is the \gls{pglist} +for which those \gls{flow}s are defined. In addition +to \cmdname{onecolumn} and \cmdname{twocolumn}, the +following commands are also defined: + +\begin{itemize} +\item \cmdname{Ncolumn}\verb"["\meta{pages}\verb"]{"\meta{n}\verb"}" + +Create \meta{n} column \gls{flow}s each separated by a +distance of \cmdname{columnsep}. + +\item \cmdname{onecolumninarea}\verb"["\meta{pages}\verb"]{"\meta{width}\verb"}{"\meta{height}\verb"}{"\meta{x}\verb"}{"\meta{y}\verb"}" + +This creates a single \gls{flow} to fill the given area, +adjusting the height so that it is an integer multiple of +\cmdname{baselineskip}. + +\item \cmdname{twocolumninarea}\verb"["\meta{pages}\verb"]{"\meta{width}\verb"}{"\meta{height}\verb"}{"\meta{x}\verb"}{"\meta{y}\verb"}" + +This creates two column \gls{flow}s separated by a distance +of \cmdname{columnsep} filling the entire area specified. + +\item \cmdname{Ncolumninarea}\verb"["\meta{pages}\verb"]{"\meta{n}\verb"}{"\meta{width}\verb"}{"\meta{height}\verb"}{"\meta{x}\verb"}{"\meta{y}\verb"}" + +A more general form of \cmdname{twocolumninarea} making +\meta{n} frames instead of two. +\end{itemize} + +\section{Column Styles with an Additional Frame} + +As well as the column style of \gls{flow}s defined in +the previous section, it is also possible to define +\meta{n} columns with an additional frame spanning either +above or below them. There will be a vertical gap of +approximately\footnote{It may not be exact, as the \gls{flow}s +are adjusted so that their height is an integer multiple +of \cmdname{baselineskip}, which may increase the gap.} +\cmdname{vcolumnsep} between the columns +and the extra frame. In each of the following definitions, +the argument \meta{pages} is the \gls{pglist} for which +the \gls{frame}s are defined, \meta{n} is the number of +columns required, \meta{type} is the type of frame to go +above or below the columns (this may be one of: \texttt{flow}, +\texttt{static} or \texttt{dynamic}). The area in which the +new frames should fill is defined by \meta{width}, \meta{height} +(the width and height of the area) and \meta{x}, \meta{y} +(the position of the bottom left hand corner of the area +relative to the bottom left hand corner of the \gls{typeblock}.) + +The height of the additional frame at the top or bottom of +the columns is given by \meta{H}. + +\begin{itemize} +\item \cmdname{onecolumntopinarea}\verb"["\meta{pages}\verb"]{"\meta{type}\verb"}{"\meta{H}\verb"}"\meta{width}\verb"}{"\meta{height}\verb"}{"\meta{x}\verb"}{"\meta{y}\verb"}" + +One \gls{flow} with a \meta{type} frame above it, filling +the area specified. + +\item \cmdname{twocolumntopinarea}\verb"["\meta{pages}\verb"]{"\meta{type}\verb"}{"\meta{H}\verb"}"\meta{width}\verb"}{"\meta{height}\verb"}{"\meta{x}\verb"}{"\meta{y}\verb"}" + +Two column style \gls{flow}s with a \meta{type} frame above +them, filling the area specified. + +\item \cmdname{Ncolumntopinarea}\verb"["\meta{pages}\verb"]{"% +\meta{type}\verb"}{"\meta{n}\verb"}{"\meta{H}\verb"}"% +\meta{width}\verb"}{"\meta{height}\verb"}{"\meta{x}\verb"}{"% +\meta{y}\verb"}" + +\meta{n} column style \gls{flow}s with a \meta{type} frame +above them, filling the area specified. + +\item \cmdname{onecolumnbottominarea}\verb"["\meta{pages}\verb"]{"\meta{type}\verb"}{"\meta{H}\verb"}"\meta{width}\verb"}{"\meta{height}\verb"}{"\meta{x}\verb"}{"\meta{y}\verb"}" + +One \gls{flow} with a \meta{type} frame underneath it, filling +the area specified. + +\item \cmdname{twocolumnbottominarea}\verb"["\meta{pages}\verb"]{"\meta{type}\verb"}{"\meta{H}\verb"}"\meta{width}\verb"}{"\meta{height}\verb"}{"\meta{x}\verb"}{"\meta{y}\verb"}" + +Two column style \gls{flow}s with a \meta{type} frame below +them, filling the area specified. + +\item \cmdname{Ncolumnbottominarea}\verb"["\meta{pages}\verb"]{"% +\meta{type}\verb"}{"\meta{n}\verb"}{"\meta{H}\verb"}"% +\meta{width}\verb"}{"\meta{height}\verb"}{"\meta{x}\verb"}{"% +\meta{y}\verb"}" + +\meta{n} column style \gls{flow}s with a \meta{type} frame +below them, filling the area specified. + +\end{itemize} + +The following commands are special cases of the above: + +\begin{itemize} +\item \cmdname{onecolumntop}\verb"["\meta{pages}\verb"]{"% +\meta{type}\verb"}{"\meta{H}\verb"}" + +As \cmdname{onecolumntopinarea} where the area is the entire +\gls{typeblock}. + +\item \cmdname{twocolumntop}\verb"["\meta{pages}\verb"]{"% +\meta{type}\verb"}{"\meta{H}\verb"}" + +As \cmdname{twocolumntopinarea} where the area is the entire +\gls{typeblock}. + +\item \cmdname{Ncolumntop}\verb"["\meta{pages}\verb"]{"% +\meta{type}\verb"}{"\meta{n}\verb"}{"\meta{H}\verb"}" + +As \cmdname{Ncolumntopinarea} where the area is the entire +\gls{typeblock}. + +\item \cmdname{onecolumnbottom}\verb"["\meta{pages}\verb"]{"% +\meta{type}\verb"}{"\meta{H}\verb"}" + +As \cmdname{onecolumnbottominarea} where the area is the entire +\gls{typeblock}. + +\item \cmdname{twocolumnbottom}\verb"["\meta{pages}\verb"]{"% +\meta{type}\verb"}{"\meta{H}\verb"}" + +As \cmdname{twocolumnbottominarea} where the area is the entire +\gls{typeblock}. + +\item \cmdname{Ncolumnbottom}\verb"["\meta{pages}\verb"]{"% +\meta{type}\verb"}{"\meta{n}\verb"}{"\meta{H}\verb"}" + +As \cmdname{Ncolumnbottominarea} where the area is the entire +\gls{typeblock}. + +\end{itemize} + +\section{Backdrop Effects} + +\useGlosentry{static}{Static frames} can be used to produce a +backdrop. There are a number of commands which create +\gls{static}s that can be used as a backdrop. In the +following definitions, \meta{pages} is the \gls{pglist} for +which those \gls{static}s are defined (all is the default). +For the vertical strips: +\meta{xoffset} is the amount by which the frames should be +shifted horizontally (0pt by default), \meta{W1} is the width of the first frame, +with colour specified by \meta{C1} and \IDL\ \meta{L1}, +and so on up to \meta{Wn} the width of the \meta{n}th frame +with colour specified by \meta{Cn} and \IDL\ \meta{Ln}. +For the vertical strips: +\meta{yoffset} is the amount by which the frames should be +shifted vertically (0pt by default), \meta{H1} is the height of the first frame, +with colour specified by \meta{C1} and \IDL\ \meta{L1}, +and so on up to \meta{Hn} the height of the \meta{n}th frame +with colour specified by \meta{Cn} and \IDL\ \meta{Ln}. + +\textbf{NOTE:} unlike the earlier commands, these commands +are all relative to the actual page, not the \gls{typeblock}. +So an $x$ offset of 0pt indicates the first vertical frame +is flush with the left hand edge of the page, and a $y$ offset +of 0pt indicates the first horizontal frame is flush with +the bottom edge of the page. This is because backdrops tend +to span the entire page, not just the \gls{typeblock}. + +The colour specification must be completely enclosed in braces, +e.g.\ \verb"{[rgb]{1,0,1}}" not \verb"[rgb]{1,0,1}". + +\subsection{Vertical stripe effects} + +\begin{itemize} +\item \cmdname{vtwotone}\verb"["\meta{pages}\verb"]["\meta{xoffset}\verb"]{"\meta{W1}\verb"}{"\meta{C1}\verb"}{"\meta{L1}% +\verb"}{"\meta{W2}\verb"}{"\meta{C2}\verb"}{"\meta{L2}\verb"}" + +Create a two tone vertical strip effect. (This command was +used to create the coloured background on the title page +of this document.) + +\item \cmdname{vNtone}\verb"["\meta{pages}\verb"]["\meta{xoffset}\verb"]{"\meta{n}\verb"}{"\meta{W1}\verb"}{"\meta{C1}\verb"}{"\meta{L1}\verb"}"% +\ldots\verb"{"\meta{Wn}\verb"}{"\meta{Cn}\verb"}{"\meta{Ln}\verb"}" + +Similar to \cmdname{vtwotone} but with \meta{n} \gls{static}s +instead of two. + +\item \cmdname{vtwotonebottom}\verb"["\meta{pages}\verb"]["\meta{xoffset}\verb"]{"\meta{H}\verb"}{"\meta{W1}\verb"}{"\meta{C1}\verb"}{"\meta{L1}% +\verb"}{"\meta{W2}\verb"}{"\meta{C2}\verb"}{"\meta{L2}\verb"}" + +Similar to \cmdname{vtwotone} but the \gls{static}s are only +\meta{H} high, instead of the entire height of the page. +The frames are aligned along the bottom edge of the page. + +\item \cmdname{vtwotonetop}\verb"["\meta{pages}\verb"]["\meta{xoffset}\verb"]{"\meta{H}\verb"}{"\meta{W1}\verb"}{"\meta{C1}\verb"}{"\meta{L1}% +\verb"}{"\meta{W2}\verb"}{"\meta{C2}\verb"}{"\meta{L2}\verb"}" + +Similar to \cmdname{vtwotone} but the \gls{static}s are only +\meta{H} high, instead of the entire height of the page. +The frames are aligned along the top edge of the page. +(This command was used to create the border effect along +the top of every page in this document. Two \cmdname{vtwotonetop} +commands were used, one for the even pages, and the other +for the odd pages.) + +\item \cmdname{vNtonebottom}\verb"["\meta{pages}\verb"]["\meta{xoffset}\verb"]{"\meta{H}\verb"}{"\meta{n}\verb"}{"\meta{W1}\verb"}{"\meta{C1}\verb"}{"\meta{L1}\verb"}"% +\ldots\linebreak +\verb"{"\meta{Wn}\verb"}{"\meta{Cn}\verb"}{"\meta{Ln}\verb"}" + +More general version of \cmdname{vtwotonebottom} but for +\meta{n} frames. + +\item \cmdname{vNtonetop}\verb"["\meta{pages}\verb"]["\meta{xoffset}\verb"]{"\meta{H}\verb"}{"\meta{n}\verb"}{"\meta{W1}\verb"}{"\meta{C1}\verb"}{"\meta{L1}\verb"}"% +\ldots\linebreak +\verb"{"\meta{Wn}\verb"}{"\meta{Cn}\verb"}{"\meta{Ln}\verb"}" + +More general version of \cmdname{vtwotonetop} but for +\meta{n} frames. + +\end{itemize} + +\subsection{Horizontal stripe effect} + +\begin{itemize} +\item \cmdname{htwotone}\verb"["\meta{pages}\verb"]["\meta{yoffset}\verb"]{"\meta{H1}\verb"}{"\meta{C1}\verb"}{"\meta{L1}% +\verb"}{"\meta{H2}\verb"}{"\meta{C2}\verb"}{"\meta{L2}\verb"}" + +Create a two tone horizontal strip effect. + +\item \cmdname{hNtone}\verb"["\meta{pages}\verb"]["\meta{yoffset}\verb"]{"\meta{n}\verb"}{"\meta{H1}\verb"}{"\meta{C1}\verb"}{"\meta{L1}\verb"}"% +\ldots\linebreak +\verb"{"\meta{Hn}\verb"}{"\meta{Cn}\verb"}{"\meta{Ln}\verb"}" + +Similar to \cmdname{htwotone} but with \meta{n} \gls{static}s +instead of two. + +\item \cmdname{htwotoneleft}\verb"["\meta{pages}\verb"]["\meta{yoffset}\verb"]{"\meta{W}\verb"}{"\meta{H1}\verb"}{"\meta{C1}\verb"}{"\meta{L1}% +\verb"}{"\meta{H2}\verb"}{"\meta{C2}\verb"}{"\meta{L2}\verb"}" + +Similar to \cmdname{htwotone} but the \gls{static}s are only +\meta{W} wide, instead of the entire width of the page. +The frames are aligned along the left edge of the page. + +\item \cmdname{htwotoneright}\verb"["\meta{pages}\verb"]["% +\meta{yoffset}\verb"]{"\meta{W}\verb"}{"\meta{H1}\verb"}{"% +\meta{C1}\verb"}{"\meta{L1}% +\verb"}{"\meta{H2}\verb"}{"\meta{C2}\verb"}{"\meta{L2}\verb"}" + +Similar to \cmdname{htwotone} but the \gls{static}s are only +\meta{W} wide, instead of the entire width of the page. +The frames are aligned along the right edge of the page. + +\item \cmdname{hNtoneleft}\verb"["\meta{pages}\verb"]["% +\meta{yoffset}\verb"]{"\meta{W}\verb"}{"\meta{n}\verb"}{"% +\meta{H1}\verb"}{"\meta{C1}\verb"}{"\meta{L1}\verb"}"% +\ldots\linebreak +\verb"{"\meta{Hn}\verb"}{"\meta{Cn}\verb"}{"\meta{Ln}\verb"}" + +More general version of \cmdname{htwotoneleft} but for +\meta{n} frames. + +\item \cmdname{hNtoneright}\verb"["\meta{pages}\verb"]["% +\meta{yoffset}\verb"]{"\meta{W}\verb"}{"\meta{n}\verb"}{"% +\meta{H1}\verb"}{"\meta{C1}\verb"}{"\meta{L1}\verb"}"% +\ldots\linebreak +\verb"{"\meta{Hn}\verb"}{"\meta{Cn}\verb"}{"\meta{Ln}\verb"}" + +More general version of \cmdname{htwotoneright} but for +\meta{n} frames. + +\end{itemize} + +\subsection{Background Frame} + +To make a single \gls{static} covering the entire page, use: +\cmdname{makebackgroundframe}\verb"["\meta{pages}\verb"]["\meta{IDL}\verb"]". Note that this \gls{static} should be created +before any other \gls{static} as it will obscur all other +\gls{static}s created before it if it is given a background +colour. + +\subsection{Vertical and Horizontal Rules} + +You can create vertical or horizontal rules between two +\gls{frame}s using the commands: + +\begin{itemize} + +\item \cmdname{insertvrule}\verb"["\meta{y top}\verb"]["% +\meta{y bottom}\verb"]{"\meta{T1}\verb"}{"\meta{IDN1}\verb"}{"% +\meta{T2}\verb"}{"\meta{IDN2}\verb"}" + +This creates a new \gls{static} which fits between \meta{T1} +\gls{frame} with \IDN\ \meta{IDN1} and \meta{T2} \gls{frame} +with \IDN\ \meta{IDN2}, and places a vertical rule in it +extending from the highest point of the highest frame to +the lowest point of the lowest frame. The first optional +argument \meta{y top} (default 0pt) extends the rule by that +much above the highest point, and the second optional argument +\meta{y bottom} (default 0pt) extends the rule by that much +below the lowest point. If either of the optional arguments +are negative, the rule will be shortened instead of extended. +The width of the rule is given by \cmdname{columnseprule}. + +\item \cmdname{inserthrule}\verb"["\meta{x left}\verb"]["% +\meta{x right}\verb"]{"\meta{T1}\verb"}{"\meta{IDN1}\verb"}{"% +\meta{T2}\verb"}{"\meta{IDN2}\verb"}" + +This creates a new \gls{static} which fits between \meta{T1} +\gls{frame} with \IDN\ \meta{IDN1} and \meta{T2} \gls{frame} +with \IDN\ \meta{IDN2}, and places a horizontal rule in it +extending from the leftmost point of the left frame to +the rightmost point of the right frame. The first optional +argument \meta{x left} (default 0pt) extends the rule by that +much before the leftmost point, and the second optional argument +\meta{x right} (default 0pt) extends the rule by that much +beyond the rightmost point. If either of the optional arguments +are negative, the rule will be shortened instead of extended. +The height of the rule is given by \cmdname{columnseprule}. + +\end{itemize} + +The default value for \cmdname{columnseprule} is 2pt. +Both of the above commands have starred versions which allow +you to identify the \gls{frame} by \IDL\ instead of \IDN. +The \gls{frame} types, \meta{T1} and \meta{T2} can be one of +the following keywords: \texttt{flow}, \texttt{static} +or \texttt{dynamic}. + + +\chapter{Thumbtabs and Minitocs} + +\section{Thumbtabs} + +On the right hand side of this page, there is a blue rectangle +with the chapter number in it. This is a thumbtab, and it gives +you a rough idea whereabouts in the document you are when you +quickly flick through the pages. Each thumbtab is in fact +a dynamic frame, and you can control whether to make the +number and/or title appear in the thumbtab by using one or +more of the package options: \pkgopt{ttbtitle} (show +title---default), \pkgopt{ttbnotitle} (don't show the title), +\pkgopt{ttbnum} (show the number) and \pkgopt{ttbnonum} +(don't show the number---default). + +If you want thumbtabs in your document, you need to use +the command +\cmdname{makethumbtabs}\verb"["\meta{y offset}\verb"]{"\meta{height}\verb"}["\meta{section type}\verb"}" in the document +preamble. By default, the topmost thumbtab is level with the +top of the \gls{typeblock}, but can be shifted vertically +using the first optional argument \meta{y offset}. Each +thumbtab will be \meta{height} high, and will correspond to the +sectioning type \meta{section type}. If \meta{section type} +is omitted, chapters will be used if the \cmdname{chapter} +command is defined, otherwise sections will be used. +The width of the thumbtabs is given by the length +\cmdname{thumbtabwidth}, which is 1cm by default. + +The command \cmdname{thumbtabindex} will display the +thumbtab index (all thumbtabs) on the current page. You +then need to use the command \cmdname{enablethumbtabs} +to start the individual thumbtabs and \cmdname{disablethumbtabs} +to make them go away. + +You can align the table of contents with the thumbtabs\footnote{but +only do this if there is enough room on the page!} using +the command \cmdname{tocandthumbtabindex} instead of +the commands \cmdname{tableofcontents} and +\cmdname{thumbtabindex}. If you are using the \sty{hyperref} +package, the text on the thumbtab index will be a hyperlink +to the corresponding part of the document. Note that you may +need to shift the thumbtabs vertically up or down to make +sure that they align correctly with the table of contents. + +The format of the text on the thumbtabs is given by the command +\cmdname{thumbtabindexformat} for the thumbtab index entries, +and \cmdname{thumbtabformat} for the individual thumbtabs. By +default the text on the thumbtabs will be rotated, but as +rotating is not implemented by some previewers, the package option +\pkgopt{norotate} is provided, which will stack the letters +vertically. This does not look as good as the rotated text. +In addition, some previewers do not put the hyperlink in the +correct place when the link has been rotated, so this may +also cause a problem. + +The thumbtab attributes can be changed using +\cmdname{setthumbtab}\verb"{"\meta{n}\verb"}{"\meta{key value +list}\verb"}", where \meta{n} is the thumbtab number starting +from 1 (for the top thumbtab) to \verb"\value{maxthumbtabs}" +(for the bottom thumbtab). Note that these numbers are not +related to the \gls{frame} \IDN{}s. + +To just change the settings for the thumbtab index, use +\cmdname{setthumbtabindex}\verb"{"\meta{n}\verb"}{"\meta{key value list}\verb"}". The \meta{key value list} for both these +commands is the same as that for \cmdname{setdynamicframe}. + +By default, the thumbtabs are given a grey background. In this +document, I have used: +\begin{verbatim} +\setthumbtab{1}{backcolor=[rgb]{0.15,0.15,1}} +\setthumbtab{2}{backcolor=[rgb]{0.2,0.2,1}} +\setthumbtab{3}{backcolor=[rgb]{0.25,0.25,1}} +\setthumbtab{4}{backcolor=[rgb]{0.3,0.3,1}} +\setthumbtab{5}{backcolor=[rgb]{0.35,0.35,1}} +\setthumbtab{6}{backcolor=[rgb]{0.4,0.4,1}} +\setthumbtab{7}{backcolor=[rgb]{0.45,0.45,1}} +\end{verbatim} +to change the thumbtab background colour to shades of blue. + +I have also changed the style of the thumbtab text using: +\begin{verbatim} +\newcommand{\thumbtabstyle}[1]{\textsc{\sffamily #1}} +\setthumbtab{all}{style=thumbtabstyle,textcolor=white} +\end{verbatim} + +Given that I have specified white text, why does the thumbtab +index have black text? This is because the text on the thumbtab +index is a hyperlink, and I have used \verb"linkcolor=black" +with the hyperref package. + +\section{Minitocs} + +In this document, after each chapter heading, there is a +mini table of contents for that chapter. To enable minitocs, +use the command +\cmdname{enableminitoc}\verb"["\meta{section type}\verb"]". +The default \meta{section type} is the same as the thumbtabs. + +If you want the minitocs to appear in a \gls{dynamic}, you +can use \cmdname{appenddfminitoc}\verb"{"\meta{IDN}\verb"}" +where \meta{IDN} is the \IDN\ of the appropriate \gls{dynamic}. +There is also a starred version available if you want to +use the \IDL\ instead of the \IDN. + +For example, in this document I have used the command: +\begin{verbatim} +\appenddfminitoc*{chaphead} +\end{verbatim} +in the preamble, which has appended the minitocs to the +\gls{dynamic} with \IDL\ \texttt{chaphead}. + +The style of the minitoc text is given by the command +\cmdname{minitocstyle} which takes one argument, the contents +of the minitoc. This command may be redefined if you want +to change the minitoc style. The gap before the minitoc +is given by the length \cmdname{beforeminitocskip} and +the gap after the minitoc is given by the length +\cmdname{afterminitocskip}. These lengths may be changed +using \cmdname{setlength}. + +\chapter{Global Values} + +The following macros can be changed using \cmdname{renewcommand}: + +\begin{itemize} +\item \cmdname{setffdraftcolor} +This sets the colour of the \gls{bbox} +when it is displayed in draft mode. The default value is: +\verb/\color[gray]{0.8}/. For example, if you want a darker grey, +do: +\begin{verbatim} +\renewcommand{\setffdraftcolor}{\color[gray]{0.3}} +\end{verbatim} + +\item +\cmdname{setffdrafttypeblockcolor} This sets the colour of +the \gls{bbox} of the \gls{typeblock} when it is displayed +in draft mode. The default value is: \verb/\color[gray]{0.9}/. +For example, if you want a medium grey, do: +\begin{verbatim} +\renewcommand{\setffdrafttypeblockcolor}{\color[gray]{0.5}} +\end{verbatim} + +\item \cmdname{fflabelfont} +This sets the font size for the \gls{bbox} markers in +draft mode. The default value is: \verb/\small\sffamily/. +For example, if you want a larger font, do: +\begin{verbatim} +\renewcommand{\fflabelfont}{\large\sffamily} +\end{verbatim} + +\end{itemize} + +The following are lengths, which can be changed using +\cmdname{setlength}: + +\begin{itemize} +\item \cmdname{fflabelsep} +This is the distance from the right hand side of the +\gls{bbox} at which to place the \gls{bbox} marker. The +default value is: \texttt{1pt} + +\item \cmdname{flowframesep} +This is the gap between the text of the \gls{frame} and +its border, for the standard border types. + +\item \cmdname{flowframerule} +This is the width of the \gls{frame}'s border, if using +a border given by a \useGlosentry{fcmd}{frame} +\useGlosentry{fcmd}{making command} that uses \cmdname{fboxsep} +to set its border width (e.g.\ \cmdname{fbox}). +\end{itemize} + +\chapter{Troubleshooting} + +\section{General Queries} + +\begin{enumerate} +\item If all my \gls{flow}s 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 \gls{flow} the size +of the \gls{typeblock}, and use that. + +\item Can I use the formatted page number in \gls{pglist}s? + +No. + +\item\label{itm:whynot} Why not? + +When the output routine finishes with one \gls{flow} +it looks for the next \gls{flow} defined on that page, +if there are none left, it then searches through the \gls{pglist} +of all the defined \gls{flow}s 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: + +\begin{enumerate} +\item \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 +\gls{flow} defined on page~15, not on page~A. + +\item 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. +\end{enumerate} +\end{enumerate} + +\section{Unexpected Output} + +\begin{enumerate} +\item The lines at the beginning of my \gls{flow}s are the +wrong width. + +This is a problem that will occur if you have \gls{flow}s +with different widths, as the change in \cmdname{hsize} +does not come into effect until a paragraph break. So if +you have a paragraph that spans two \gls{flow}s, the end +of the paragraph at the beginning of the second \gls{flow} +will retain the width it had at the start of the +paragraph at the bottom of the previous \gls{flow}. You can +fix the problem by inserting \cmdname{framebreak} at the +point where the \gls{frame} break occurs +(see \autoref{sec:framebreak}). + +\item My \gls{frame}s shift to the right when I add a border. + +This may occur if you use a border that is not recognised +by the \sty{flowfram} package. You will need to set the +offset using the \texttt{offset} key (see \autoref{sec:modattr}). + +\item I have a vertical white strip along the right hand side +of every page. + +This occurs if you use \appname{ps2pdf} of \appname{dvipdf}. +Try using \appname{pdflatex} instead. + +\end{enumerate} + +\section{Error Messages} + +\begin{enumerate} +\item \verb/Illegal unit of measure (pt inserted)/ + +All lengths must have units. Remember to include the +units when defining new \gls{frame}s. The following +keys require lengths: \texttt{width}, \texttt{height}, +\texttt{x}, \texttt{y} and \texttt{offset}\footnote{% +\texttt{offset} can also have the value \texttt{compute}}. + +\item \verb/Missing number, treated as zero/ + +\LaTeX\ is expecting a number. There are a number of +possible causes: + +\begin{enumerate} +\item 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 +\verb/\set/\meta{type}\verb/frame/ commands, or when setting +the contents of \gls{static}s or \gls{dynamic}s. + +\item When specifying page lists, you have mixed keywords +with page ranges. For example: \texttt{1,even} is invalid. +\end{enumerate} + +\item \verb/Flow frame IDL '/\meta{label}\verb+' already defined+ + +All \useacronym[s]{IDL} within each \gls{frame} type must be +unique. There are similar error messages for duplicate +\useacronym[s]{IDL} for \gls{static}s and \gls{dynamic}s. + +\item \verb/Can't find flow frame id/ + +You have specified a non-existent \gls{flow} \IDL. There are +similar error messages for \gls{static}s and \gls{dynamic}s. +Check to make sure you have spelt the label correctly, and +check you are using the correct \gls{frame} type command. +(For example, if a \gls{static} has the \IDL\ \texttt{mylabel}, +and you attempt to do +\verb/\setflowframe*{mylabel}{/\meta{options}\verb/}/, +then you will get this error, because \texttt{mylabel} refers +to a \gls{static} not a \gls{flow}.) + +\item \verb/Key 'clear' is boolean/ + +The \texttt{clear} key can only have the values \texttt{true} +or \texttt{false}. + +\item \verb/Key 'clear' not available/ + +The \texttt{clear} key is only available for static +and dynamic \gls{frame}s. + +\item \verb/Key 'style' not available/ + +The \texttt{style} key is only available for \gls{dynamic}s. + +\item \verb/Key 'margin' not available/ + +The \texttt{margin} key is only available for \gls{flow}s. + +\item \verb/Dynamic frame style '/\meta{style}\verb+' not defined+ + +The specified style \meta{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. + +\item \verb/No flow frames defined on page /\meta{n}\verb+. Text lost+ + +You can not have a page in the middle of the document that has +no \gls{flow} defined, as it messes up \TeX's output routine. +You will loose some of the document's text. + +\item \verb/Argument of \fbox has an extra }/ + +This error will occur if you do, say, \verb/border=\fbox/ +instead of \verb/border=fbox/. Remember not to include +the initial backslash. + +\item \verb/Not in outer par mode/ + +You can not have floats (such as figures, tables or marginal +notes) in \gls{static}s or \gls{dynamic}s. If you want +a figure or table within a \gls{static} or \gls{dynamic} +use \env{staticfigure} or \env{statictable}. + +\item \verb/Somethings wrong---maybe missing \item/ + +Assuming that all your list type of environments start +with \cmdname{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 try again. + +\end{enumerate} +\disablethumbtabs + +\printglossary + +\printindex + +% have a backcover: +\setdynamicframe*{footer}{pages=none} +\setstaticframe*{lastbackleft,lastbackright}{pages=even} +\mbox{}\finishthispage +\end{document} diff --git a/Master/texmf-dist/doc/latex/flowfram/ffuserguide.ttb b/Master/texmf-dist/doc/latex/flowfram/ffuserguide.ttb new file mode 100644 index 00000000000..a42114976a7 --- /dev/null +++ b/Master/texmf-dist/doc/latex/flowfram/ffuserguide.ttb @@ -0,0 +1,7 @@ +\thumbtab {1}{1}{Introduction}{chapter.1} +\thumbtab {3}{2}{Defining New Frames}{chapter.2} +\thumbtab {7}{3}{Modifying Frame Attributes}{chapter.3} +\thumbtab {11}{4}{Predefined Layouts}{chapter.4} +\thumbtab {17}{5}{Thumbtabs and Minitocs}{chapter.5} +\thumbtab {19}{6}{Global Values}{chapter.6} +\thumbtab {21}{7}{Troubleshooting}{chapter.7} diff --git a/Master/texmf-dist/doc/latex/flowfram/flowfram.pdf b/Master/texmf-dist/doc/latex/flowfram/flowfram.pdf new file mode 100644 index 00000000000..4b5a6df63ed Binary files /dev/null and b/Master/texmf-dist/doc/latex/flowfram/flowfram.pdf differ diff --git a/Master/texmf-dist/doc/latex/flowfram/samples/brochure.pdf b/Master/texmf-dist/doc/latex/flowfram/samples/brochure.pdf new file mode 100644 index 00000000000..e2da76ee630 Binary files /dev/null and b/Master/texmf-dist/doc/latex/flowfram/samples/brochure.pdf differ diff --git a/Master/texmf-dist/doc/latex/flowfram/samples/brochure.tex b/Master/texmf-dist/doc/latex/flowfram/samples/brochure.tex new file mode 100644 index 00000000000..4bb569993dc --- /dev/null +++ b/Master/texmf-dist/doc/latex/flowfram/samples/brochure.tex @@ -0,0 +1,343 @@ +\documentclass[a4paper]{report} + +\usepackage[landscape,margin=1in]{geometry} +\usepackage{color} +\usepackage{flowfram} + +% Use sans-serif font as default font +\renewcommand{\familydefault}{cmss} + +% adjust \textheight so that it is an integer multiple of +% \baselineskip +\adjustheight{\textheight} + +% set up pagelayout. One column for title page +% two columns for the rest. +\onecolumninarea[1,2]{0.6\textwidth}{\textheight}{0.4\textwidth}{0pt} +\twocolumninarea[>2]{0.6\textwidth}{\textheight}{0.4\textwidth}{0pt} + +% Set up dynamic frame on the left. This is where +% the headings will go. + +\newdynamicframe{0.4\textwidth}{\textheight}{0pt}{0pt}[left] + +% put the chapter headings in this frame +\dfchaphead*{left} +% Modify the default style +\renewcommand{\DFchapterstyle}[1]{% +\raggedright\Huge\slshape\MakeUppercase{#1}\par} + +% Make static frames for background (only for page 1) +\vtwotone[1]{0.6\paperwidth}{[cmyk]{0.65,0.13,0,0}}{backleft}% +{0.4\paperwidth}{[cmyk]{0.94,0.54,0,0}}{backright} + +% Make a border along the top of each page +\vtwotonetop{1cm}{0.6\paperwidth}{[cmyk]{0.65,0.13,0,0}}{topleft}% +{0.4\paperwidth}{[cmyk]{0.94,0.54,0,0}}{topright} + +% make a static frame for the logo +\newstaticframe{0.2\textwidth}{0.25\textheight}{0pt}{0pt}[logo] + +% empty page style, because I am going to make my own +\pagestyle{empty} + +% Each new chapter sets \thispagestyle{\chapterfirstpagestyle}, change this empty as well +\renewcommand{\chapterfirstpagestyle}{empty} + +% Now make a frame in which to put my own customized footer +\newdynamicframe[>1]{\textwidth}{\headheight}{0pt}{-\footskip}[footer] + +% set the contents of the frame: +\setdynamiccontents*{footer}{% +School of Computing Sciences, University of East Anglia\hfill +http://www.cmp.uea.ac.uk/\hfill +page \thepage\ of \pageref{lastpage}} + + +\newcommand{\env}[1]{\texttt{#1}} +\newcommand{\cmdname}[1]{\texttt{\symbol{92}#1}} +\newcommand{\meta}[1]{\textnormal{\textless\textit{#1}\textgreater}} + +\begin{document} + +% not a very interesting logo +\setstaticcontents*{logo}{\sffamily{\Huge\slshape FLF} Flowfram} + +{\noindent +\slshape\Huge\MakeUppercase{A Sample Brochure}\par +\vskip0.5in +\noindent\large\MakeUppercase{Nicola Talbot}\\ +} + + +\chapter{Introduction} + +The \textsl{flowfram} package is designed to enable you to create +frames in a document such that the +contents of the \env{document} environment flow from one +frame to the next in the order that they were defined. +This is useful for creating posters +or magazines or any other form of document that does not +conform to the standard one or two column layout. + +This is a modified version of the manual for the \textsl{flowfram} package. +It is intended to illustrated what can be done. See the full manual for +a comprehensive description. +If the columns are very narrow, it may be better to +use \cmdname{raggedright}, otherwise \TeX\ may have a +problem working out the line breaks. + +\chapter{Setting up Frames} + +The \textsl{flowfram} package provides three types of frame: +{flow frames}, {static +frames} and {dynamic frames}. + +\section*{Flow Frames} + +The flow frame is the principle type of frame. +The text of the \env{document} environment will flow from +one frame to the next in order of definition. Each +flow frame has an associated width, height, +position on the page, and optionally a border. + +It is recommended that all the flow frames in a document +have the same width, otherwise problems may occur +when a paragraph spans to flow frames of unequal +widths. This is because \TeX's output routine does not +register the change in \cmdname{hsize} until it reaches +a paragraph break. If it is absolutely necessary for +flow frames to have unequal widths, judicious use of +\cmdname{framebreak} is required. + +\section*{Static Frames} + +A static frame is a rectangular area in which text neither +flows into, nor flows out of. The contents must be set +explicitly, and once set, the contents of the static frame will +remain the same on each page until it is explicitly +changed. Thus, a static frame can be used, for example, to make +a company logo appear in the same place on every page. + +\section*{Dynamic Frames} + +A dynamic frame is similar to a static frame, but its contents +are re-typeset on each page. (A static frame stores its +contents in a savebox, whereas a dynamic frame stores its +contents in a macro). + +\chapter{Frame Attributes} +\label{sec:modattr} + +Once you have defined the {flow frames}, {static frames} and +{dynamic frames}, their attributes can be changed. +The three types of frame mostly have the +same set of attributes, but some are specific to a certain type. +The available attributes are as follows +(\textsuperscript{\textbf{F}} indicates the key is +only available for {flow frames}, +\textsuperscript{\textbf{S}} indicates the key is only available +for {static frames} +and \textsuperscript{\textbf{D}} indicates the key +is only available for {dynamic frames}): + +\begin{description} +\item[width=\meta{length}]\mbox{}\par The width of the frame. + +\item[height=\meta{length}]\mbox{}\par The height of the frame. + +\item[x=\meta{length}]\mbox{}\par The x-coordinate of the frame. + +\item[y=\meta{length}]\mbox{}\par The y-coordinate of the frame. + +\item[border=\meta{style}]\mbox{}\par The style of the border around the +frame, this can take the values: \texttt{none} (no border), +\texttt{plain} (plain border) or the name of a \LaTeX\ +frame making command without the preceding backslash. +The value \texttt{fbox} is equivalent to \texttt{plain}. + +\item[offset=\meta{offset}]\mbox{}\par The border offset, if it is a +user-defined border. This is the distance from the outer +edge of the left hand border to the left edge of the +bounding box of the text inside the border. The \textsl{flowfram} +package is able to compute the border for +known frame making commands. +If you define your own frame making command, you may need to +specify the offset explicitly, or the frames +may end up shifted to the right or left. + +\item[bordercolor=\meta{colour}]\mbox{}\par The colour of the border +if you are using a standard frame making command. +The colour can either be specified as, e.g.\ \texttt{green}, +or including the colour model, for example +\verb/[rgb]{0,1,0}/. + +\item[textcolor=\meta{colour}]\mbox{}\par The text colour for that +frame. Again, the colour can either be specified as, +e.g.\ \texttt{green}, or including the colour model, +for example \verb/[rgb]{0,1,0}/. + +\item[pages=\meta{page list}]\mbox{}\par The {list of +pages} for which the frame +should appear. This can either have the values: \texttt{all}, +\texttt{even}, \texttt{odd} or \texttt{none} (the latter +removes the frame from that point on---useful if you +have multiple pages with the same number), or it can be a +comma-separated list of single pages, or +{page ranges}. + +\item[margin=\meta{side}\textsuperscript{F}]\mbox{}\par The side of +the flow frame that its corresponding margin should go on. This +can take the values \texttt{left} or \texttt{right}. + +\item[clear=\meta{boolean}\textsuperscript{S}] If this value +is set, the static frame will be cleared at the start of the +next page. + +\item[style=\meta{cmd}\textsuperscript{D}]\mbox{}\par This should be +the name of a command \emph{without} the preceding backslash, +to be applied to the contents of the specified dynamic frame. +The command may either be a declaration, for example \verb/style=large/ +which will set the contents of all the dynamic frames in a +large font, or it can be a command that takes a single argument, +for example \verb/style=textbf/ +which will make the text for all the dynamic frames come out in +bold. To unset a style, do \verb/style=none/. + +\end{description} + +\chapter{Miscellaneous} + +\section*{Page Layout} + +The \textsl{flowfram} package has the package option \texttt{draft} +which will draw the {bounding boxes} for +each frame defined. At the bottom right of each +bounding box (except for the bounding box denoting the +typeblock), a marker will be shown to indictate the type +of frame, its IDN and its IDL. + +You can see the layout for the current page (irrespective of +whether or not the \texttt{draft} option has been set) using +the command:\newline +\cmdname{flowframeshowlayout} + +The headers and footers will appear as usual (but will not +be shown in draft mode), according to the format given by +\cmdname{pagestyle}. + +\section*{Frame Stacking Order} + +The material on each page is placed in the following order: +\begin{enumerate} +\item Each static frame defined for that page in ascending +order of IDN. + +\item Each flow frame defined for that page in ascending +order of IDN. + +\item Each dynamic frame defined for that page in ascending +order of IDN. + +\item {Bounding boxes} if the \texttt{draft} +package option has been used. +\end{enumerate} + +This ordering can be used to determine if you want something +to overlay or underlay everything else on the page. + +\section*{Prematurely Ending a Flow Frame} + +You can force text to move immediately to the next defined +flow frame using one of the standard \LaTeX\ page breaking commands +which work in an analogous way to the way they +work in standard two column mode. + +The command \cmdname{framebreak} is provided for situations +where a paragraph spans two flow frames +of different widths, as \TeX's output routine does not +adjust to the new value of \cmdname{hsize} until the last +paragraph of the previous frame has ended. As a +result, the end of the paragraph at the beginning of the new +flow frame retains the width of the previous flow frame. + +If you want to start a new page, rather than simply move to the +next frame, use the command\newline +\cmdname{finishthispage}. + +\section*{Floats} + +Since floats (such as figures and tables) can only go in +{flow frames}, this package provides +the additional environments: +\env{staticfigure} and +\env{statictable} which can be used in static frames +and dynamic frames. Unlike their \env{figure} and +\env{table} counterparts, they are fixed in place, and +so do not take an optional placement specifier. The +\cmdname{caption} and \cmdname{label} commands can +be used within \env{staticfigure} and \env{statictable} as +usual. + +The standard \env{figure} and \env{table} commands will +behave as usual in the flow frames, but their starred versions, +\env{figure*} and \env{table*} behave no differently +from \env{figure} and \env{table}. + +\section*{Global Values} + +The following macros can be changed using\linebreak \cmdname{renewcommand}: + +\begin{itemize} +\item \cmdname{setffdraftcolor} + +This sets the colour of the bounding box +when it is displayed in draft mode. + +\item +\cmdname{setffdrafttypeblockcolor} + +This sets the colour of +the bounding box of the typeblock when it is displayed +in draft mode. + +\item \cmdname{fflabelfont} + +This sets the font size for the bounding box markers in +draft mode. + +\end{itemize} + +The following are lengths, which can be changed using +\cmdname{setlength}: + +\begin{itemize} +\item \cmdname{fflabelsep} + +This is the distance from the right hand side of the +bounding box at which to place the bounding box marker. + +\item \cmdname{flowframesep} + +This is the gap between the text of the frame and +its border, for the standard border types. + +\item \cmdname{flowframerule} + +This is the width of the frame's border, if using +a border given by a frame making command that uses \cmdname{fboxsep} +to set its border width. + +\item \cmdname{columnsep} + +This is the horizontal distance between flow frames when using one of the +\cmdname{Ncolumn} type of commands + +\item \cmdname{vcolumnsep} + +This is the vertical distance between the flow frames and the static or +dynamic frame when using one of the \cmdname{Ncolumntop} type of commands. +\end{itemize} + +\label{lastpage} +\end{document} diff --git a/Master/texmf-dist/doc/latex/flowfram/samples/poster.pdf b/Master/texmf-dist/doc/latex/flowfram/samples/poster.pdf new file mode 100644 index 00000000000..8730dc00422 Binary files /dev/null and b/Master/texmf-dist/doc/latex/flowfram/samples/poster.pdf differ diff --git a/Master/texmf-dist/doc/latex/flowfram/samples/poster.tex b/Master/texmf-dist/doc/latex/flowfram/samples/poster.tex new file mode 100644 index 00000000000..84354f43019 --- /dev/null +++ b/Master/texmf-dist/doc/latex/flowfram/samples/poster.tex @@ -0,0 +1,362 @@ +\documentclass[a0]{a0poster} + +\usepackage{color} +\usepackage{times} +\usepackage{courier} +\usepackage{helvet} +\usepackage{flowfram} + +% set up frames + +\setlength{\columnsep}{2cm} + +% Base the page layout on 4 column with static header. +% The static frame has height = 0.2\textheight +\NcolumnStop{4}{0.2\textheight} +% give the static frame a label to make it easier to keep track of +\setstaticframe{\value{maxstatic}}{label={title},backcolor=[cmyk]{0.64,0,0.95,0.40},textcolor=white} + +% Insert a vertical line between flow frames 2 and 3: +\insertvrule{flow}{2}{flow}{3} + +% On the first page, replace last two columns with +% 2 columns and a static underneath +\setflowframe{3,4}{pages={>1}} + +\computeflowframearea{3,4} +\twocolumnSbottominarea[1]{0.5\ffareaheight}{\ffareawidth}{\ffareaheight}{\ffareax}{\ffareay} +\setstaticframe{\value{maxstatic}}{label={info},backcolor=[cmyk]{0.26,0,0.76,0},clear} + +% insert a horizontal rule between flow frame 5 and static +% frame 5 +\inserthrule*[0.5\columnsep]{flow}{5}{static}{info} + +\setallflowframes{backcolor=[cmyk]{0.15,0,0.69,0}} + +\newcommand{\sty}[1]{\textsf{#1}} +\newcommand{\env}[1]{\textsf{#1}} +\newcommand{\cmdname}[1]{\texttt{\symbol{92}#1}} +\newcommand{\meta}[1]{\textnormal{\textless\textit{#1}\textgreater}} + +%\raggedright +%\setlength{\parindent}{15pt} + +\begin{document} +\begin{staticcontents*}{title} +\begin{center} +\bfseries\veryHuge flowframe.sty : Creating Posters, Magazines or Brochures in \LaTeX +\vskip1cm +\huge Nicola L. C. Talbot +\vskip2ex +\normalsize \verb"http://theoval.cmp.uea.ac.uk/~nlct/" +\end{center} +\end{staticcontents*} + +\pagestyle{empty} + +\begin{staticcontents*}{info} +\begin{staticfigure} + +\begin{verbatim} + % Make the distance between columns = 1.5cm + \setlength{\columnsep}{2cm} + + % Make a 4 column layout with a static frame on top. + % The static frame has height = 0.2\textheight + \NcolumnStop{4}{0.2\textheight} + + % give the static frame a label to make it easier to keep track of + \setstaticframe{\value{maxstatic}}{label={title},backcolor=[cmyk]{0.64,0,0.95,0.40},textcolor=white} + + % On the first page, replace the 3rd and 4th columns + % with two shorter columns with a static frame underneath + \setflowframe{3,4}{pages={>1}} + + % The area taken up by the 3rd and 4th columns is given by + \computeflowframearea{3,4} + + % Set up new frames in this area + \twocolumnSbottominarea[1]{0.5}{\ffareawidth}{\ffareaheight}{\ffareax}{\ffareay} + + % Assign a label to the last static frame to be created, and set background colour + \setstaticframe{\value{maxstatic}}{label={info},backcolor=[cmyk]{0.26,0,0.76,0}} + + % Set the background colour for all flow frames + \setallflowframes{backcolor=[cmyk]{0.15,0,0.69,0}} +\end{verbatim} + +\caption{The commands used to define the frames for this document} +\protect\label{fig:thisdoc} +\end{staticfigure} +\end{staticcontents*} + +This is a modified version of the manual for the \sty{flowfram} package. +It is intended to illustrated what can be done. See the full manual for +a comprehensive description. The commands used to define the frames for +this document are shown in Figure~\ref{fig:thisdoc}. +If the columns are very narrow, it may be better to +use \cmdname{raggedright}, otherwise \TeX\ may have a +problem working out the line breaks. + +\section{Introduction} + +The \sty{flowfram} package is designed to enable you to create +frames in a document such that the +contents of the \env{document} environment flow from one +frame to the next in the order that they were defined. +This is useful for creating posters +or magazines or any other form of document that does not +conform to the standard one or two column layout. + +\section{Setting up Frames} + +The \sty{flowfram} package provides three types of frame: +{flow frames}, {static +frames} and {dynamic frames}. + +\subsection{Flow Frames} + +The flow frame is the principle type of frame. +The text of the \env{document} environment will flow from +one frame to the next in order of definition. Each +flow frame has an associated width, height, +position on the page, and optionally a border. + +It is recommended that all the flow frames in a document +have the same width, otherwise problems may occur +when a paragraph spans to flow frames of unequal +widths. This is because \TeX's output routine does not +register the change in \cmdname{hsize} until it reaches +a paragraph break. If it is absolutely necessary for +flow frames to have unequal widths, judicious use of +\cmdname{framebreak} is required. + +\subsection{Static Frames} + +A static frame is a rectangular area in which text neither +flows into, nor flows out of. The contents must be set +explicitly, and once set, the contents of the static frame will +remain the same on each page until it is explicitly +changed. Thus, a static frame can be used, for example, to make +a company logo appear in the same place on every page. + +\subsection{Dynamic Frames} + +A dynamic frame is similar to a static frame, but its contents +are re-typeset on each page. (A static frame stores its +contents in a savebox, whereas a dynamic frame stores its +contents in a macro). + +\section{Frame Attributes} +\label{sec:modattr} + +Once you have defined the {flow frames}, {static frames} and +{dynamic frames}, their attributes can be changed. +The three types of frame mostly have the +same set of attributes, but some are specific to a certain type. +The available attributes are as follows +(\textsuperscript{\textbf{F}} indicates the key is +only available for {flow frames}, +\textsuperscript{\textbf{S}} indicates the key is only available +for {static frames} +and \textsuperscript{\textbf{D}} indicates the key +is only available for {dynamic frames}): + +\begin{description} +\item[width=\meta{length}] The width of the frame. + +\item[height=\meta{length}] The height of the frame. + +\item[x=\meta{length}] The x-coordinate of the frame. + +\item[y=\meta{length}] The y-coordinate of the frame. + +\item[border=\meta{style}] The style of the border around the +frame, this can take the values: \texttt{none} (no border), +\texttt{plain} (plain border) or the name of a \LaTeX\ +frame making command without the preceding backslash. +The value \texttt{fbox} is equivalent to \texttt{plain}. + +\item[offset=\meta{offset}] The border offset, if it is a +user-defined border. This is the distance from the outer +edge of the left hand border to the left edge of the +bounding box of the text inside the border. The \sty{flowfram} +package is able to compute the border for +known frame making commands. +If you define your own frame making command, you may need to +specify the offset explicitly, or the frames +may end up shifted to the right or left. + +\item[bordercolor=\meta{colour}] The colour of the border +if you are using a standard frame making command. +The colour can either be specified as, e.g.\ \texttt{green}, +or including the colour model, e.g. \verb/[rgb]{0,1,0}/. + +\item[textcolor=\meta{colour}] The text colour for that +frame. Again, the colour can either be specified as, +e.g.\ \texttt{green}, or including the colour model, +e.g. \verb/[rgb]{0,1,0}/. + +\item[pages=\meta{page list}] The {list of +pages} for which the frame +should appear. This can either have the values: \texttt{all}, +\texttt{even}, \texttt{odd} or \texttt{none} (the latter +removes the frame from that point on---useful if you +have multiple pages with the same number), or it can be a +comma-separated list of single pages, or +{page ranges}. + +\item[margin=\meta{side}\textsuperscript{F}] The side of +the flow frame that its corresponding margin should go on. This +can take the values \texttt{left} or \texttt{right}. + +\item[clear=\meta{boolean}\textsuperscript{S}] If this value +is set, the static frame will be cleared at the start of the +next page. + +\item[style=\meta{cmd}\textsuperscript{D}] This should be +the name of a command \emph{without} the preceding backslash, +to be applied to the contents of the specified dynamic frame. +The command may either be a declaration, for example \verb/style=large/ +which will set the contents of all the dynamic frames in a +large font, or it can be a command that takes a single argument, +for example \verb/style=textbf/ +which will make the text for all the dynamic frames come out in +bold. To unset a style, do \verb/style=none/. + +\end{description} + +\section{Miscellaneous} + +\subsection{Page Layout} + +The \sty{flowfram} package has the package option \texttt{draft} +which will draw the {bounding boxes} for +each frame defined. At the bottom right of each +bounding box (except for the bounding box denoting the +typeblock), a marker will be shown to indictate the type +of frame, its IDN and its IDL. + +You can see the layout for the current page (irrespective of +whether or not the \texttt{draft} option has been set) using +the command:\newline +\cmdname{flowframeshowlayout} + +The headers and footers will appear as usual (but will not +be shown in draft mode), according to the format given by +\cmdname{pagestyle}. + +\subsection{Frame Stacking Order} + +The material on each page is placed in the following order: +\begin{enumerate} +\item Each static frame defined for that page in ascending +order of IDN. + +\item Each flow frame defined for that page in ascending +order of IDN. + +\item Each dynamic frame defined for that page in ascending +order of IDN. + +\item {Bounding boxes} if the \texttt{draft} +package option has been used. +\end{enumerate} + +This ordering can be used to determine if you want something +to overlay or underlay everything else on the page. + +\subsection{Prematurely Ending a Flow Frame} + +You can force text to move immediately to the next defined +flow frame using one of the standard \LaTeX\ page breaking commands +which work in an analogous way to the way they +work in standard two column mode. + +The command \cmdname{framebreak} is provided for situations +where a paragraph spans two flow frames +of different widths, as \TeX's output routine does not +adjust to the new value of \cmdname{hsize} until the last +paragraph of the previous frame has ended. As a +result, the end of the paragraph at the beginning of the new +flow frame retains the width of the previous flow frame. + +If you want to start a new page, rather than simply move to the +next frame, use the command\newline +\cmdname{finishthispage}. + +\subsection{Floats} + +Since floats (such as figures and tables) can only go in +{flow frames}, this package provides +the additional environments: +\env{staticfigure} and +\env{statictable} which can be used in static frames +and dynamic frames. Unlike their \env{figure} and +\env{table} counterparts, they are fixed in place, and +so do not take an optional placement specifier. The +\cmdname{caption} and \cmdname{label} commands can +be used within \env{staticfigure} and \env{statictable} as +usual. + +The standard \env{figure} and \env{table} commands will +behave as usual in the flow frames, but their starred versions, +\env{figure*} and \env{table*} behave no differently +from \env{figure} and \env{table}. + +\subsection{Global Values} + +The following macros can be changed using \cmdname{renewcommand}: + +\begin{itemize} +\item \cmdname{setffdraftcolor} + +This sets the colour of the bounding box +when it is displayed in draft mode. + +\item +\cmdname{setffdrafttypeblockcolor} + +This sets the colour of +the bounding box of the typeblock when it is displayed +in draft mode. + +\item \cmdname{fflabelfont} + +This sets the font size for the bounding box markers in +draft mode. + +\end{itemize} + +The following are lengths, which can be changed using +\cmdname{setlength}: + +\begin{itemize} +\item \cmdname{fflabelsep} + +This is the distance from the right hand side of the +bounding box at which to place the bounding box marker. + +\item \cmdname{flowframesep} + +This is the gap between the text of the frame and +its border, for the standard border types. + +\item \cmdname{flowframerule} + +This is the width of the frame's border, if using +a border given by a frame making command that uses \cmdname{fboxsep} +to set its border width. + +\item \cmdname{columnsep} + +This is the horizontal distance between flow frames when using one of the +\cmdname{Ncolumn} type of commands + +\item \cmdname{vcolumnsep} + +This is the vertical distance between the flow frames and the static or +dynamic frame when using one of the \cmdname{Ncolumntop} type of commands. +\end{itemize} + +\end{document} -- cgit v1.2.3