LaTeX 中的每页背景

LaTeX 中的每页背景

我有一系列图像,img1.png、img2.png、img3.png、...我希望 img1.png 出现在我的 LaTeX 文档第 1 页的背景中,img2.png 出现在我的文档第 2 页的背景中,img3.png 也是如此,以此类推。

我的图片比页数还多。还有封面和目录,为了便于论述,我将其忽略。请注意,这些图片都是不同的,特别是它们不会重复出现,例如,每个奇数页或偶数页。

有什么想法吗?谢谢。

答案1

欢迎使用 TeX.SE!使用以下代码,您可以根据需要在任何位置定义图像序列(甚至可以在文档中间更改它),如下所示:

\setimages{example-image-a, example-image-b, example-image-c}

如果图像序列中的页面数多于图像数,则它具有环绕行为(我知道您没有要求这样做,但这是一个相当便宜的添加)。您可能不会在意,但也会\setimages尊重 TeX 分组。

\documentclass{article}
\usepackage{eso-pic}
\usepackage{graphicx}
\usepackage{xparse}
\usepackage{lipsum} % provides dummy text for demonstration purposes

\ExplSyntaxOn

\seq_new:N \g_jim_images_seq

\cs_new_protected:Npn \jim_use_as_bg_picture:n #1
  {
    \AtPageLowerLeft
      { \includegraphics[width=\paperwidth, height=\paperheight] {#1} }
  }

\cs_generate_variant:Nn \jim_use_as_bg_picture:n { x }

\NewDocumentCommand \setimages { m }
  { \seq_set_from_clist:Nn \g_jim_images_seq {#1} }

\NewDocumentCommand \setbgpicforcurrentpage { }
  {
    % Compute wrapped-around 0-based index in \g_jim_images_seq
    \int_set:Nn \l_tmpa_int
      { \int_mod:nn { \the\value{page} - 1 } { \seq_count:N \g_jim_images_seq } }
    % Set it as the current page background
    \jim_use_as_bg_picture:x
      { \seq_item:Nn \g_jim_images_seq { \l_tmpa_int + 1 } }
  }

\ExplSyntaxOff

\AddToShipoutPictureBG{\setbgpicforcurrentpage}

% Use example-image-a for page 1, example-image-b for page 2, example-image-c
% for page 3, etc. This respects TeX grouping and can be reset mid-document.
\setimages{example-image-a, example-image-b, example-image-c}

\begin{document}
% Current image sequence: a, b, c, a, b, c, a ...
\lipsum
\lipsum
\lipsum
\lipsum
\lipsum
% Change the image sequence to: a, b, a, b, a, b, a...
\setimages{example-image-a, example-image-b}%
\lipsum
\lipsum
\lipsum
\end{document}

所有页面

相关内容