假设我有自己的柜台
\newcounter{x}
\setcounter{x}{0}
现在我想根据 的值开始一个新的“部分” x
。例如,如果x==-1
我想要 \part
,并且如果x==0
那么它将是\chapter
,并且如果x==1
它将是\section
等等。
我不想每次都写这样的内容(甚至不知道它是否是有效的语法)
\ifnum \value{x} \eq -1
\part
\else
\ifnum \value{x} \eq 0
\chapter
...
\fi
\fi
...
我只想写
\makeSectionTypeBasedOnThisValue{x}{title of the section of chapter is here}
此命令将根据 的值映射到正确的命令x
。我将确保x
始终介于 -1 和 5 之间,因为这些是有效值。我使用的是书本风格。
我有理由这样做。(简而言之,我正在构建我的大型乳胶文档树,将它们组合成一个文档,并且我希望能够从任何级别开始构建它。因此,根据我在树中开始构建的位置,部分编号会有所不同。有时同一级别可能是,而\section
其他时候该级别可能变成\subsection
。所以我不想在 Latex 文件中硬编码\section
或\chapter
命令,但我希望这些取决于文件在树中的级别。计数器将代表我从树中开始构建的级别)
有没有简单的方法可以做到这一点?我是 Latex 的新手。
答案1
使用\ifcase
,您可以有选择地逐步浏览可能的数值:
\documentclass{report}
\newcounter{myseccntr}
\newcommand{\makeSectionTypeBasedOnThisValue}[1]{%
\setcounter{myseccntr}{\numexpr#1+1}%
\ifcase\value{myseccntr}% -1
\expandafter\part
\or % 0
\expandafter\chapter
\or % 1
\expandafter\section
\or % 2
\expandafter\subsection
\or % 3
\expandafter\subsubsection
\or % 4
\expandafter\paragraph
\or % 5
\expandafter\subparagraph
\fi%
}
\begin{document}
\tableofcontents
\makeSectionTypeBasedOnThisValue{-1}{Part}
\makeSectionTypeBasedOnThisValue{0}{Chapter}
\makeSectionTypeBasedOnThisValue{1}{Section}
\makeSectionTypeBasedOnThisValue{2}{Subsection}
\makeSectionTypeBasedOnThisValue{1}{Section}
\makeSectionTypeBasedOnThisValue{-1}{Part}
\makeSectionTypeBasedOnThisValue{0}{Chapter}
\makeSectionTypeBasedOnThisValue{1}{Section}
\end{document}