我一直试图在 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}