我想使用排版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}]