假设您\listoftherems
从包中调用thmtools
,并使用titlesec
包来修改章节标题的外观。进一步假设在中titleformat
包含一个简单的tikzpicture
,您想用它来填充页面的标题,因此您使用选项overlay
。
事实证明,普通目录和章节都具有正确的标题格式,但定理列表的标题完全消失了。
代码:
\documentclass[11pt]{report}
\usepackage{thmtools}
\usepackage{tikz}
\usepackage[explicit]{titlesec}
\declaretheorem[name=Theorem]{thm}
%
\titleformat{\chapter}[block]
{\gdef\TOCtitle{}}
{}
{0cm}
{\begin{tikzpicture}
[remember picture,overlay]
\node
at ([yshift=-3cm]current page.north west){
\begin{tikzpicture}
[remember picture,overlay]
\fill [blue!50] (0,0) rectangle (\paperwidth,3cm);
\node[
xshift = 0.5\paperwidth,
yshift = 1cm,
font = \Large
]
{#1};
\end{tikzpicture}
};
\end{tikzpicture}}
%
\begin{document}
\tableofcontents
\listoftheorems
%
\chapter{First chapter}
\begin{thm}[My Theorem]
\end{thm}
\end{document}
输出:
但是,overlay
从两个tikzpicture
环境中删除该选项后,所有三个标题都会以相同的方式呈现(尽管图片的位置不正确)。
代码:
\documentclass[11pt]{report}
\usepackage{thmtools}
\usepackage{tikz}
\usepackage[explicit]{titlesec}
\declaretheorem[name=Theorem]{thm}
%
\titleformat{\chapter}[block]
{\gdef\TOCtitle{}}
{}
{0cm}
{\begin{tikzpicture}
[remember picture]
\node
at ([yshift=-3cm]current page.north west){
\begin{tikzpicture}
[remember picture]
\fill [blue!50] (0,0) rectangle (\paperwidth,3cm);
\node[
xshift = 0.5\paperwidth,
yshift = 1cm,
font = \Large
]
{#1};
\end{tikzpicture}
};
\end{tikzpicture}}
%
\begin{document}
\tableofcontents
\listoftheorems
%
\chapter{First chapter}
\begin{thm}[My Theorem]
\end{thm}
\end{document}
输出:
我不明白为什么会发生这种情况。答案可能在于 的实现thmtools
,但我对此了解不够多(或者根本不了解),也没有耐心。
答案1
该\listoftheorems
命令执行\@fileswfalse
。我不确定为什么,中的注释thm-listof.dtx
相当神秘。但是,只要您只有一个\listoftheorems
,删除声明似乎是安全的。此声明使 LaTeX 无法在文件中写入 PGF 标记.aux
。
我采纳了 John Kormylo 的建议,避免在图片中插入图片。我还避免了explicit
不必要的选项:改用最后一个参数带有参数的命令\titleformat
。
\documentclass[11pt]{report}
\usepackage{thmtools}
\usepackage{tikz}
\usepackage{titlesec}
\usepackage{xpatch}
\makeatletter
\xpatchcmd{\listoftheorems}{\@fileswfalse}{}{}{}
\makeatother
\declaretheorem[name=Theorem]{thm}
%
\newcommand{\tikztitleformat}[1]{%
\begin{tikzpicture}[remember picture,overlay]
\path[fill,blue!50] (current page.north west) rectangle +(\paperwidth,-3cm);
\node[below=1.5cm,anchor=center,font = \Large] at (current page.north) {#1};
\end{tikzpicture}%
}
\titleformat{\chapter}[block]
{\gdef\TOCtitle{}}
{}
{0cm}
{\tikztitleformat}
%
\begin{document}
\tableofcontents
\listoftheorems
%
\chapter{First chapter}
\begin{thm}[My Theorem]
\end{thm}
\end{document}
答案2
这并不能解决问题,但至少它不会递归调用 tikz
\begin{tikzpicture}[remember picture,overlay]
\path[fill,blue!50] (current page.north west) rectangle +(\paperwidth,-3cm);
\node[below=1.5cm,anchor=center,font = \Large] at (current page.north) {#1};
\end{tikzpicture}