多个子部分的新命令

多个子部分的新命令

我正在写一份大学报告,我必须回答一系列按要点划分的主题。我想获得像这样的标题 1.1.a,b,c。我编写了此命令来生成引用多个要点的单个子节:

\documentclass{article}
\usepackage{lipsum}
\newcount\tmp

\newcommand{\multisub}[2][1]{%
\vspace{1.2\baselineskip plus .35\baselineskip minus.07\baselineskip}%
%\vspace{.5em}%
{\bf\thesubsection.%
\tmp=0%
\advance\tmp by 2%
%#1 max num
%#2 text
\loop%
    \advance\tmp by 1%
    \addtocounter{subsubsection}{1}%
    \alph{subsubsection},%
    \ifnum \tmp<#1%
\repeat%
\addtocounter{subsubsection}{1}%
\alph{subsubsection} #2\\%
}%
%    \vspace{.5em}%
\vspace{.8\baselineskip plus .07\baselineskip}%
{\normalfont\normalsize\bfseries}%
}%

\begin{document}
\section{First section}
\subsection{First subsection}
\lipsum[1]
\multisub[2]{First two points}
\lipsum[2]
\end{document}

结果如下:

在此处输入图片描述

如您所见,它具有我想要的形式,但是小节标题后的间距是错误的,就好像标题后的空格仅出现在第一行文本之后。

我该如何解决?我该如何将这个新子部分添加到目录中?

提前致谢。

答案1

您可以通过以下方式定义一个\multisubsection命令来同时处理更多子部分。

\documentclass[oneside]{book} % oneside just to make a sensible picture
\usepackage{xparse}
\usepackage{kantlipsum}

\newcommand{\normalthesubsection}{%
  \renewcommand{\thesubsection}{\thesection.\alph{subsection}}%
}
\normalthesubsection

% add space for the composite numbers, adapt to your need
% increasing or decreasing 5em
\makeatletter
\renewcommand\l@subsection{\@dottedtocline {2}{3.8em}{5em}}
\makeatother

\ExplSyntaxOn
\NewDocumentCommand{\multisubsection}{mO{#3}m}
 {% #1 = number of subsections to span
  % #2 = optional short title
  % #3 = title
  \tl_clear:N \l_tmpa_tl
  \int_step_inline:nn { #1 - 1 }
   {
    \stepcounter{subsection}
    \tl_put_right:Nx \l_tmpa_tl { \alph{subsection}, }
   }
  \renewcommand{\thesubsection}{\thesection.\l_tmpa_tl\alph{subsection}}
  \subsection[#2]{#3}
  \normalthesubsection
 }
\ExplSyntaxOff

\begin{document}

\frontmatter

\tableofcontents

\mainmatter

\chapter{Title}

\section{Title}

\subsection{First point}

\kant[1]

\multisubsection{3}{Three more points}\label{a}

\ref{a}\kant[2]

\subsection{Another point}

\end{document}

在此处输入图片描述

\multisubsection{<n>}[Title for the toc]{Title in the document}受支持。

它是如何工作的?当\multisubsection调用 a 时,我将相关计数器的步进量比参数指定的少一次,收集 中的“数字”(在本例中为字母)后跟逗号\l_tmpa_tl;然后我像往常一样重新定义为 ,但在最后一个数字之前\thesubsection插入;后台调用的命令将执行最后的步进并打印完整数字。最后, 的标准含义得以恢复。\l_tmpa_tl\subsection\thesubsection

相关内容