如何让章节标题延伸到边缘(使用 Memoir 类)?

如何让章节标题延伸到边缘(使用 Memoir 类)?

我正在编写一个使用较小文本块 ( \textwidth) 的文档,其边距包含脚注、图表和其他各种材料。由于文本块较窄,章节标题经常跨越两行。但是,它们通常可以身体上适合在一条线上 – 如果允许它们延伸到边缘区域。

那么,如何让标题延伸到页边距(但如果延伸太多,即超过,仍然会被破坏\marginparsep + \marginparwidth)?我正在使用Memoir类。

这是一个简单的例子:

\documentclass[11pt,oneside,article]{memoir}

\setlrmarginsandblock{3cm}{9cm}{*}
\setmarginnotes{1.5em}{5.5cm}{\onelineskip}
\checkandfixthelayout[nearest]

\usepackage{lipsum}

\begin{document}

\chapter{Chapter heading}

\section{This heading is too long to fit on one line}

Foo. \marginpar{\lipsum[4]}\lipsum[1-3]

\end{document}

答案1

这是回忆录方式:

\newcommand{\extendedsec}[1]{\noindent
  \makebox[0pt][l]{\parbox[t]{\textwidth}{\Large\bfseries\raggedright#1}}}
\setsecheadstyle{\extendedsec}

换成\textwidth最适合你的东西。我不会填满整个队伍。

如果你想填满整行,那么

\newcommand{\extendedsec}[1]{\noindent
  \makebox[0pt][l]{\parbox[t]%
    {\dimexpr\textwidth+\marginparsep+\marginparwidth\relax}%
    {\Large\bfseries\raggedright#1}}}

手册第 106 页描述了类似的技巧回忆录

答案2

您可以使用titlesec包;在下面的例子中,我使用\parbox宽度\textwidth+\marginparwidth+\marginparsep来格式化章节标题:

\documentclass[11pt,oneside,article]{memoir}
\usepackage[explicit]{titlesec}
\usepackage{lipsum}

\setlrmarginsandblock{3cm}{9cm}{*}
\setmarginnotes{1.5em}{5.5cm}{\onelineskip}
\checkandfixthelayout[nearest]

\titleformat{\section}
  {\normalfont\Large\bfseries}{}{0pt}
  {\makebox[\dimexpr\linewidth][l]{%
      \parbox{\dimexpr\textwidth+\marginparwidth+\marginparsep\relax}
{\raggedright\thesection\hspace{1em}#1}}}


\begin{document}

\chapter{Chapter heading}

\section{This heading fits now on one single line}

Foo. \marginpar{\lipsum[4]}\lipsum[1]

\section{This heading is too long to fit on one line and will span two lines}

Foo. \marginpar{\lipsum[4]}\lipsum[1]

\end{document}

在此处输入图片描述

相关内容