我正在编写一个使用较小文本块 ( \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}