我想为以黄色突出显示的目录生成标题。但是代码
\renewcommand{\mtctitle}{\colorbox{yellow}{Contents}}
似乎不起作用,而是给出错误消息“ \@undeclaredcolor 的使用与其定义不匹配。” 我想知道是否有办法实现这种效果。
答案1
除了一些简单的“字符串”之外的任何设置\mtctitle
都不是正确的方法。\mtctitle
应该包含标题的真实名称,而不是额外的花哨的排版和装饰;-)
minitoc
设置标题的相关代码\minitoc@
在tabular
环境中:
\begin{tabular}{@{}p{\columnwidth}@{}}
\reset@font\mtifont\do@mtitc{\mtc@v\mtctitle}\\\hline
\end{tabular}%
必须将带有 的代码\mtctitle
替换为带有 的代码colorbox
,如果不修补代码,这无法轻易完成。
然而,在的后面部分minitoc
,实际上\sv@minitoc@
是被一个\let\sv@minitoc@\minitoc@
语句使用的,所以\sv@minitoc@
实际上必须进行修补。
为了外观更美观,我使用了tcolorbox
而不是\colorbox
。
\documentclass{book}
\usepackage{blindtext}
\usepackage[dvipsnames,svgnames,x11names]{xcolor}
\usepackage{minitoc}
\usepackage[most]{tcolorbox}
\usepackage{xpatch}
\DeclareRobustCommand{\mtctitlebox}{\begin{tcolorbox}[colback=yellow,enhanced jigsaw,sharp corners,halign=left,left=1ex,nobeforeafter,boxrule=0pt]\mtctitle\end{tcolorbox}}
\makeatletter
\xpatchcmd{\sv@minitoc@}{%
\reset@font\mtifont\do@mtitc{\mtc@v\mtctitle}\\\hline
}{%
\reset@font\mtifont\do@mtitc{\mtc@v\mtctitlebox}\\\hline}{%
\typeout{success}%
}{%
\typeout{failure}%
}
\makeatother
\dominitoc
\begin{document}
\tableofcontents
\chapter{Foo}
\minitoc
\section{Foo section}
\end{document}