我正在写一本书,我想添加几张图片。
我可以将它们添加到文本之间,但我想要做的(以及我在现有书籍中看到的)是将图像放在书的中间。
假设我有 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}