我正在写一份大学报告,我必须回答一系列按要点划分的主题。我想获得像这样的标题 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