我正在尝试使用回忆录类创建一个小节标题。问题如下:
我想为我的子部分显示一个标题。文本应在子部分标题之后立即开始,作为新行,而不是新段落。
Memoir 将长度设置为标题后的垂直空间
afterskip + \parskip(of heading font) + \baselineskip(of text font)
。要解决这个问题,将 afterskip 设置为 -parskip 是可行的。但是,如果 afterskip 变为负值,标题将变成连字符样式。
我使用以下最小示例进行了测试:
\documentclass[11pt]{memoir}
\parskip9pt
\parindent0pt
\setcounter{secnumdepth}{2}
\setbeforesubsubsecskip{9pt}
\setaftersubsubsecskip{1pt}
\setsubsubsecheadstyle{\scshape}
\begin{document}
\subsubsection{lorem ipsum}
lorem ipsum
lorem ipsum
\end{document}
我以前用过 titlesec 包,它很棒,直到我尝试使用 \titleref... 这个 \titleref 不适用于此包,仅适用于章节。如果我不使用 titlesec,章节的引用也很好用。
答案1
这是一个临时修复
\makeatletter
\renewcommand{\@startsection}[6]{%
\@nameuse{#1block}%
\ifraggedbottomsection\if@nobreak\else
\vskip\z@\@plus\bottomsectionskip
\penalty\z@
\vskip\z@\@plus -\bottomsectionskip
\fi\fi
\def\m@msecn@me{#1}%
\if@noskipsec \leavevmode \fi
\par
\@tempskipa #4\relax
\@afterindenttrue
\ifdim \@tempskipa <\z@
\@tempskipa -\@tempskipa \@afterindentfalse
\fi
\if@nobreak
\everypar{}%
\else
\addpenalty\@secpenalty%
\addvspace\@tempskipa
\addvspace{-\parskip}% <--- added
\fi
\@ifstar
{\@ssect{#3}{#4}{#5}{#6}}%
{\@trplargoom{\M@sect{#1}{#2}{#3}{#4}{#5}{#6}}}}
\def\@xsect#1{%
\@tempskipa #1\relax
\ifdim \@tempskipa>\z@
\par
\nobreak
\vskip \@tempskipa
\vskip-\parskip% <--- added
\@afterheading
\else
\@nobreakfalse
\global\@noskipsectrue
\everypar{%
\if@noskipsec
\global\@noskipsecfalse
{\setbox\z@\lastbox}%
\clubpenalty\@M
\begingroup \@svsechd \endgroup
\unskip
\@tempskipa #1\relax
\hskip -\@tempskipa
\else
\clubpenalty \@clubpenalty
\everypar{}%
\fi}%
\fi
\ignorespaces}
\makeatother
答案2
我刚刚删除了 \parskip 对章节间距的影响,可能还有一个想法可以在分段结构中引入它
尚未这样做的一个原因是,在大多数情况下,没有 parindent 和非零 parskip 的文档对于交流来说不是特别好,特别是如果文档有许多列表或显示的数学运算。