我想获取文档中所有包含图片的页面的列表。具体来说,就是从我的 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