节后间距

节后间距

我有一些subsubsection-titles 会断行,而有些则不会。这两种情况下标题后的间距不同。我目前正在使用很多软件包和东西(titlsec是其中之一),我试图找到一个可以重现该问题的 MWE:

\documentclass[twocolumn]{article}
\usepackage{lipsum}
\RequirePackage[explicit]{titlesec}

\titleformat{name=\subsubsection,numberless}
      {\normalsize\sffamily\bfseries}
      {}
      {0em}
      {\parbox[t]{\linewidth}{\raggedright#1}}
      [] 
 \titlespacing*{\subsubsection}{0pc}{1.7ex \@plus2pt \@minus1pt}{0pt}

\begin{document}

\subsubsection*{Some long long long long text that should break the line}
\lipsum[2]

\subsubsection*{some other text}
\lipsum[2]

\end{document}

有人知道为什么会出现这种奇怪的间距吗?

答案1

问题在于\parbox[t]这是不必要的。

\documentclass[twocolumn]{article}
\usepackage{lipsum}
\usepackage{titlesec}

\titleformat{name=\subsubsection,numberless}
  {\normalsize\sffamily\bfseries}
  {}
  {0em}
  {\raggedright}

\titlespacing*{\subsubsection}{0pc}{1.7ex plus 2pt minus 1pt}{0pt}

\begin{document}

\subsubsection*{Some long long long long text that should break the line}
\lipsum[2]

\subsubsection*{some other text}
\lipsum[2]

\end{document}

在此处输入图片描述

对于编号的小节,你可以这样做:

\documentclass[twocolumn]{article}
\usepackage{lipsum}
\usepackage{titlesec}

\newlength\mylena
\setlength\mylena{1.3cm}

\titleformat{name=\subsubsection}[block]
 {\normalsize\sffamily\bfseries}
 {}
 {0em}
 {\makebox[\mylena][l]{\thesubsubsection}%
  \raggedright\hangindent\mylena}

\titleformat{name=\subsubsection,numberless}[block]
  {\normalsize\sffamily\bfseries}
  {}
  {0pt}
  {\raggedright}

\makeatletter
\titlespacing*{\subsubsection}{0pt}{1.7ex \@plus2pt \@minus1pt}{0pt}
\makeatother

\begin{document}

\subsubsection{Some long long long long text that should break the line}
\lipsum[2]

\subsubsection*{Some long long long long text that should break the line}
\lipsum[2]

\subsubsection{some other text}
\lipsum[2]

\end{document}

在此处输入图片描述

答案2

每当你看到“奇怪的间距”怀疑\lineskip

\documentclass[twocolumn]{article}
\usepackage{lipsum}
\RequirePackage[explicit]{titlesec}

\showoutput
\showboxdepth6

\titleformat{name=\subsubsection,numberless}
      {\normalsize\sffamily\bfseries}
      {}
      {0em}
      {\parbox[t]{\linewidth}{\raggedright#1}}
      [] 
 \titlespacing*{\subsubsection}{0pc}{1.7ex \@plus2pt \@minus1pt}{0pt}

\begin{document}

\subsubsection*{Some long long long long text that should break the line}
\lipsum[2]

\subsubsection*{some other text}
\lipsum[2]

\end{document}

日志显示:

......\glue(\lineskip) 1.0

通过使用 parbox[t],您会丢失有关标题底部基线的信息,因此 TeX 无法确保正确的基线间距并插入其后备\lineskip

相关内容