它没有在 \tcolorbox 中的标题处显示 \section 名称、编号...

它没有在 \tcolorbox 中的标题处显示 \section 名称、编号...

我正在尝试关于中的部分tcolorbox。我的代码是

\documentclass[a4paper,twoside,openright,11pt]{scrbook}
\usepackage[left=1cm,right=1cm,top=3cm,bottom=1.5cm,marginparwidth=6cm,marginparsep=.5cm,
outer=7.5cm]{geometry}
\usepackage[T1]{fontenc}
\usepackage[utf8]{inputenc}
\usepackage{lmodern}
\usepackage{color}
\usepackage[svgnames]{xcolor}
\usepackage[listings,skins,breakable,hooks,theorems]{tcolorbox}
\usepackage{mhsetup}
\usepackage{mathtools}
\usepackage{amssymb}
\usepackage{ifoddpage}
\usepackage{fancyhdr}
\usepackage{lipsum}

\pagestyle{fancy}
\fancyheadoffset[LE,RO]{\marginparsep+\marginparwidth}
\renewcommand{\chaptermark}[1]{\markboth{#1}{}}
\renewcommand{\sectionmark}[1]{\markright{ #1}}
\fancyhf{}
\fancyhead[RO]{\textbf{\nouppercase{Section \thesection{}}\quad\textcolor{orange}{$\blacksquare$}\quad}\textit{\rightmark}\quad\quad\textcolor{blue}{\textbf\thepage}}
\fancyhead[LE]{\textcolor{blue}{\textbf\thepage}\textbf{\quad\quad\nouppercase{Chapter{ }\thechapter\quad\textcolor{orange}{$\blacksquare$}\quad}}\textit{\leftmark}}
\fancypagestyle{plain}{%
\fancyhead{} % get rid of headers
\renewcommand{\headrulewidth}{0pt}
}

\begin{document}
\chapter{Hello}
\lipsum[1-7]

\begin{tcolorbox}[enhanced,interior style={left color=red!20!yellow,right color=black!40!white},leftrule=0mm,frame hidden,left=0mm,right=0mm,top=-1mm,bottom=1mm,arc=2mm]\textit{\section{Coulomb’s Law}}
\end{tcolorbox}

\lipsum[1-7]

\begin{tcolorbox}[enhanced,interior style={left color=red!20!yellow,right color=black!40!white},leftrule=0mm,frame hidden,left=0mm,right=0mm,top=-1mm,bottom=1mm,arc=2mm]\textit{\section{Heron's Law}}
\end{tcolorbox}

\lipsum[1-7]
\section{Leva's Law}
\lipsum[1-7]
\end{document}

\section但是,在 的 header 中不显示name, number... \tcolorbox。另一方面,\section在 的 header 中却显示 name, number... \tcolorbox。也就是说,在第 3. 页中,不显示部分信息。

\section{Leva's Law}工作但其他部分不工作。这可能是解决此问题的方法吗?

...编辑...第 3 页和第 4 页运行良好。

在此处输入图片描述

但是我写了@Christian Hupfer 的代码,如下图所示。第 1.10 节不是测试部分。

在此处输入图片描述

答案1

该解决方案对内部的每个部分使用一个标签tcolorbox,并使用调用标题\nameref*{}

\documentclass[a4paper,twoside,openright,11pt]{scrbook}
\usepackage{etoolbox}%
\usepackage[many]{tcolorbox}
\usepackage{fancyhdr}
\usepackage{ifthen}
\usepackage{lipsum}
\usepackage{nameref}%



\pagestyle{fancy}
\makeatletter
\newlength{\overhanglength}
\AtBeginDocument{%
\setlength{\overhanglength}{\marginparwidth}
\addtolength{\overhanglength}{\marginparsep}
\ifthenelse{\NOT\boolean{@mparswitch}\AND\boolean{@twoside}}
{\fancyhfoffset[RE,RO]{\overhanglength}}
{\fancyhfoffset[LE,RO]{\overhanglength}}
}
\renewcommand{\headrulewidth}{0pt}
\renewcommand{\footrulewidth}{0pt}
\fancyhf{} 
\ifthenelse{\boolean{@twoside}}{%
\fancyhead[LE]{\textit{\thepage\quad\S\quad\nouppercase{\leftmark}}}%
\fancyhead[RO]{\textit{\nouppercase{\rightmark}\quad\S\quad\thepage}}%
}{
\fancyhead[RE,RO]{\nouppercase{\rightmark}\quad\thepage}%
}
\makeatother
\tcbuselibrary{breakable}
\makeatletter
\def\tcb@parbox@use@false{%
\def\@parboxrestore{\linewidth\hsize\let\@parboxrestore=\tcb@parboxrestore}%
}
\makeatother

\begin{document}
\chapter{Hello}
\begin{tcolorbox}[parbox=false,title=\nameref*{section::number_one}]
\section{This section title is shown!} \label{section::number_one}%
abc\par cde
\end{tcolorbox}
\lipsum[1-20]
\section{Test} 
\begin{tcolorbox}[title=\nameref*{section::2}]%
\section{This section title is also shown!} \label{section::2}%
abc\par cde
\end{tcolorbox}
\lipsum[1-20]
\end{document}

在此处输入图片描述

相关内容