如何在同一行内两条水平线之间获取章节标题

如何在同一行内两条水平线之间获取章节标题

我对 LaTeX 还不太熟悉,我想让章节标题居中在两条水平线之间,并且都在同一行内。我现在做的是这样的。但是,我希望规则更长一些,但要适应章节名称的长度。

\titleformat{\section}[block]{\LARGE\scshape\centering}{\thesection.}{1em}{}
\newcommand{\newsection}[1]{\section*{\rule{0.25\textwidth}{0.3mm}\hfill#1\hfill\rule{0.25\textwidth}{0.3mm}}}

但在开发文件时,我遇到了一些问题,一些行与一些章节标题重叠。希望我的问题说清楚了...提前致谢

答案1

该解决方案使用保存框来测量标题的宽度。

\documentclass{article}
\usepackage{showframe}% MWE only

\newsavebox{\titlebox}
\newcommand{\newsection}[1]{\savebox\titlebox{\LARGE\scshape#1}%
  \section*{\rule[0.6ex]{\dimexpr 0.5\textwidth-0.3em-0.5\wd\titlebox}{1pt}%
  \hspace{0.3em}%
  \usebox\titlebox
  \hspace{0.3em}%
  \rule[0.6ex]{\dimexpr 0.5\textwidth-0.3em-0.5\wd\titlebox}{1pt}}}

\begin{document}
\newsection{Short}
\newsection{A longer title}
\newsection{A much much much longer title}
\end{document}

演示

相关内容