使一个部分居中,titlesec

使一个部分居中,titlesec

有时候我需要将某个部分标题居中,以便强调它。不幸的是,这似乎\centeringtitlesec我不知道如何解决该部分超出软件包文档范围的问题。

目前我知道的唯一选择是在\titleformat我的部分之前和之后调用命令,这很糟糕,这需要了解我的默认设置.cls。理想情况下,我实际上希望能够将选项传递给部分命令,例如,\section[centering]{my section}但我不知道如何查找命令的选项\section是什么。我不知道如何在没有 titlesec 的情况下更改部分格式,也许是时候学习了,但我不知道从哪里开始。

在此处输入图片描述

在此 MWE 中,注释掉 titlesec 包以查看问题是否已解决。

\documentclass{article}
\usepackage{fontspec}
\usepackage{titlesec}
\usepackage{lipsum}

\begin{document}

\titleformat{\section}[block]{\Large\bfseries}{}{0in}{\thesection\hspace{1em}}

\tableofcontents

\section{A normal section}

\lipsum[4]

{\centering\section{a centered section}}

\lipsum[4]

\section{\centering a centered section}

\lipsum[4]

\end{document}

答案1

\centering通过调整\leftskip和来工作\rightskip\makebox在给定宽度内居中(默认)。Varwidth 会缩小\section\null\hfil平衡\parendskip。Varwidth 还会吸收上下的垂直空间。

\documentclass{article}
%\usepackage{fontspec}
\usepackage{titlesec}
\usepackage{varwidth}
\usepackage{lipsum}

\begin{document}

\titleformat{\section}[block]{\Large\bfseries}{}{0in}{\thesection\hspace{1em}}

\tableofcontents

\section{A normal section}

\lipsum[4]

\section[A centered section]{\makebox[\linewidth]{A centered section}}

\lipsum[4]

\null\hfil\begin{varwidth}{\textwidth}
\section{A centered section}
\end{varwidth}\csname @afterheading\endcsname
\vskip 2.3ex plus 0.2ex

\lipsum[4]

\end{document}

答案2

您需要以某种方式标记这些特殊部分,因此我建议定义一个\specialsection命令。

\documentclass{article}
\usepackage{titlesec}
\usepackage{lipsum}

\titleformat{\section}[block]
  {\Large\bfseries\ifSPECIAL\filcenter\fi}
  {\thesection}
  {1em}
  {}
\iffalse
\titleformat{name=\section,numberless}[block]
  {\Large\bfseries}
  {}
  {0pt}
  {}
\fi
\newif\ifSPECIAL
\NewDocumentCommand{\specialsection}{sO{#3}m}{%
  \SPECIALtrue
  \IfBooleanTF{#1}{\section*}{\section}{#3}%
  \SPECIALfalse
}

\begin{document}

\tableofcontents

\section{A normal section}

\lipsum[4][1-2]

\specialsection{A centered section}

\lipsum[4][1-2]

\section{A normal section}

\lipsum[4][1-2]

\section*{A normal starred section}

\lipsum[4][1-2]

\specialsection*{A special starred section}

\lipsum[4][1-2]

\end{document}

在此处输入图片描述

相关内容