在 \titleformat 调用中将章节标题传递到 tcolorbox

在 \titleformat 调用中将章节标题传递到 tcolorbox

我一直试图在 titleformat 调用中使用 tcolorbox,以便在每个部分标题中使用图像的一部分。不幸的是,它似乎无法将部分标题传递给 tcolornox,因此在 tcolorbox 中调用 {#1} 会引发错误

\titleformat{\section}
  [block]
  {\center\normalfont\bfseries\color{Red}}
  {}
  {0pt}
  {
    \begin{tcolorbox}[enhanced, width=\textwidth,
      watermark graphics=graphic.jpg, watermark opacity=0.2,
      watermark overzoom=1.0, colback=Red!10, colframe=Red!80,
      sharp corners, valign=center, height=1.5cm]
        \begin{center}
            \textbf{#1}
        \end{center}
    \end{tcolorbox}
  }

每次调用部分时出现的错误消息:

\ttlf@section 定义中的参数编号非法

任何帮助将不胜感激

编辑:请注意,当 #1 被替换为“测试”时,代码可以工作,但是部分标题打印在 tcolorbox 下方而不是其中。

答案1

您可以titlesec使用explicit选项加载,但我通常不推荐这样做。的最后一个强制参数\titleformat可以以一个参数宏结尾,该宏将输入节标题。

\documentclass{article}
\usepackage[many]{tcolorbox}
\usepackage{titlesec}

\colorlet{Red}{red!60}

\newcommand{\formatsectiontitle}[1]{%
  \begin{tcolorbox}[
    enhanced,
    width=\textwidth,
    watermark graphics=example-image, % <--- fix the file name
    watermark opacity=0.2,
    watermark overzoom=1.0,
    colback=Red!10,
    colframe=Red!80,
    sharp corners,
    valign=center,
    height=1.5cm
  ]
    \centering\bfseries #1
  \end{tcolorbox}%
}

\titleformat{\section}[block]
  {\filcenter\normalfont\bfseries\color{Red}}
  {}
  {0pt}
  {\formatsectiontitle}

\begin{document}

\section{Test title}

Here the section starts.

\end{document}

在此处输入图片描述

相关内容