我有一些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