章节格式:标题前后的文字/装饰

章节格式:标题前后的文字/装饰

我想通过使用如下装饰物将章节标题命令括起来来重新定义它:

~装饰~章节标题~装饰~

我查阅了titlesec文档和更多关于如何重新定义标题的示例,但没有关于如何在标题后添加文本的任何线索。

目的是在\thesection命令后的部分标题中添加文本。

太长不看;

我找到了如何重新定义\section来做到这一点:

~装饰~章节标题

但不知道如何做到这一点:

~装饰~章节标题~装饰~

答案1

的最后一个强制参数\titlesec可能以一个参数命令结尾,标题被传递给该命令。

\documentclass{article}
\usepackage{titlesec}

\titleformat{\section}[block]
 {\Large\bfseries}
 {\thesection}
 {1em}
 {\makeornament}

\newcommand{\makeornament}[1]{$\clubsuit$~#1\unskip~$\clubsuit$}

\begin{document}

\section{A section}
\section*{Unnumbered section}

\end{document}

在此处输入图片描述

答案2

以下似乎是您所追求的;您可以重新定义\secornament为/使用任何您想要的内容。

在此处输入图片描述

\documentclass{article}

\usepackage{xparse}

\newcommand{\secornament}{$\clubsuit$}
\newcommand{\secornamentstyle}{}

\let\oldsection\section
\RenewDocumentCommand{\section}{ s o m }{%
  \IfBooleanTF{#1}
    {\oldsection*{\secornamentstyle{#3}}}% \section*{...}
    {\IfValueTF{#2}
       {\oldsection[#2]{\secornamentstyle{#3}}}% \section[..]{...}
       {\oldsection[#3]{\secornamentstyle{#3}}}% \section{...}
    }%
}

\begin{document}

% Keep \secornamentstyle to do nothing, otherwise \tableofcontents would set
% \section*{Contents} using the ornaments
\tableofcontents

\renewcommand{\secornamentstyle}[1]{\secornament~#1~\secornament}
\section{A section}
\section*{Unnumbered section}

\end{document}

\section重新定义为xparse以便于区分可选的星号*版本和可选参数。

相关内容