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 article
clase, también redefino otras cosas (en este caso \chapter
) para que sea compatible con la clase alternativa, que es book
en 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, \documentclass
pero 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}