Titlespacing 命令对 \subsection 不起作用,并且还导致 \section 出现错误

Titlespacing 命令对 \subsection 不起作用,并且还导致 \section 出现错误

我正在使用这些包

\documentclass{amsart} 
\usepackage{amsmath}

它们不会在章节标题和后续文本之间留出垂直空间。

因此我尝试使用 titlesec 包的 titlespacing 命令。

这里说

 \titlespacing{<command>}{<left>}{<before-sep>}{<after-sep>}
where:

<left> increases the left margin.
<before-sep> is the vertical space before the title.
<after-sep> is the separation between title and non-sectioning text.

所以我尝试

\usepackage{titlesec}
\titlespacing{\subsection}{0em}{0em}{0.5em}

但我得到了错误

Undefined control sequence.
<argument> ...on\endcsname \protect \@secnumpunct 

在线

\section{main}

\subsection{subsection title}

我不明白错误是什么,以及为什么它会在 触发\section,而我只是想修改\subsection

另外,文档在哪里?我花了半个小时搜索,什么也没找到。

以下是完整的代码

\documentclass{amsart} 
\usepackage{amsmath}
\usepackage{titlesec} % <- This lines try to modify the subsection
\titlespacing{\subsection}{0em}{0em}{0.5em} % <- This lines try to modify the subsection


\begin{document}

\section{Main section}% <- This line triggers the error
text main section is on new line

\subsection{subsection title} % <- This line triggers the error
I want this text separated on a new line

\end{document}

答案1

你得到

! Undefined control sequence.
<argument> ...on\endcsname \protect \@secnumpunct

l.9 \section{Main section}
                          % <- This line triggers the error
?
! Undefined control sequence.
<argument> ...on\endcsname \protect \@secnumpunct

l.12 \subsection{subsection title}
                                   % <- This line triggers the error
?

这仅意味着一件事:titlesec与不兼容amsart

为什么?因为amsart重新定义了\@startsectiontitlesec期望命令的内核版本。而且因为在 AMS 他们不希望用户修改样式。

\documentclass{amsart} 
\usepackage{amsmath}

\makeatletter
% here the original definition
%\def\subsection{\@startsection{subsection}{2}%
%  \z@{.5\linespacing\@plus.7\linespacing}{-.5em}%
%  {\normalfont\bfseries}}
\def\subsection{\@startsection{subsection}{2}%
  \z@{-.5\linespacing\@plus-.7\linespacing}{1sp}%
  {\normalfont\bfseries}}
\makeatother

\begin{document}

\section{Main section}
The text main section is on a new line

\subsection{Subsection title}
I want this text separated on a new line

\end{document}

在此处输入图片描述

如果希望标题后的第一行缩进,请将相关代码更改为

\def\subsection{\@startsection{subsection}{2}%
  \z@{.5\linespacing\@plus.7\linespacing}{1sp}%
  {\normalfont\bfseries}}

在此处输入图片描述

答案2

我通过在小节标题末尾添加“幻影”文本,然后进行段落跳转来“解决”了这个问题。

\subsection{subsection title}\phantom{dummy_text}\par\samepage

编辑:在 egreg 注释之后,我\samepage在行尾添加了内容,以防止标题与不同页面上的下一行分开。

相关内容