我的问题如下:
我的代码是用pdflatex.exe --shell-escape -interaction=nonstopmode %.tex
其图像(使用 TeXstudio)
编译后有两个文件:filename.pdf
和filename-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 位,则必须将其更改gswin64c
为gswin32c
(我认为名称是正确的)。
第三,将批处理注册到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-pdf
id 没有意义,因为
standalone
它本身就创建了图像!