基本上ps2pdf -dEPSCrop
没有裁剪到指定的完整范围,而是停在某个神秘的点。我试图修剪图像左侧的空白,但-dEPSCrop
无论我为 pspicture 环境变量的左下边界框坐标赋予什么值,它都会立即停止。
请在以下位置找到不太 MWE:http://pastebin.com/MYAJtLUu
以下文件删除了除\uput
's 之外的所有内容:
\documentclass[english,landscape,a4paper]{slides}
\usepackage{graphics}
\usepackage{graphicx}
\usepackage{babel}
\usepackage{pst-eps}
\usepackage{pstricks}
\usepackage{multido}
\usepackage{pst-node}
\usepackage{pst-math}
\usepackage{pstricks-add}
\begin{document}
\begin{TeXtoEPS}
\begin{pspicture}(2,-2.966)(12.064,0)
\psset{linejoin=1}
\newcommand{\verysmall}{\fontsize{9}{9pt}\selectfont}
\verysmall
\uput{0.2mm}[180](2.349,-1.66){$s$}
\uput{1mm}[225](2.522,-2.043){$c$}
\uput{1mm}[-110](4.067,-.9){$b$}
\uput{0.25mm}[-45](8.405,-2.671){$a$}
\uput{0mm}[0](11.808,-1.66){$t$}
\uput{1mm}[100](4.799,-1.199){$d$}
\uput{0.5mm}[90](8.653,-2.597){$e$}
\end{pspicture}
\end{TeXtoEPS}
\end{document}
我正在尝试从 pstricks 图形创建裁剪的 PDF 图像。我的工作流程如下:
latex NoSoMWE.tex
dvips -E NoSoMWE.dvi
ps2pdf -dEPSCrop NoSoMWE.ps NoSoMWE.pdf
然而,最近,ps2pdf -dEPSCrop
当 pstricks 文件使用\uput
指令时,它不再起作用。但是,当\uput
从不太 MWE 中删除所有 时,裁剪会起作用。如果最多一 \uput
指令被使用。
请指教,谢谢。
答案1
如果你的目标是
- 获得独立的 PDF 输出,周围没有过多的空白,并且
- 从主 (La)TeX 输入文件中导入生成的 PDF
那么剩下的段落可能对你有用。
在此回答中,我假设您是 Windows 用户。如果不是,则必须调整给定的 MS-DOS 批处理文件(在其他操作系统中也称为 make 文件)。
警告:我还假设用于生成独立 PDF 输出的 TeX 输入文件不会加载
animate
包。为什么?因为独立 PDF 输出中的动画将不再\includepdf{}
当使用或将其导入到您的主 TeX 文件中时,它就可以工作\includegraphics{}
。
我将在这个答案中使用下面的图像,并将其命名hen.jpg
。
我将根据用于生成独立 PDF 输出的输入文件是否导入图像来分为两种情况。如果您在用于生成独立 PDF 输出的输入文件中不导入图像,那么划分并不重要,但您应该选择更快的一种!
情况1
此编译比案例 2 中讨论的编译快得多。但是,如果您的输入文件导入了任何 PDF、PNG 和/或 JPG 类型的图像,则您无法使用此工作流程。如果您只导入 EPS 图像或不导入任何图像,则应选择此工作流程,因为编译速度要快得多!
创建一个批处理文件,将其命名为DevLa.bat
,以编译用于生成独立 PDF 输出的输入文件。
rem It takes an input file name WITHOUT extension.
echo off
del %1.pdf
rem latex %1
latex %1
dvips -D10000 -t unknown %1
gswin32c -r10000 -dCompatibilityLevel=1.5 -dAutoRotatePages=/None -dPDFSETTINGS=/prepress -dNOPAUSE -dBATCH -sDEVICE=pdfwrite -sOutputFile=%1.pdf %1.ps
del %1.log
del %1.aux
del %1.dvi
del %1.ps
为了简单起见,您可以将其保存在输入文件所在的同一目录中。如果您想将此批处理重新用于其他项目,则需要设置 PATH 环境变量。
以下 MWE withoutimage.tex
(不导入图像)可以编译DevLa.bat
% withoutimage.tex
\documentclass{article}
\usepackage{pstricks,multido}
\SpecialCoor
\psset
{
linecolor=red,
arrows=->,
arrowscale=1.5 0.75
}
\usepackage[active,tightpage]{preview}
\PreviewBorder=0pt
\PreviewEnvironment{pspicture}
\begin{document}
\begin{pspicture}(-2,-2)(2,2)
\psframe[linecolor=red](-2,-2)(2,2)
\multido{\i=0+30}{12}
{%
\psline(0.9;\i)
\uput{1}[\i]{\i}(0,0){$\i^\circ$}%
}
\end{pspicture}
\end{document}
通过调用
DevLa withoutimage
您将获得如下紧密的 PDF 输出。
案例 2
此编译比案例 1 中讨论的编译慢得多。但是,如果您的输入文件导入了任何类型的 PDF、PNG、JPG 和/或 EPS 图像,则可以使用此工作流程。如果您只导入 EPS 图像或不导入任何图像,则应选择案例 1 中的工作流程,因为它的编译速度要快得多!
创建一个批处理文件,将其命名为DevXe.bat
,以编译用于生成独立 PDF 输出的输入文件。
rem It takes an input file name WITHOUT extension.
echo off
del %1.pdf
rem xelatex %1
xelatex %1
del %1.log
del %1.aux
为了简单起见,您可以将其保存在输入文件所在的同一目录中。如果您想将此批处理重新用于其他项目,则需要设置 PATH 环境变量。
以下 MWE withimage.tex
(导入 JPG 图像)可以使用以下方法进行编译DevXe.bat
% withimage.tex
\documentclass{article}
\usepackage{graphicx}
\usepackage{pstricks,multido}
\SpecialCoor
\psset
{
linecolor=red,
arrows=->,
arrowscale=1.5 0.75
}
\usepackage[active,tightpage]{preview}
\PreviewBorder=0pt
\PreviewEnvironment{pspicture}
\begin{document}
\begin{pspicture}(-2,-2)(2,2)
\psframe[linecolor=red](-2,-2)(2,2)
\multido{\i=0+30}{12}
{%
\psline(0.9;\i)
\uput{1}[\i]{\i}(0,0){\includegraphics[scale=0.1]{hen}}% please adapt it!
}
\end{pspicture}
\end{document}
DevXe withimage
您将获得如下紧密的 PDF 输出。
导入独立 PDF 输出
获取独立的 PDF 输出后,您可以按如下方式从主输入文件中导入它们。
% main.tex
\documentclass{article}
\usepackage{graphicx}
\usepackage{lipsum}
\begin{document}
\lipsum[1]
\begin{figure}[hbtp]
\centering
\includegraphics[width=0.75\linewidth]{withoutimage}
\caption{This is a nice image.}
\end{figure}
\lipsum[2]
\begin{figure}[hbtp]
\centering
\includegraphics[scale=1.5]{withimage}
\caption{This is a nice image too.}
\end{figure}
\lipsum[3]
\end{document}
并且可以使用xelatex
或进行编译pdflatex
。
如果
main.tex
还有其他带标签的 PSTricks 代码,则使用,xelatex
因为pdflatex
会auto-pst-pdf
破坏标签。
结果如下。