因此,我正在尝试重新创建以下风格的 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