19

I know that there are lots of similar question, but none of those have helped me so far - and I did google a lot. So my question is: I have a document class (emulateapj) which accepts a few options.

In my document, I want to have a conditional test which checks if some option (for example onecolumn) is set, and if so, to do a few things like changing font size or line separation.

Something like

\IfSubStr{@classoptionslist}{onecolumn}{true}{false}%

Just gives me always false.

  • 2
    Welcome to TeX.sx! Please add a minimal working example (MWE) that illustrates your problem. It will be much easier for us to reproduce your situation and find out what the issue is when we see compilable code, starting with \documentclass{...} and ending with \end{document}. – Marco Daniel Apr 23 '13 at 16:35
  • Is the option defined as a bool? – Marco Daniel Apr 23 '13 at 16:36
26

The kernel provides \@ifclasswith:

\documentclass[onecolumn]{emulateapj}

\makeatletter
\@ifclasswith{emulateapj}{onecolumn}{\typeout{ONECOLUMN}}{\typeout{NO ONECOLUMN}}
\@ifclasswith{emulateapj}{revtex4}{\typeout{REVTEX4}}{\typeout{NO REVTEX4}}

\makeatother

The output on the terminal is

ONECOLUMN
NO REVTEX4

The \@ifclasswith command is only available before \begin{document}, so if you want to set up your own conditional you have to do it in the preamble:

\makeatletter
\newif\ifhbonecolumn
\@ifclasswith{emulateapj}{onecolumn}{\hbonecolumntrue}{\hbonecolumnfalse}
\makeatother

\newcommand{\foo}{\ifhbonecolumn fooone\else footwo\fi}
  • This is only one option if you use no keyval package. – Marco Daniel Apr 23 '13 at 18:10
  • Great suggestion,\@ifclasswith. clsguide doesn't say anything about it, where is it mentioned? – Arch Stanton Jan 12 '16 at 14:10
  • @ArchStanton In source2e.pdf – egreg Jan 12 '16 at 15:06

Your Answer

By clicking “Post Your Answer”, you agree to our terms of service, privacy policy and cookie policy

Not the answer you're looking for? Browse other questions tagged or ask your own question.