定理列表和 tikz 叠加

定理列表和 tikz 叠加

假设您\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}

输出:

第 1 页 - 目录 第 2 页 - 定理列表 第 3 页 - 第一章

但是,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}

相关内容