尝试在偶数页和奇数页上获取不同的背景

尝试在偶数页和奇数页上获取不同的背景

标题说的差不多。最简单的描述,我有两个背景,一个用于奇数页(pageBGRight.png),另一个用于偶数页(pageBGLeft.png)。我的直觉是它需要某种形式的 If 语句,但我似乎以一种我无法理解的方式搞错了语法。如果有人能看一下,我将不胜感激。

哦,我正在使用较旧的“AddEverypageHook”,因为我使用的系统尚未安装最新版本的 Latex,而且我没有权限自行更新它。谢谢!


\AddEverypageHook{\ifodd\value{page}\relax{shipout/background}{%
    \put (0in,-\paperheight){\includegraphics[width=\paperwidth,height=\paperheight]{pageBGRight}}%
}
\else
  {shipout/background}{%
    \put (0in,-\paperheight){\includegraphics[width=\paperwidth,height=\paperheight]{pageBGLeft}}%
}
\fi}

答案1

texdoc source2e有 1,110 页的内容,你可能不知道。特别是这一篇:

然而,大多数用例一切尝试将一些图片或文本放入页面的背景或前景,今天只需使用shipout/backgroundshipout/foreground挂钩即可完成,无需任何编码。

您在某种程度上使用了钩子,但实际上并不是这样,因为字符串并没有什么神奇之处shipout/background,只是把它放在那里就是告诉 LaTeX 排版该字符串。

相反你应该可以写:

\AddToHook{shipout/background}{
   \put(0in,-\paperheight){%
      \ifodd\value{page}\relax
         \includegraphics[width=\paperwidth,height=\paperheight]{pageBGRight}%
      \else
         \includegraphics[width=\paperwidth,height=\paperheight]{pageBGLeft}%
      \fi
   }
}

\ifodd还请注意,我通过尽可能深入地移动到代码中来简化代码。

啊,但我知道你认为你被迫使用\AddEveryPageHook。假设上述方法不起作用,source2e 文档说:

\AddEverypageHook{代码}\AddToHook{shipout/background}{\put(1in,-1in){代码}}

因此,有了这些知识,我们可以替换\AddToHook{shipout/background}AddEveryPageHook然后我们可能需要调整上面命令中的值\put来修复定位。¹


  1. 如果没有至少一个脚注,这真的是我的答案吗?那么很好:鉴于我还没有尝试过你的代码,我认为你可能不得不调整即使在规范的 LaTeX 钩子版本中的值。

答案2

没关系,我解决了。我不得不从头开始,使用稍微不同的方法,但我成功了。对于那些感兴趣的人,这就是我所做的:

\backgroundsetup{
scale=1,
opacity=1,
angle=0,
color=black,
contents={%
 \ifodd\value{page}
   \includegraphics[width=\paperwidth]{pageBGRight.png}
  \else
   \includegraphics[width=\paperwidth]{pageBGLeft.png}
  \fi}}

我不得不使用后台包,但是它完成了工作。

相关内容