在 LaTeX 书中重新创建章节样式

在 LaTeX 书中重新创建章节样式

如何在 LaTeX 中重新创建以下章节样式,以便章节标题在正文之前开始,并在其上方和下方绘制水平线?titlesec 包是否最合适?如果有人可以编写代码来实现所需的效果,我将不胜感激。我正在“书籍”类中工作,但不幸的是,我不知道从哪里开始编写代码。

在此处输入图片描述

答案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的超集)确实提供了章节。我认为以下内容可以满足您的要求。bookreportarticle

% 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)了解更多信息。

相关内容