将多个页面动态定位在文档中间

将多个页面动态定位在文档中间

我正在写一本书,我想添加几张图片。

我可以将它们添加到文本之间,但我想要做的(以及我在现有书籍中看到的)是将图像放在书的中间。

假设我有 5 页带描述的图片,而我的书有 20 页带文字,我想要:

10 (文本) / 5 (图片) / 10 (文本)

我可以通过分页符和插入图像手动完成此操作,但是否可以根据文档中的总页数动态地执行此操作?

答案1

这使用宏\addpictures\picturepages添加几页的图片。在本例中,我使用了 [p] 个图,尽管这实际上并不需要,而且会增加另一页延迟。

\@abspage@last是 LaTeX(最近添加)在辅助文件中提供的全局宏。需要运行两次才能起作用。

\documentclass{book}
\usepackage{graphicx}
\usepackage{afterpage}
\usepackage{lipsum}% MWE only
\usepackage{duckuments}% MWE only

\newcommand{\picturepages}{5}% number of pages for \addpictures

\newcommand{\addpictures}{\begin{figure}[p]% picture 1
  \includegraphics[width=\textwidth, height=0.5\textheight]{example-image-duck}
  \caption{A cartoon duck.}
\end{figure}
\begin{figure}[p]% picture 2
  \includegraphics[width=\textwidth, height=0.5\textheight]{example-image-duck}
  \caption{A cartoon duck.}
\end{figure}
\begin{figure}[p]% picture 3
  \includegraphics[width=\textwidth, height=0.5\textheight]{example-image-duck}
  \caption{A cartoon duck.}
\end{figure}
\begin{figure}[p]% pictuer 4
  \includegraphics[width=\textwidth, height=0.5\textheight]{example-image-duck}
  \caption{A cartoon duck.}
\end{figure}
\begin{figure}[p]% picure 5
  \includegraphics[width=\textwidth, height=0.5\textheight]{example-image-duck}
  \caption{A cartoon duck.}
\end{figure}}

\newcounter{abspage}% \thepage not reliable
\setcounter{abspage}{1}% adjust for delay

\makeatletter
\AddToHook{shipout/before}{\stepcounter{abspage}%
  \ifnum\@abspage@last=\maxdimen\relax% first run
    \gdef\@abspage@last{0}%
    \afterpage{\addpictures}%
  \else
    \count1=\@abspage@last\relax
    \advance\count1 by -\picturepages\relax%
    \divide\count1 by 2\relax
    \ifnum\count1=\value{abspage}%
      \afterpage{\addpictures}%
    \fi
  \fi}
\makeatother

\begin{document}

\lipsum[1-60]

\end{document}

相关内容