使用 tcolorbox 格式化手动输入的目录条目

使用 tcolorbox 格式化手动输入的目录条目

后续行动如何访问目录中的章节标题以便使用 tcolorbox 进行格式化

我想使用 \addcontentsline 将手动输入的目录条目放入 tcolorbox 中。但是,我不知道如何正确放置页码。注意:我不想全局更改它(我知道它如何与 titletoc 配合使用),但我只想对单个条目进行更改。感谢您的帮助!

我希望目录行看起来像这样: 目录行示例

这是我的代码:

\addcontentsline{toc}{subsection}{\texorpdfstring{\tocboxm{\rlap{Research Areas}}}{}}

其中我对 \tocboxm 的定义如下:

\newcommand\tocboxm[1]%
{\begin{tcolorbox}[colframe=white, colback=blue!15,nobeforeafter,sharp corners,top=0.1cm,height=0.7cm,width=12.77cm,enhanced,boxrule=0pt]
        \bfseries\color{blue}#1\hfill\contentspage
    \end{tcolorbox}%
}

答案1

我猜你想手动添加命令的星号版本的 toc 条目\section。我认为这会实现你想要的。请记住,你应该为你提出的每个问题提供一个 MWE。这样你就更有可能得到答案。因为我们不需要猜测你使用什么包以及你想实现什么。

因为子节目录条目的样式与节条目不同。因此,除非您使用 重新定义样式(就像您对 所做的那样),否则\addcontentsline{toc}{subsection}{...}会弄乱您定义的 tcolorbox 格式。因此,您可以使用 完全自定义目录条目。但是,这样一来,您需要使用和手动为此条目创建超链接。\tocboxm\subsection\titlecontentssection\addtocontents{toc}{...}hypertarget{label}{content}hyperlink{label}{content}

我对 tocolorbox 设置做了一些调整。您之前的设置使框超出了边距。您可以使用包检查边距边界showframe。从下面的示例中,您可以看到框现在在文本区域内对齐得更好。

以下是代码:

\documentclass[12pt]{article}
\usepackage{titletoc}
\usepackage[skins]{tcolorbox}
\usepackage{showframe}

\newcommand\tocbox[1]%
{\begin{tcolorbox}[colframe=white, colback=blue!15,nobeforeafter,sharp corners,left=1.2cm,top=0.1cm,height=0.7cm,width=\linewidth-0.7cm,enhanced,boxrule=0pt]
        \bfseries\color{blue}#1\hfill\thecontentspage
    \end{tcolorbox}%
}

\newcommand\tocboxm[1]%
{\noindent\begin{tcolorbox}[colframe=white, colback=blue!15,nobeforeafter,sharp corners,top=0.1cm,height=0.7cm,width=\linewidth,left=1.9cm,enhanced,boxrule=0pt]
        \bfseries\color{blue}#1\hfill\thepage%
    \end{tcolorbox}%
\par}

\titlecontents{section}[0pc]
{\vspace{0.2cm}\begin{tcolorbox}[colback=blue,colframe=white,width=0.7cm,height=0.7cm,left=0cm,right=0pt,top=0.07cm,sharp corners,extrude right by=0.1cm,nobeforeafter,enhanced,boxrule=0pt]
    \Large\bfseries\color{white}\centering\thecontentslabel
    \end{tcolorbox}}
{\tocbox} % the second argument is left implicit
{}
{}
\makeatletter
\let\profileper\protected@file@percent
\makeatother

\usepackage[hidelinks]{hyperref}

\begin{document}
\tableofcontents
\clearpage
\section{Section Title}
This page contents...
\clearpage
\hypertarget{fakesec1}{\section*{Research Areas}}%
\addtocontents{toc}{\tocboxm{\protect\hyperlink{fakesec1}{Research Areas}}}%
This page contents...
\section{Testing}
\end{document}

在此处输入图片描述

相关内容