问题

问题

我的问题如下:

我的代码是用pdflatex.exe --shell-escape -interaction=nonstopmode %.tex

其图像(使用 TeXstudio)

在此处输入图片描述

编译后有两个文件:filename.pdffilename-pics.pdf

问题

如果我使用独立环境,如何忽略两个文件中的一个?可能不行?

最小工作示例

\documentclass[12pt]{standalone}
\usepackage{newcent}
\usepackage{pstricks,pst-venn}
\usepackage{auto-pst-pdf} 
\begin{document}
\begin{pspicture}(-3,-3)(3,3)
\psframe(-2.8,-2.8)(2.8,2.8)
\psVenn[bgcircle=false](-1,.5)(0,-1)(1,.5){1.5}{4}
\rput(-1,1.2){A}\rput(1,1.2){B}\rput(0,-2.1){C}
\psline(0,1.3)(.4,2.3)  \uput[20](.3,2.4){$?$}
\end{pspicture}
\end{document}

结果 :

在此处输入图片描述

P/s:在使用standalone环境的时候,它们是等效的。

答案1

我的最佳实践(建议)如下。

  • standalone每个图表都应使用文档类放在单独的文件中。
  • 如果您想在图表和文本中使用相同的字体,则创建一个私有包,该包将由主输入文件和图表输入文件加载。
  • 始终使用 编译图表,latex然后dvips使用ps2pdf生成 PDF 格式的图表。与使用 相比,此方法非常非常快xelatex。不要加载auto-pst-pdf此图表输入文件。
  • 使用 从主输入文件中加载 PDF 图表\includegraphics,并使用 编译主输入文件pdflatex

编辑

回应您对第三步的评论,以下是您必须执行的步骤。我不使用 TeXStudio,所以我不确定是否有快捷方式可以一次性调用所有这些步骤。请注意,以下代码是-shell-escape为了我自己的目的而打开的。

在此处输入图片描述

另一个技巧

第二,编写一个批处理文件,如下所示。将其保存为任意名称,例如pstricksbuilder.bat。将文件保存在安全的地方,这样以后格式化硬盘时就不会丢失它。

echo off

rem %1 TeX input filename without extension

if exist "%~1.pdf" del "%~1.pdf"

if exist "%~1.tex" latex -shell-escape "%~1.tex"

if exist "%~1.dvi" dvips -t unknown "%~1.dvi"

if exist "%~1.ps" gswin64c -dCompatibilityLevel=1.5 -dAutoRotatePages=/None -sDEVICE=pdfwrite -o "%~1.pdf" "%~1.ps"

for %%x in (aux dvi log out ps toc nav snm) do (if exist "%~1.%%x" del "%~1.%%x")

第一的,安装 GhostScript 64 位。如果您使用 Ghostscript 32 位,则必须将其更改gswin64cgswin32c(我认为名称是正确的)。

第三,将批处理注册到PATH环境变量。我想您知道该怎么做。如果您不知道,请发表评论。

在此处输入图片描述

第四,将任何未使用的(例如DVI Viewer)TeXStudio 命令替换为pstricksbuilder.bat %。完成!

第五,请使用以下测试页。

\documentclass[pstricks,border=12pt,12pt]{standalone}
\begin{document}
\begin{pspicture}[showgrid](3,3)

\end{pspicture}
\end{document}

注意:删除auto-pst-pdf输入文件中的包。确保将pstricks选项传递给\documentclass[pstricks]{standalone}

最简单的技巧

完成上述技巧后,您现在有了另一个技巧,最简单的技巧。您不需要注册到 PATH 等,只需编辑以下内容即可。

在此处输入图片描述

答案2

对于standalone文档以下代码:

\documentclass[12pt,pstricks]{standalone}
\usepackage{pst-venn}
\begin{document}
    \begin{pspicture}(-3,-3)(3,3)
    \psframe(-2.8,-2.8)(2.8,2.8)
    \psVenn[bgcircle=false](-1,.5)(0,-1)(1,.5){1.5}{4}
    \rput(-1,1.2){A}\rput(1,1.2){B}\rput(0,-2.1){C}
    \psline(0,1.3)(.4,2.3)  \uput[20](.3,2.4){$?$}
    \end{pspicture}
\end{document}

创建一个<file>.pdf <file>-pics.pdf

使用auto-pst-pdf例如:

\documentclass[12pt]{article}
\usepackage{auto-pst-pdf}
\usepackage{pst-venn}
\begin{document}
    \begin{pspicture}(-3,-3)(3,3)
    \psframe(-2.8,-2.8)(2.8,2.8)
    \psVenn[bgcircle=false](-1,.5)(0,-1)(1,.5){1.5}{4}
    \rput(-1,1.2){A}\rput(1,1.2){B}\rput(0,-2.1){C}
    \psline(0,1.3)(.4,2.3)  \uput[20](.3,2.4){$?$}
    \end{pspicture}
\end{document}

创建一个辅助文件<file>-pics.pdf,用于收集全部图像作为单页将被自动包含在 pdf 中。

使用 documentclassstandalone auto-pst-pdfid 没有意义,因为 standalone它本身就创建了图像!

相关内容