使用 tikz 为目录着色

使用 tikz 为目录着色

因此,我正在尝试重新创建以下风格的 TOC。

在此处输入图片描述

我使用了以下内容:

{\tikz[remember picture,overlay] 
\draw [fill,red!20] (current page.north west) rectangle
 +(0.33\paperwidth,-\paperheight);
\tableofcontents}

我发现回答。它工作正常,但我只让目录中的一页填充了颜色。目录中的第二页和最后一页保持不变。那么,我怎样才能成功让 tikz 生成的矩形与目录中的两页相匹配?

这是 MWE

\documentclass[12pt, a4paper, twoside, openany]{memoir}
\usepackage{amsmath}
\usepackage{amsfonts}
\usepackage{amssymb}
\usepackage{polyglossia}
\usepackage{xltxtra}
\usepackage{fontspec}
\setmainfont{GFS Didot}
\setdefaultlanguage{greek}
\usepackage{tikz}

\begin{document}
    
    {\tikz[remember picture,overlay] 
        \draw [fill,red!20] (current page.north west) rectangle
        +(0.20\paperwidth,-\paperheight);
        \tableofcontents}
    
    \chapter*{Πρόλογος}
    \addcontentsline{toc}{chapter}{Αντί Προλόγου}
    
    \chapter*{Οδηγός Μελέτης}
    \addcontentsline{toc}{chapter}{Οδηγός Μελέτης}
    
    \part{ΑΛΓΕΒΡΑ}
    
    \chapter{Αλγεβρικές Παραστάσεις}
    
    \section{Πραγματικοί αριθμοί και πράξεις}
    
    \section{Δυνάμεις πραγματικών αριθμών}
    
    \section{Τετραγωνική ρίζα πραγματικού αριθμού}
    
    \section{Μονώνυμα $\bullet$ Πολυώνυμα}
    
    \chapter{Ταυτότητες $-$ Παραγοντοποίηση}
    
    \section{Αξιοσημείωτες ταυτότητες}
    
    \section{Παραγοντοποίηση}
    
    \section{Ε.Κ.Π $\bullet$ Μ.Κ.Δ αλγεβρικών παραστάσεων}
    
    \section{Ρητές αλγεβρικές παραστάσεις}
    
    \section{Πρόσθεση $\bullet$ Αφαίρεση ρητών παραστάσεων}
    
    \chapter{Εξισώσεις - Ανισώσεις}
    
    \section{Η εξίσωση $\alpha x + \beta = 0 $}
    
    \section{Εξίσωση δευτέρου βαθμού}
    
    \section{Επίλυση εξίσωσης δεύτερου βαθμού με τύπο}
    
    \section{Κλασματικές εξισώσεις}
    
    \section{Διάταξη}
    
    \chapter{Συστήματα γραμμικών εξισώσεων}
    
    \section{Η έννοια της γραμμικής εξίσωσης}
    
    \section{Γραμμικό σύστημα}
    
    \part{ΓΕΩΜΕΤΡΙΑ $-$ ΤΡΙΓΩΝΟΜΕΤΡΙΑ}
    
    \chapter{Γεωμετρία}
    
    \section{Πρωτεύοντα - Δευτερεύοντα στοιχεία τριγώνου}
    
    \section{Ίσα τρίγωνα}
    
    
    
\end{document}

答案1

可能不是最有效的方法,但它确实适用于我的 TeXLive 2023 和钩子机制

\documentclass[12pt, a4paper, twoside, openany]{memoir}
\usepackage{amsmath}
\usepackage{amsfonts}
\usepackage{amssymb}
\usepackage{polyglossia}
\usepackage{xltxtra}
\usepackage{fontspec}
\setmainfont{GFS Didot}
\setdefaultlanguage{greek}
\usepackage{tikz}

\cftinsertcode{pre-toc}{
  \AddToHook{shipout/background}[toc-bg]{%
    \tikz[remember picture,overlay] 
    \draw [fill,red!20] (current page.north west) rectangle
    +(0.20\paperwidth,-\paperheight);
  }
}

\cftinsertcode{post-toc}{
  \AddToHookNext{shipout/background}{
    \RemoveFromHook{shipout/background}[toc-bg]
  }
}

% add a hookline into the toc file it self
\AddToHook{begindocument}{
  \cftinserthook{toc}{pre-toc}
}
% add one at the very end as well, we cannot use \cftinserthook there
% as it needs to be immediate
\makeatletter
\AddToHook{enddocument/afterlastpage}{
  \immediate@protected@write\@auxout{}{\string\@writefile{toc}{\string\cftinsert\string{post-toc\string}}}
}
\makeatother


\begin{document}


\tableofcontents

... % the rest of the OPs example

相关内容