我知道可以通过添加以下代码在包含 PSTricks 图形的文档中使用 pdfLaTeX
\usepackage[pdf]{pstricks}
在序言中,然后运行
pdflatex --shell-escape <file>
然后,动态创建必要的 PDF 图形并将其存储在通用的<file>-pics.pdf
.
现在,我的问题是是否可以做同样的事情,但将每个图形存储在单独的 .pdf 中,而不是将它们全部存储在公共的 .pdf 中<file>-pics.pdf
。
答案1
使用命令行PDF 工具包你可以burst
将 PDF 转换为单页输出:
将单个输入 PDF 文档拆分为单独的页面。还会创建一个名为的报告
doc_data.txt
,该报告与 的输出相同dump_data
。如果省略输出部分,则 PDF 页面命名为:pg_%04d.pdf
,例如:pg_0001.pdf
,pg_0002.pdf
等。要自己命名这些页面,请在输出部分中提供printf
-styled 格式字符串。例如,如果您想要名为page_01.pdf
、page_02.pdf
等的页面,请传递output page_%02d.pdf
给pdftk
。读取单个输入 PDF 文件并将其元数据、书签(又称轮廓)、页面指标(媒体、旋转和标签)和其他数据报告给指定的输出文件名或(如果未指定输出)标准输出。非 ASCII 字符被编码为 XML 数字实体。不创建新的 PDF。
所以你会用
pdftk <file>-pics.pdf burst
(具有适当名称)以获取每幅图像的<file>
输出。pg_<num>.pdf
<num>
答案2
使用以下代码提取每一页并将其保存在单独的 PDF 文件中。
步骤如下:
- 改变
\def\filename{<filename>-pics}
。 - 用 编译
pdflatex -shell-escape extractor
。
% extractor.tex
\documentclass{article}
\usepackage{filecontents}
\begin{filecontents*}{template.tex}
\documentclass[preview]{standalone}
\usepackage{graphicx}
\begin{document}
\includegraphics[page=\Page]{\Filename}
\end{document}
\end{filecontents*}
\usepackage{multido}
\def\dojob#1#2{\immediate\write18{pdflatex -jobname=#1-#2 "\def\noexpand\Page{#2}\def\noexpand\Filename{#1} \noexpand\input{template}"}}
\def\filename{<filename>-pics}% you just need to change this !
\pdfximage{\filename.pdf}
\begin{document}
\multido{\i=1+1}{\the\pdflastximagepages}{\dojob{\filename}{\i}}
There are \the\pdflastximagepages\ file(s) generated.
\end{document}
模拟
使用 进行编译pdflatex -shell-escape main
。您将把每一页main-pics.pdf
保存在单独的 PDF 中。
% Main.tex
\documentclass{article}
\usepackage{filecontents}
\begin{filecontents*}{template.tex}
\documentclass[preview]{standalone}
\usepackage{graphicx}
\begin{document}
\includegraphics[page=\Page]{\Filename}
\end{document}
\end{filecontents*}
\usepackage{multido}
\def\dojob#1#2{\immediate\write18{pdflatex -jobname=#1-#2 "\def\noexpand\Page{#2}\def\noexpand\Filename{#1} \noexpand\input{template}"}}
\def\Separate#1{\pdfximage{#1.pdf}\multido{\i=1+1}{\the\pdflastximagepages}{\dojob{#1}{\i}}}
\usepackage[pdf]{pstricks}
\begin{document}
\section{Circle}
\begin{pspicture}[showgrid](3,4)
\pscircle{2}
\end{pspicture}
\section{Rectangle}
\begin{pspicture}[showgrid](3,4)
\psframe(3,4)
\end{pspicture}
\section{Separating PDF\ldots}
\Separate{main-pics}
There are \the\pdflastximagepages\ file(s) generated.
\end{document}
答案3
使用以下方式运行文档
pst2pdf <file>
它将生成一个完整的文档,并为子目录中的每个 pspicture 环境生成一个单独的 pdf。对于 Windows,它只需要安装 Perl,例如 Strawbery Perl 或来自http://www.activestate.com/perl. 对于 Linux,Perl 是默认存在的 :-)