如何仅打印带有图形的页面?

如何仅打印带有图形的页面?

我的一个朋友最近完成了他的博士论文。为了节省墨粉,他用彩色打印机打印了带有数字的页面,但其他页面都用黑白打印机打印。为了做到这一点,他仔细检查了文档,并手工打印了每一页带有数字的页面。

虽然他很小心,但这似乎极易出错,我想知道是否有办法生成仅包含带有图形的页面的文档,同时保留完整文档的格式和分页?

答案1

最简单的方法可能是pdfpages包。它不是自动的,但您不必单独打印每一页,并且可以根据图形列表生成页面列表。

以下是一个例子:

\documentclass{article}
\usepackage{pdfpages}
\begin{document}
\includepdf[pages={3-6, 17, 28, 29-31}]{yourdocument}
\end{document}

使用此方法时要记住的一件事是,页码对应于物理页的数量yourdocument.pdf不是文档中的页码。这意味着,如果您有n \frontmatter页数(在论文中,你会这样做),那么所有相关的页码都会偏离n。解决这个问题最简单的方法是从 pdf 文档中删除所有前言页面,以生成提取的页面文档,这样第一个物理页面就对应于论文的第 1 页。

自动化

从理论上讲,可以稍微自动化一下这个过程,尽管对于只做一两次的事情来说,这可能不值得。对于那些喜欢挑战的人,这里有一些想法(基于评论中的讨论)。

  1. 修改\addtocontents图形代码,以便写出页码列表,供后续在pdfpages文档中使用。这似乎是实际自动化中工作量最大、收获最少的事情。
  2. lof使用您最喜欢的脚本语言从文件中提取条目.aux,并解析出页码。然后脚本可以生成整个pdfpages文档。如果您确实需要自动化该过程,这可能是最好的方法。
  3. 您只需这样做一两次;手动完成上述 2 项,然后利用剩余的时间享用啤酒。

答案2

我尝试了一下,想出了一个解决方案。可能不是最好的,但它有效。该解决方案基于@Alan Munn 的答案。

这是一个 shell 脚本,适用于所有pdfpages安装了 pdfLaTeX 的 Unix 系统。使用它时,您需要提供 TeX 文件的文件名(无 .tex 结尾!)和页面偏移量(由前置内容引起)作为第二个参数:

./only-figures.sh document 1

首先,我们加载 .aux 并准备将其存储在变量中。

STR=$(cat $1.aux |\

我们只关心带有数字的线条。

 grep figure |\

在这些行中,我们只关心引用唯一页面的数量。

 sed 's/.*}}{\([1-9]*\)}}/\1/' | uniq |\

然后我们将偏移量添加到页码。

 awk '{print $0+'$2'}' |\

最后将它们全部打包到以逗号分隔的列表中。

 sed ':a;N;$!ba;s/\n/,/g')

模板文件用于新的临时文档。

cat template.tex | sed s/@@@/$STR/ > only-figures-tmp.tex

模板如下所示:

\documentclass{article}
\usepackage{pdfpages}
\begin{document}
\includepdf[pages={@@@}]{document}
\end{document}

我们在临时文件上调用 pdfLaTeX,移动新的 PDF 并进行清理。

pdflatex only-figures-tmp
mv -f only-figures-tmp.pdf $1-only-figures.pdf
rm only-figures-tmp.*

整个事情也可以找到在这个要点中

相关内容