自己的部分命令工作编号和未编号

自己的部分命令工作编号和未编号

我使用以下命令使章节标题带有字幕

\newcommand{\Section}[2]{\section[#1]{#1\\\small »#2«}}

但现在我只能有编号部分,因为 * 对我自己的命令不起作用。我怎样才能让我的命令在有星号和没有星号的情况下双向工作?

答案1

这是定义 *-variants 的标准方法:

\makeatletter
\newcommand{\xyz}{\@ifstar\@xyzstar\@xyz}
\newcommand{\@xyzstar}<what to do when there's a *>
\newcommand{\@xyz}<what to do when there's not a *>
\makeatother

在你的情况下,可能是

\makeatletter
\newcommand{\Section}{\@ifstar\@Sectionstar\@Section}
\newcommand{\@Sectionstar}[2]{\section*{#1\\\small »#2«}}
\newcommand{\@Section}[2]{\section[#1]{#1\\\small »#2«}}
\makeatother

答案2

xparse包裹提供了一种在命令中加入星号的直观方法*。使用以下命令可以判断您是否使用带星号/无星号版本\IfBooleanTF

\documentclass{article}
\usepackage[T1]{fontenc}% http://ctan.org/pkg/fontenc
\usepackage{xparse}% http://ctan.org/pkg/xparse
\NewDocumentCommand{\Section}{s m m}{
  \IfBooleanTF{#1}%
    {\section*{#2\\\small \guillemotright #3\guillemotleft}}% Unnumbered section
    {\section[#2]{#2\\\small \guillemotright #3\guillemotleft}}% Numbered section
}
\begin{document}
\Section{First section}{first title}
\Section*{Second section}{second title}
\end{document}

在此处输入图片描述

答案3

最好全局控制章节编号。也就是说,在文档的任何地方使用非星号章节命令,然后使用命令指定要对哪些章节级别进行编号。

以下是操作方法。如果您放置

\setcounter{secnumdepth}{1}

在你的序言中,那么只有最高级别的部分才会被编号。

相关内容