突出显示 \mtctitle 中的文本

突出显示 \mtctitle 中的文本

我想为以黄色突出显示的目录生成标题。但是代码

   \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}

enter image description here

相关内容