我想通过使用如下装饰物将章节标题命令括起来来重新定义它:
~装饰~章节标题~装饰~
我查阅了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
以便于区分可选的星号*
版本和可选参数。