尝试重新定义 \subsection

尝试重新定义 \subsection

我想重新定义 \subsection。原因有两个:1) 它前面似乎有一个内置的 \parskip,这对我来说太浪费空间了;2) 我想用附加文本继续这一行。我试过这个:

 \renewcommand{\subsection}[1]{\texttt{#1}}

并且这是有效的,除非我使用 \subsection* 来防止编号。

另一个问题:首先,网上有没有一个地方可以让我找到 \subsection 是如何定义的。

谢谢

答案1

我认为我们的方法有些偏颇。

1)它前面似乎有一个内置的 \parskip,这对我来说丢失了太多的空间;

没有 parskip,是另一种长度(见下文)

2) 我希望在此行中继续添加附加文字。

\paragraph这是和的通常行为\subparagraph

在标准 LaTeX 中,\section所有较低级别的分段命令都是根据内部 LaTeX 通用命令定义的,如您在正文中\@startsection看到的命令所示。\meaning\section

book课堂上(10pt),你会得到类似的内容:

 \long macro:->\@startsection {section}{1}{\z@ }{-3.5ex \@plus
-1ex \@minus -.2ex}{2.3ex \@plus .2ex}{\normalfont \Large \bfseries }

你需要的是:

  1. 将第一个跳过(第四个参数)减少到类似于 {-1.5ex \@plus-0.7ex \@minus -.2ex}(保留胶水和符号)
  2. 用类似下面的方法改变第二个 skip (第五个参数)的符号{-2ex \@plus -.1ex}

可以使用\renewcommandtitlesec使用包或使用来 etoolbox完成 patchcmd

\patchcmd{\section}{{-3.5ex \@plus -1ex \@minus -.2ex}}{{-1.5ex \@plus-0.7ex \@minus -.2ex}}{\typeout{smaller skip OK}}{\typeout{smaller skip  failed}}%
\patchcmd{\section}{{2.3ex \@plus .2ex}}{{-2ex \@plus -.1ex}}{\typeout{same line OK}}{\typeout{same line failed}}%

编辑:修补\subsection 用第三个参数替换\patchcmd第二个参数。显然,标准类中定义的 skip\subsection小于。因此必须在输出中读取\section的第二个参数。\patchcmd\meaning\subsection

修补的一个例子\subsection是(同样针对书籍,10pt):

\patchcmd{\subsection}{{-3.25ex\@plus -1ex \@minus - .2ex}}{{-1.5ex \@plus-0.7ex \@minus -.2ex}}{\typeout{spacing subsec OK}}{\typeout{spacing subsec failed}}%
\patchcmd{\subsection}{{1.5ex \@plus .2ex}}{{-2ex \@plus -.1ex}}{\typeout{same line subsec f}}{\typeout{same line subsec failed}}%

导致(修补\section\subsection):

在此处输入图片描述

相关内容