我想重新定义 \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.5ex \@plus-0.7ex \@minus -.2ex}
(保留胶水和符号) - 用类似下面的方法改变第二个 skip (第五个参数)的符号
{-2ex \@plus -.1ex}
可以使用\renewcommand
、titlesec
使用包或使用来 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
):