Tikz 在特定页面上绘图(不是所有页面)

Tikz 在特定页面上绘图(不是所有页面)

我正在和班级一起写一份 10 页的单列 IEEE 格式的报告IEEEtran。这是一份连续的报告,没有任何页眉和页脚或章节。我在每一页的左侧画了一个这样的侧边栏。

\usepackage[all]{background}
\usepackage{tikz}

\newcommand{\MyTikzLogo}{
    \begin{tikzpicture}[remember picture,overlay,draw=black,ultra thick]
        \draw  [fill=red] (0,-30) rectangle (1cm,10cm);
    \end{tikzpicture}
}

\SetBgContents{\MyTikzLogo}
\SetBgPosition{current page.north west}
\SetBgOpacity{1.0}
\SetBgAngle{0.0}
\SetBgScale{1.0}

这有效。但是,我在文档开头插入了两页,在文档结尾插入了另一份 pdf 中的两页,如下所示:

\begin{document}
\includepdf[pages=-]{beginning.pdf}
\includepdf[pages=-]{ending.pdf}
\end{document}

我不想在插入的页面上显示侧边栏或页码。此外,插入页面后,页码也会显示在页面上,并且在开头插入两页后,第三页的页码为 3。

如何:

  • 防止tikz在插入的页面上绘图?意思是排除插入的前两页和后两页。
  • 如何防止插入的页面上出现页码?(在开头插入 2 页后,第 3 页码应该从 1 开始而不是 3,并且插入的开始和结尾的页面都不应显示页码)

任何帮助都将受到高度赞赏。

答案1

它使用\AddToHook{shipout/background}{...}(标准 LaTeX)而不是背景包。它还用 和 替换,[remember picture]以便在第一次运行时可以正常工作。(current page.north west)\put(0,0) {...}

您将需要两个页码计数器。一个用于打印\thepage,另一个用于实际跟踪。Hyperref 提供了自己的页码计数 ( \Hy@pagecounter),这会使操作更加简单。您可能希望使用 进行检查\pageref

\documentclass{IEEEtran}
\usepackage{tikz}
\usepackage{lipsum}% MWE only

\newcounter{mypage}
\setcounter{mypage}{1}
\renewcommand{\thepage}{\arabic{mypage}}

\newcommand{\MyTikzLogo}{%
      \begin{tikzpicture}[baseline={(0,0)},draw=black,ultra thick]
            \draw  [fill=red] (0,-\paperheight) rectangle (1cm,0);
      \end{tikzpicture}%
}

\AddToHook{shipout/background}{\ifnum \value{page}>2
  \ifnum\value{page}<5
    \put(0,0){\MyTikzLogo}% north west corner
  \fi
\fi}

\AddToHook{shipout/after}{\ifnum \value{page}>2
  \ifnum\value{page}<5
    \stepcounter{mypage}% hopefully after \protected@write expands \thepage
  \fi
\fi}
  
\begin{document}
\lipsum[1-60]
\end{document}

答案2

如果没有最小工作示例,我只能从手册第 2 页猜测您想要这个选项:

pages=

此选项控制背景材料是否应显示在文档的所有页面或部分页面中。此选项的预定义值为all(默认)和some。请注意,使用some此选项的值将导致根本不显示任何背景材料,并且用户必须针对 \BgThispage他/她希望显示背景材料的每个页面发出命令(参见示例 3)。

相关内容