[texhax] RefMan refart class table fullpage maxipage

bnb at ams.org bnb at ams.org
Fri Sep 6 21:38:51 CEST 2013


i've just spent some head-scratching time
trying to figure out why the example file
you sent *doesn't* throw an error, because
it should have.

    I just spent a head-scratching day figuring out what this message means

    ! LaTeX Error: Not in outer par mode.

what this means is that floating environments,
e.g. {figure} and {table}, shouldn't be nested
within a local group or another environment.

    Here is an example of the correct usage:
    
    \documentclass{refart}
    \title{\jobname}\author{R.J. Fehd}\date{draft of \today}
    \usepackage{fancyvrb,hyperref}
    \begin{document}\maketitle
    \section*{Abstract}This document is a demonstration of the
    \href{http://www.ctan.org/pkg/refman}{Reference Manual}
    \texttt{refart} class with illustrations of the correct usage of:
    \begin{itemize}
    \item table maxipage tabular
    \item fullpage table tabular
    \end{itemize}
    
    Note: Placing a table with a maxipage generates an error:
    
    \begin{verbatim}
    \begin{maxipage}
    \begin{table}[h]\caption{This does not work!}
    \begin{tabular}{lllllllllllllll}
    This&is&a&very&wide&table&with&many&columns&used&as&a&demonstration
    \end{tabular}
    \end{table}
    \end{maxipage}
    \end{verbatim}
    
    The error is:
    \begin{verbatim}
    ! LaTeX Error: Not in outer par mode.
    
    l.10 \begin{table}[h]
                         \caption{Whoa! fullpage worked like this!}
    \end{verbatim}
    
    
    \hrulefill
    
    \tableofcontents\listoftables
    
    \section{Table contains maxipage}
    This section has a table containing a tabular inside a maxipage.
    
    %\maxipagerulefalse %turns off hrulefill before and after maxipage
    
    \begin{table}[h]\caption{Maxipage containing tabular}
    \begin{maxipage}
    \begin{tabular}{lllllllllllllll}
    This&is&a&very&wide&table&with&many&columns&used&as&a&demonstration
    \end{tabular}
    \end{maxipage}
    \end{table}

this works because the {table} environment
is the "outer" wrapper.  it will move
("float") as a unit as the situation requires.

    The next section is on the next page.
    
    \hrulefill
    
    \begin{fullpage}%generates \newpage
    \section{Fullpage contains Table}
    \begin{table}[h]\caption{Fullpage containing table and tabular}
    \begin{tabular}{lllllllllllllll}
    This&is&a&very&wide&table&with&many&columns&used&as&a&demonstration\\
    \end{tabular}
    \end{table}

this *shouldn't* work, since the {table}
will try to move around independently of
the {fullpage} and will be "trapped".
(that's what it means to not be in "outer
par mode".)  however, for some unknown
reason, when i compiled your file, it
didn't throw an error, but only ended
up with ugly output.  (the most likely
explanation is that i'm using tex live
2012 unaltered from the original
installation just after its release,
and something in this file depends on
a newer version.)

the usual recommendation in this situation
is to abandon the floating environment (you
want the table "here" in any event), and
instead use a separate package to get the
caption -- i think captionof and ccaption
are the usual recommendations (i haven't
used either).  captions generated using
one of these packages will behave like the
default captions, being listed in the list
of whatevers, and linkable with hyperref.

    Note the \texttt{hrulefill} extends across the whole page.
    
    \hrulefill
    
    \end{fullpage}%continued on next page: normal layout
    
    \section{Last Page}
    This page intentionally left blank to show \texttt{newpage} is unneeded.
    
    \hrulefill
    
    \end{document}

looks like an interesting and attractive
format for a reference manual.  good luck
with it.
						-- bb


More information about the texhax mailing list