Wählen Sie die Dokumentklasse entsprechend der Bedingung

Wählen Sie die Dokumentklasse entsprechend der Bedingung

Ich möchte die Dokumentklasse nach einem Wert auswählen. Zum Beispiel so etwas

\newcommand{\mode}{0}

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

Gibt es eine Möglichkeit, so etwas zu tun?

Antwort1

Ich habe mein MWE überarbeitet, um einige der Kritikpunkte bezüglich der Schwierigkeiten zu beantworten, die durch die Verwendung einer auswählbaren Dokumentklasse entstehen. Wenn ich im MWE die articleKlasse auswähle, definiere ich auch andere Dinge neu (in diesem Fall \chapter), um sie mit der alternativen Klasse kompatibel zu machen, die bookin diesem Fall ist.

Mit einem derart erweiterten Ansatz kann man schnell zwischen benutzerdefinierten und Standardklassen wechseln, wenn man sich die Zeit nimmt, eine logische Möglichkeit zum Umgang mit den benutzerdefinierten Makros neu zu definieren.

\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}

Wenn Sie einen aussagekräftigeren Modusnamen mit mehreren Zeichen wünschen, können Sie Folgendes tun:

\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}

Antwort2

Möglich: ja, aber es ist trotzdem meistens notwendig, es manuell zu ändern.

Der Hauptgrund hierfür liegt darin, dass unterschiedliche Klassen unterschiedliche Funktionen bereitstellen und diese teilweise im Widerspruch zueinander stehen, d. h. man muss Bedingungen stellen, um anschließend trotzdem die richtigen Einstellungen auszuwählen.

\newcommand{\mode}{1}

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


\begin{document}


Foo

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

Hier ist ein Weg mit\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}

Aktualisieren-- mitetoolbox

Die Verwendung ist \RequirePackage{...}auch schon vorher möglich \documentclass, jedoch nicht \usepackage{...}– es gibt Fälle, in denen dies wirklich notwendig sein kann, aber im Allgemeinen empfehle ich dieses Verfahren nicht.

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

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


\begin{document}

\tableofcontents

\section{Foo}
\end{document}

verwandte Informationen