后续行动如何访问目录中的章节标题以便使用 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
\titlecontents
section
\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}