根據條件選擇文檔類別

根據條件選擇文檔類別

我想根據值選擇文檔類。例如,這樣的事情

\newcommand{\mode}{0}

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

有辦法做這樣的事情嗎?

答案1

我修改了我的 MWE,以回答一些關於選擇性文件類別遇到的困難的批評。在 MWE 中,如果我選擇該類article,我也會重新定義其他內容(在本例中\chapter)以使其與book本例中的備用類別相容。

透過這種擴展方法,如果花時間重新定義處理自訂巨集的邏輯方法,則可以在自訂類別和標準類別之間快速切換。

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

如果想要一個更具描述性的多重字元模式名稱,那麼可以這樣做:

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

答案2

可能:是的,但無論如何大多數時候都需要手動更改。

罪魁禍首是不同的類別提供不同的功能,其中一些功能是相互矛盾的,即無論如何都必須做出條件來選擇正確的設定。

\newcommand{\mode}{1}

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


\begin{document}


Foo

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

這是一種方法\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}

更新- 和etoolbox

\RequirePackage{...}甚至可以在之前使用,\documentclass但不是\usepackage{...}——在某些情況下這可能確實是必要的,但一般來說我不推薦這個過程。

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

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


\begin{document}

\tableofcontents

\section{Foo}
\end{document}

相關內容