使用新命令为章节指定别名

使用新命令为章节指定别名

我想要用两个不同的模板来编译一些文件,一个模板具有章节>章节>小节的层次结构,另一个模板具有章节>小节>小子节的层次结构。

为此,我尝试定义新命令来充当该级别的别名,例如:

\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\chapterarticle\or\chapter

相关内容