我想要用两个不同的模板来编译一些文件,一个模板具有章节>章节>小节的层次结构,另一个模板具有章节>小节>小子节的层次结构。
为此,我尝试定义新命令来充当该级别的别名,例如:
\newcommand{\level1}[1]{\chapter{#1}}
\newcommand{\level2}[1]{\section{#1}}
\newcommand{\level3}[1]{\subsection{#1}}
在正文中我将调用 \level1{title}。这样,我只需更改这 3 行即可从模板中进行更改。
我使用类似这样的行:\newcommand{\secref}[1]{Section \ref{#1}}
,但带有\chapter
等的行不起作用。
关于如何解决这个问题我有什么想法吗?
答案1
这可能就是您正在寻找的:
\documentclass{report}
\newcommand\level[1]{
\begingroup\ifcase#1\relax
\GenericError{}{\string\level\space given an invalid argument}{}{}
\or\aftergroup\chapter
\or\aftergroup\section
\or\aftergroup\subsection
\or\aftergroup\subsubsection
\or\aftergroup\paragraph
\or\aftergroup\subparagraph
\else\GenericError{}{\string\level\space given an invalid argument}{}{}
\fi\endgroup
}
\begin{document}
\level1{CHCHCH}
\level2{SESESE}
\level2{SESESESE}
\level3{SUBSUBSUB}
\level4{subsubsub}
\end{document}
\ifcase
我们在参数上使用 TeX 原语。\aftergroup
构造是必要的,以便分段命令是宏发出的最后一个命令。\GenericError
如果输入不正确,我们使用 LaTeX 来生成错误。
在课堂上,你可能在 之前book
添加。另一方面,在课堂上,你应该注释掉。\or\part
\or\chapter
article
\or\chapter