创建子段落

创建子段落

我想创建一个subsubparagraph标题(为了符合 phd 格式指南)。我复制了代码article.cls,并将所有内容都设置为“较低”。但是,当我这样做时,尽管存在subsubparagraph,但它会打印两次标题。

平均能量损失

\documentclass{article}
\makeatletter
\newcounter{subsubparagraph}[subparagraph]
\renewcommand\thesubsubparagraph{\thesubparagraph.\@arabic\c@subsubparagraph}
\newcommand\subsubparagraph{\@startsection{subsubparagraph}{6}{\parindent}%
                                       {3.25ex \@plus1ex \@minus .2ex}%
                                       {-1em}%
                              {\normalfont\normalsize\bfseries}}
\newcommand*\l@subsubparagraph{\@dottedtocline{6}{10em}{5em}}
\makeatother

\begin{document}
\paragraph{Foo}
\subparagraph{Bar}
\subsubparagraph{Foo bar!!!}

\end{document}

定义子段落时看到重复

需要subsubparagraph具备 的所有属性subparagraph,并可能带有额外的缩进(目前我已省略了缩进以使新代码尽可能接近 中的代码article.cls

答案1

无需加载新的包。

为了定义一个新的部分单元“foo”,您需要:

  1. 命令\foo,通常定义为\@startsection
  2. 一个计数器,通常具有相同的名称,foo
  3. 用于设置目录中条目的命令,\l@foo
  4. 可能设置标记的命令,\foomark

所以完整的定义是

\makeatletter
\newcounter{subsubparagraph}[subparagraph]
\renewcommand\thesubsubparagraph{%
  \thesubparagraph.\@arabic\c@subsubparagraph}
\newcommand\subsubparagraph{%
  \@startsection{subsubparagraph}    % counter
    {6}                              % level
    {\parindent}                     % indent
    {3.25ex \@plus 1ex \@minus .2ex} % beforeskip
    {-1em}                           % afterskip
    {\normalfont\normalsize\bfseries}}
\newcommand\l@subsubparagraph{\@dottedtocline{6}{10em}{5em}}
\newcommand{\subsubparagraphmark}[1]{}
\makeatother

答案2

使用titlesec包:

\documentclass{article}

\usepackage{titlesec}
\titleclass{\subsubparagraph}{straight}[\subparagraph]
\newcounter{subsubparagraph}
\renewcommand{\thesubsubparagraph}{\Alph{subsubparagraph}}
\titleformat{\subsubparagraph}[runin]{\normalfont\normalsize\bfseries}{\thesubsubparagraph}{1em}{}
\titlespacing*{\subsubparagraph} {\parindent}{3.25ex plus 1ex minus .2ex}{1em}

\begin{document}
\paragraph{Foo}
\subparagraph{Bar}
\subsubparagraph{Foo bar!!!}

\end{document}

如果由于某种原因你添加\setcounter{tocdepth}{6}subsubparagraph目录中并包含hyperref包,则需要包含

\makeatletter
\def\toclevel@subsubparagraph{6}
\makeatother

为了能够正确制作pdf索引。

相关内容