在多行标题内放置边距标签

在多行标题内放置边距标签

我想使文章类文档中的章节标题变为多行并在其边缘带有标签。

我使用了两个框:一个用于标签,另一个用于文本,以强制其拆分。

\documentclass[a4paper,11pt]{article}
\usepackage[explicit]{titlesec}
\titleformat{\section}
            {\fontsize{28}{24}\headingfont}%format
            {\makebox[0pt][r]{%
                \headingfontlight\thesection\hskip 9pt}}%
            {0pt}
            {\makebox[\dimexpr\linewidth][l]{%
                  \parbox{\dimexpr\textwidth+\marginparwidth+\marginparsep\relax}
            {\raggedright #1}}}

该代码运行良好,但有一个问题:部分标签被放置在标题框的中心而不是其顶部。

在此处输入图片描述

任何想法都将不胜感激。

答案1

使用\parbox[t]。不要使用explicit选项titlesec,总有一天你会后悔的:定义一个单独的宏比破坏 的最后一个参数要干净得多\titleformat

\documentclass[a4paper,11pt]{article}
\usepackage{titlesec}

\titleformat{\section}
  {\fontsize{28}{24}\headingfont}%format
  {\makebox[0pt][r]{\headingfontlight\thesection\hskip 9pt}}%
  {0pt}
  {\printsectiontitle}

\newcommand{\printsectiontitle}[1]{%
  \makebox[\dimexpr\linewidth][l]{%
    \parbox[t]{\dimexpr\textwidth+\marginparwidth+\marginparsep\relax}
      {\raggedright #1}%
  }%
}

\let\headingfont\selectfont % just for the example
\let\headingfontlight\relax

\begin{document}

\section{Some long long long long long long long long long long long long heading}

\end{document}

在此处输入图片描述

将标题设置为 28pt 并将基线跳过 24pt 的目的是什么?只是为了使线条太近且间距不均匀?

相关内容