Testing whether a document has option "fleqn"

Hefferon, Jim S. jhefferon at smcvt.edu
Sat May 4 13:49:40 CEST 2019


Thank you, Herbert.  I should have thought of that.  However ..

\AtBeginDocument{\newenvironment{display}{%
  \@ifclasswith{fleqn}{%
    \trivlist \item \relax \hspace*{\mathindent}
    }{%
    \trivlist \centering \item \relax
    }
}{%
  \endtrivlist %
}}

still gives me 

! LaTeX Error: Can be used only in preamble.

See the LaTeX manual or LaTeX Companion for explanation.
Type  H <return>  for immediate help.
 ...                                              
                                                  
l.1582 \begin{display}

Jim

----------
... those dreadful hammers!
  --John Ruskin, 1851

________________________________________
From: Herbert Voss <Herbert.Voss at fu-berlin.de>
Sent: Saturday, May 4, 2019 0:14
To: texhax at tug.org
Subject: Re: Testing whether a document has option "fleqn"

Am 04.05.19 um 00:30 schrieb Hefferon, Jim S.:
> How can I test whether the document has the class option `fleqn`?  I want to have an environment that takes the place of center but that if required gives content that is left-aligned, as equations are left-aligned under fleqn.
>
> I had in mind something like this.  However this one gives `! LaTeX Error: Can be used only in preamble.`
>
> \newenvironment{display}{%
>     \@ifclasswith{fleqn}{
>        \trivlist \item \relax \hspace*{\mathindent}
>        }{
>        \trivlist \centering \item \relax
>      }}{
>      \endtrivlist
>      }
>
> I know that there are flags like \@fleqntrue and have spent some time trying toggle commands, etc, but been unable to hit on the right one.  A tip would really help me.

Try

\makeatletter
\AtBeginDocument{%
     \newenvironment{display}{%
         \@ifclasswith{fleqn}{
             \trivlist \item \relax \hspace*{\mathindent}
         }{
             \trivlist \centering \item \relax
     }}{
         \endtrivlist
}}
\makeatother

Herbert





More information about the texhax mailing list