自动确定带有图表的页数

自动确定带有图表的页数

我想获取文档中所有包含图片的页面的列表。具体来说,就是从我的 LaTeX 文档创建的 PDF 文件中的页码。这样我就可以只打印彩色页面,而将其余页面保留为黑白,从而节省打印成本。不幸的是,打印机本身只允许为整个打印作业选择彩色或黑白,所以我需要手动划分页面范围(有些型号可以逐页决定,但这款不行)。

我在 Linux(基于 Debian)上使用 TeX Live。

有没有办法使用某些工具或选项自动确定这一点?

答案1

示例复制自 egreg 的答案,但这次使用了\makeindex

\documentclass{article}
\usepackage{graphicx}
\usepackage{makeidx}
\makeindex

\let\oldincludegraphics\includegraphics
\renewcommand\includegraphics{\index{~@Pages containing figures}\oldincludegraphics}
\newwrite\listofgraphics

\begin{document}
A page without graphics
\clearpage
A page with graphics\\
\includegraphics{example-image}
\clearpage
A float
\begin{figure}[htp]
\includegraphics{example-image}
\end{figure}
and a delayed float
\begin{figure}[p]
    \includegraphics{example-image}
\end{figure}
\clearpage
A page without graphics
\clearpage
Again page with graphics\\
\includegraphics{example-image}
\clearpage

\printindex

\end{document}

答案2

这是一个可能过于简单的方法

\documentclass{article}
\usepackage{graphicx}

\let\ORIincludegraphics\includegraphics
\renewcommand{\includegraphics}{%
  \write\listofgraphics{\thepage}%
  \ORIincludegraphics
}
\newwrite\listofgraphics
\AtBeginDocument{\immediate\openout\listofgraphics=\jobname.lis }
\AtEndDocument{\closeout\listofgraphics}

\begin{document}

A page without graphics
\clearpage

A page with graphics

\includegraphics{example-image}

\clearpage

A float

\begin{figure}[htp]
\includegraphics{example-image}
\end{figure}

and a delayed float

\begin{figure}[p]
\includegraphics{example-image}
\end{figure}

\clearpage

A page without graphics
\clearpage

\end{document}

.lis创建的文件的内容是

2
3
4

相关内容