我正在尝试使用以下样式排版文档的章节标题:
文本居中。文本两边各有一条延伸至页边距的粗线。相对于标题的高度,该规则垂直居中。
到目前为止,我尝试使用 titlesec 包,并咨询了其他人关于两侧有线条的文本的类似问题。但是,没有人尝试使用这种样式来定义章节标题。
这是我目前得到的代码:
\makeatletter
\def\vhrulefill{\leavevmode\leaders\hrule height 1ex depth \dimexpr0.4pt-0.7ex\hfill\kern\z@}
\makeatother
\titleformat{\section}[runin]%
{\LARGE\bfseries}%
{}{0pt}{\vhrulefill\space}[\space\vhrulefill\null]%
\begin{document}
\section{Foo}
Bar!
\end{document}
最终的结果是,该节后面的文本不会换行。相反,它挤压了标题和规则,并侵占了标题。
有人可以建议一种更好的方法来定义两边都有这种规则的章节标题吗?
最好的祝愿
答案1
只需使用block
带有以下explicit
选项的样式:
\documentclass[11pt]{article}
\usepackage[explicit]{titlesec}
\makeatletter
\def\vhrulefill{\leavevmode\leaders\hrule height 1ex depth \dimexpr0.4pt-0.7ex\hfill\kern\z@}
\makeatother
\titleformat{\section}[block]%
{\LARGE\bfseries}%
{}{0pt}{\vhrulefill\space#1\space\vhrulefill\null}%
\begin{document}
\section{Foo}
Bar!
\end{document}
如果没有显式的 opton,您可以使用runin
以下代码的样式,但部分标题后的垂直间距不会完全相同:
\titleformat{\section}[runin]%
{\LARGE\bfseries}%
{}{0pt}{\vhrulefill\space}[\space\vhrulefill\null\break]%