我想创建一个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”,您需要:
- 命令
\foo
,通常定义为\@startsection
- 一个计数器,通常具有相同的名称,
foo
- 用于设置目录中条目的命令,
\l@foo
- 可能设置标记的命令,
\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索引。