如何在矩形框中获取章节标题

如何在矩形框中获取章节标题

如何在 pdflatex 中获取这样的章节标题

在此处输入图片描述

titlesec 能用吗?

% hanging chapters
\usepackage{titlesec}
\titleformat{\chapter}[hang] 
{\normalfont \Large \bfseries}{\chaptertitlename\ \thechapter}{1em}{}

答案1

首先尝试使用titlesec。无法使其按照您想要的方式工作。然后从基础开始重新定义。


解决方案

\documentclass[a4paper,12pt,oneside]{book}

\usepackage{calc}

\makeatletter
\def\@makechapterhead#1{%
  \vspace*{50\p@}

  \setlength{\fboxsep}{1.0mm}
  \setlength{\fboxrule}{1.0mm}\noindent\fbox{%
    \setlength{\fboxsep}{2.0mm}%
    \setlength{\fboxrule}{0.5mm}%
    \framebox[\textwidth-15.0pt][c]{\hspace*{0.25\parindent}\bfseries\MakeUppercase{\@chapapp--\thechapter\hfill#1}\hspace*{0.25\parindent}}}
    \par\nobreak
    \vskip 40\p@}
\makeatother

\begin{document}

\chapter{Introduction}

\chapter{My Story of Boxed Chapters}

\end{document}

调整技巧

如果您需要调整属性,请参阅以下提示。

  1. 要更改框宽度,请\textwidth在 中 进行调整\framebox[\textwidth]。现在我假设您希望框正好是文本宽度。如果您需要更宽,则需要使用 之类的东西\framebox[1.2\textwidth]
  2. 两者\fboxsep\fboxrule 控制与内容的分离以及盒子的规则厚度。请将这些值设置为符合您喜好的值。
  3. 我随意将单词 CHAPTER 之前和章节名称之后的空格设置为0.25\parindent。如有需要,请更改这些。

输出

这是输出。

在此处输入图片描述

在此处输入图片描述


警告

正如您所知,您不会使用长章节名称。

答案2

这里建议使用框架绘图包:

\documentclass[10pt]{scrreprt}

\usepackage[tikz]{mdframed}
\mdfdefinestyle{chapter}{outerlinewidth=3pt,middlelinewidth=1.5pt,innerlinewidth=1pt,%
outerlinecolor=blue!70!black,middlelinecolor=white,innerlinecolor=blue!50!black}
\makeatletter
\renewcommand*{\@@makechapterhead}[1]{%
 \chapterheadstartvskip
  {%
    \setlength{\parindent}{\z@}\setlength{\parfillskip}{\fill}%
    \normalfont\sectfont\nobreak\size@chapter{}%
    \begin{mdframed}[nobreak,style=chapter]
           \chapterformat\hfill\size@chapter{#1}
     \end{mdframed}\par%
  }%
  \nobreak\chapterheadendvskip
}
\makeatother
\begin{document}
\chapter{Introduction}
\end{document}

在此处输入图片描述

答案3

titlesec.tss允许您通过提供“样式文件”来定义自己的样式:

在此处输入图片描述

\documentclass{report}
\usepackage{filecontents,lipsum}% http://ctan.org/pkg/{filecontents,lipsum}
\begin{filecontents*}{chapframe.tss}
% Styles
% ~~~~~~

% 1:global 2:label 3:sep 4:style 5:after 6:left 7:right 8:title
% \ttl@<shape> and \ttlh@<shape> take the following eight
% arguments:
% {format}{label}{sep}{before}{after}{left}{right}{title}
% where before and after refer to the format.
% With the option explicit, #4 contains the title and #8 is
% empty.
\gdef\ttlh@chapframe#1#2#3#4#5#6#7#8{%
  \noindent%
  \setlength{\fboxrule}{3\fboxrule}% Thicker outer rule
  \setlength{\fboxsep}{.5\fboxsep}% Thinner gap
  \framebox[\linewidth]{%
    \setlength{\fboxrule}{.5\fboxrule}% Thinner inner rule
    \setlength{\fboxsep}{2\fboxsep}% Thicker gap
    \framebox[\dimexpr\linewidth-\fboxrule-2\fboxsep]{%
      #1\strut#2\hfill#4{#8}%
    }%
  }%
  \par%
}
\end{filecontents*}

\usepackage{titlesec}% http://ctan.org/pkg/titlesec

\titleformat{\chapter}[chapframe]
{\normalfont \Large \bfseries}{\chaptertitlename~--~\thechapter}{1em}{}
\begin{document}
\chapter{Introduction}
\lipsum[1]
\end{document}

上面我已经定义/编写了chapframe.tss将章节设置为双框架样式。

如果您使用包选项,则可能需要调整样式explicit

相关内容