具体章节格式

具体章节格式

我想使用排版titlesec来显示如下部分标题:

--------- 章节名称 ------------

(---- 将是一个规则,并且整个部分标题将居中)

我查看了titlesec文档,但对如何执行此操作有点困惑。如能提供任何帮助,我将不胜感激。

答案1

您可以按照以下步骤进行操作;该\varhrulefill命令是的变体\hrulefill,但将线提升到基线以上:

\documentclass{article}
\usepackage[explicit]{titlesec}

\newcommand*\varhrulefill{%
  \leavevmode\leaders\hrule height 0.6ex depth -0.5ex\hfill\kern0pt}

\titleformat{\section}
  {\normalfont\Large\bfseries\filcenter}{}{0em}{\varhrulefill\enspace#1\enspace\varhrulefill}

\begin{document}

\section{A Test Section}

\end{document}

在此处输入图片描述

如果标题跨越多行,则需要做更多工作:现在将图块放置在\parbox内容居中的 内; 的宽度\parbox计算为标题长度和 之间的最小值0.7\textwidth(此值可以更改),然后将\parbox放置在中心并遵循两个环绕规则:

\documentclass{article}
\usepackage{calc}
\usepackage[explicit]{titlesec}
\usepackage{lipsum}

\newlength\Titlewd
\newlength\TitleBox

\newcommand*\varhrulefill{%
  \leavevmode\leaders\hrule height 0.6ex depth -0.5ex\hfill\kern0pt}

\titleformat{\section}
  {\normalfont\Large\bfseries\filcenter}{}{0em}{%
  \settowidth\Titlewd{\Large\bfseries#1}%
  \setlength\TitleBox{\minof{\Titlewd}{.7\textwidth}}%
  \varhrulefill\enspace\parbox{\TitleBox}{\centering #1}\enspace\varhrulefill}
\titlespacing*{\section}
  {0pt}{4.5ex plus 1ex minus .2ex}{2.3ex plus .2ex}

\begin{document}

\section{A Test Section}
\lipsum[2]
\section{A Test Section with a long title spanning more than one line}
\lipsum[2]

\end{document}

在此处输入图片描述

请注意,即使章节编号未包含在标题中(在文档正文中),它仍会出现在最终的目录中;要从目录中删除章节编号,可以将以下几行添加到序言中:

\usepackage{titletoc}

\titlecontents{section}
  [0em]{\bfseries}{}{}
  {\hfill\contentspage}[\addvspace{10pt}]

相关内容