Elija clase de documento según la condición

Elija clase de documento según la condición

Me gustaría elegir la clase de documento según un valor. Por ejemplo, algo como esto

\newcommand{\mode}{0}

if (mode is 0)
then \documentclass{...}
else if (mode is 1)
then \documentclass{---}
fi

¿Hay alguna manera de hacer tal cosa?

Respuesta1

Revisé mi MWE para responder a algunas de las críticas sobre las dificultades encontradas al tener una clase de documento seleccionable. En el MWE, si elijo la articleclase, también redefino otras cosas (en este caso \chapter) para que sea compatible con la clase alternativa, que es booken este caso.

Con un enfoque tan extendido, se puede alternar rápidamente entre clases personalizadas y estándar, si se toma el tiempo para redefinir una forma lógica de manejar las macros personalizadas.

\def\mode{1}
\if 0\mode
  \documentclass{article}
  \let\chapter\section
\else
  \documentclass{book}
\fi
\usepackage{lipsum}
\begin{document}
\chapter{This is my chapter}
\lipsum[1-10]
\end{document}

Si uno quiere un nombre de modo de varios caracteres más descriptivo, entonces podría hacer esto:

\def\mode{ArticleMode}
\def\ArticleMode{%
  \documentclass{article}
  \let\chapter\section
}
\def\BookMode{%
  \documentclass{book}
}
\csname\mode\endcsname
\usepackage{lipsum}
\begin{document}
\chapter{This is my chapter}
\lipsum[1-10]
\end{document}

Respuesta2

Posible: sí, pero de todos modos es necesario cambiarlo la mayoría de las veces a mano.

El principal culpable es que diferentes clases proporcionan diferentes características y algunas de ellas son contradictorias entre sí, es decir, uno tiene que hacer condicionales para elegir la configuración correcta después de todos modos.

\newcommand{\mode}{1}

\ifnum\mode=0
\documentclass{article}
\else
\documentclass{book}
\fi


\begin{document}


Foo

\ifnum\mode>0
\chapter{Foo}
\fi
\end{document}

Aquí hay una manera con\ifcase

\newcommand{\mode}{3}

\ifcase\mode
\documentclass{article}
\or \documentclass{report} % 1
\else
\documentclass{book} % Default 
\fi


\begin{document}

\tableofcontents

\ifnum\mode>0
\chapter{Foo}
\else
\section{Foo}
\fi
\end{document}

Actualizar-- conetoolbox

Es posible usarlo \RequirePackage{...}incluso antes, \documentclasspero no \usepackage{...}; hay casos en los que esto podría ser realmente necesario, pero en general no recomiendo este procedimiento.

\RequirePackage{etoolbox}
\def\mode{artmode}

\ifstrequal{\mode}{artmode}{%
  \documentclass{article}
}{%
  \documentclass{report}
}


\begin{document}

\tableofcontents

\section{Foo}
\end{document}

información relacionada