Redefining tabular

tomprice's picture

I redefined the tabular environment in a typesetting specification package I wrote. The change works as it should in the body of the document. However, the maketitle command (article class) uses tabular to typeset authors, and the new definition typesets multiple authors in a single column. Is there a way to avoid executing the modified tabular code until after the completion of the maketitle command? Ideally, this should be done in my specification package. By the way, the new definition should compute the width of the typeset tabular environment and then execute the original tabular environment. As an alternative to solving the above problem, I could use a new way of computing the width of a tabular environment.

As a suggestion since I don't

As a suggestion since I don't have anything to test, what you can try is to define your new tabular with a new name in your package file, and then at the beginning or the body of the document add an encapsulated TeX field that uses a \let statement to change the default tabuluar to the new tabular.  That way the default tabular is used for the title page and the new tabular is used in the body of the document, with the definition still in the package file.

tomprice's picture

Thank you, George, for your

Thank you, George, for your suggestion. I can not determine why the code changes the formatting of the tabular environment in the maketitle instance. I copied the code below.

\let\tabular@save\tabular
\let\endtabular@save\endtabular
\newif\ifoutertabular \outertabulartrue
\newif\ifinnertabular \innertabularfalse
\def\tabular{%
\ifoutertabular\global\outertabularfalse
\def\tempExp{\setbox\sitexbox=\hbox\bgroup}%
\expandafter\tempExp\else\global\innertabulartrue\fi
\tabular@save
}
\def\endtabular{\endtabular@save
\ifinnertabular\global\innertabularfalse\else\global\outertabulartrue
\egroup\unhcopy\sitexbox
\ifdim\wd\sitexbox<\wdsitexboxmin \xdef\wdsitexbox{\wdsitexboxmin}\else
\xdef\wdsitexbox{\the\wd\sitexbox}\fi\\[6pt]\fi
}
\expandafter\let\expandafter\tabular@star@save\expandafter=\csname tabular*\endcsname
\expandafter\let\csname endtabular*\endcsname\endtabular
\expandafter\def\csname tabular*\endcsname#1{%
\ifoutertabular\global\outertabularfalse
\def\tempExp{\setbox\sitexbox=\hbox\bgroup}%
\expandafter\tempExp\else
\global\innertabulartrue\fi\tabular@star@save{#1}%
}

tomprice's picture

I noticed that additional

I noticed that additional discussion concerning this problem is posted in my Ignore empty environment post.