答案1
编辑:根据您的评论,我添加了方案 B(纯边际)和方案 C(边际运行)。方案 B 是通过包leftmargin
的格式实现的,而方案 C 是通过,因为我没有想出一个优雅的方法来做到这一点。titlesec
\hspace
我不确定我是否正确理解了您的图片,所以我根据您的口头描述提供了一个解决方案。这是一个答案,借助包\titlerule
中的命令titlesec
可以在标题周围画线。
- 该
\titleformat
命令控制标题格式。在下面的 MWE 中,它在节标题的上方和下方绘制两条 2pt 宽度的线。上线与标题之间的间距扩大了 0.8 ex,下线与标题之间的间距扩大了 0.4 ex。标签(即“1.1”)与标题之间的水平间距为 0.5 em。 - 该
\titlespacing
命令调整标题周围的间距。它将节标签与左边距之间的距离设置为零,并将标题前后垂直跳跃的距离设置为约 4 ex(可拉伸)。
欲了解更多详细信息,请阅读titlesec
包装手册。
这是 MWE。它在 PdfLaTeX 下进行了测试。
\documentclass{book}
\usepackage{geometry}
\geometry{margin=2in}
\usepackage{titlesec}
\begin{document}
\chapter{This is a chapter}
% --- Plan A ---
\titleformat{\section}[block]
{\titlerule[2pt]\addvspace{0.8ex}%
\bfseries\Large}
{\thesection}{0.5em}
{}[{\addvspace{0.4ex}\titlerule[2pt]}]
\titlespacing{\section}{0pt}{*4}{*4}
\section{A customized section heading}
bla bla bla.
bla bla bla bla.
% --- Plan B: A pure marginal section title ---
\newcommand{\marginbelowline}[1]{%
#1\par%
\noindent\hfill\rule{\titlewidth}{2pt}%
}
\titleformat{\section}[leftmargin]
{\filleft\large
\setlength{\titlewidth}{\oddsidemargin}%
\addtolength{\titlewidth}{-\marginparsep}
\setlength{\titlewidth}{0.95\titlewidth}
\titleline*[l]{\titlerule[2pt]}%
\addvspace{6pt}%
\normalfont\sffamily}
{\thesection}{1em}{\marginbelowline}
\titlespacing{\section}{5pc}{*2}{*2}
\section{Plan B. Pure marginal section title}
Plan B: bla bla bla bla bla bla bla bla bla bla bla bla.
bla bla bla
You need to add paragraphs here to ensure that the section title won't overlap in the left margin.
Probably there will be better way to achieve this.
Let's talk about Plan C.
% --- Plan C: A section title that starts from the left margin and runs into the text body ---
\newlength{\marginrule}
\setlength{\marginrule}{\oddsidemargin}
\addtolength{\marginrule}{-\marginparsep}
\setlength{\marginrule}{0.95\marginrule}
\newcommand{\marginruninto}[1]{%
#1\par%
\noindent\hspace{-\oddsidemargin}\rule{\marginrule}{2pt}%
}
\titleformat{\section}[block]
{\bfseries\Large}
{\hspace{-\oddsidemargin}\rule{\marginrule}{2pt}\\%
\hspace*{-\oddsidemargin}\thesection}{0.5em}
{\marginruninto}
\titlespacing{\section}{0pt}{*4}{*4}
\section{Plan C. An overflowed section title with a lot of words to check if it can linebreak correctly}
Plan C: bla bla bla bla bla bla bla bla bla bla bla bla.
Some paragraphs.
Another paragraph.
\end{document}
MWE 的截图:
答案2
你没有说你正在使用什么 documentclass(或者你的任何代码),但从你展示的你想要你的\section
命令产生的结果来看,我假设你正在使用一个支持的类\chapter
。--- GOM
该类( 、和类memoir
的超集)确实提供了章节。我认为以下内容可以满足您的要求。book
report
article
% secprob.tex SE 532078 Change \section format
\documentclass{memoir}
\usepackage{lipsum}
\setsecindent{-2cm} % move into the margin
\newcommand{\ruledsec}[1]{%
\hspace{-2cm}\hspace{-\parindent}\rule{2cm}{0.4pt}\\ % rule before title
\Large\bfseries\raggedright #1 % the title
\hspace{-2cm}\rule{2cm}{0.4pt}% rule after the title
}
\setsecheadstyle{\ruledsec}
\begin{document}
\tableofcontents
\chapter{A chapter}
\lipsum[1]
\section{A section}
\lipsum[2]
And a bit more text for the next paragraph.
\end{document}
更改长度以适合您的布局。阅读memoir
文档(texdoc memoir
)了解更多信息。