如何在 pdfLaTeX 中使用 PSTricks?

如何在 pdfLaTeX 中使用 PSTricks?

我以为 PSTricks 包不能在 pdfLaTeX 中使用,但是用户 Dima 则持相反观点

那么我该如何强制 pdfLaTeX 使用 PSTricks 呢?

答案1

最简单的方法是运行xelatex而不是pdflatex。它会检测文档中的 PostScript 代码或 eps 图像并即时进行转换。如果您不想使用,xelatex还有其他解决方案:

如果你有最新的 TeX 发行版,请使用

\usepackage[pdf]{pstricks}

然后使用 运行您的文档pdflatex -shell-escape <file>。然后 PSTricks 图像将即时创建为独立的 pdf 图像并保存在 中<file>-pics.pdf。如果您有较旧的系统,请使用

\usepackage{auto-pst-pdf}
\usepackage{pst-...}

有关详细信息,请参阅PSTricks 网页

对于 Windows,你必须安装Perl版本,如果你想使用 auto-pst-pdf 包的全部功能。但是,如果你不想或无法安装 Perl,那么使用

\usepackage[crop=off]{auto-pst-pdf}

还有一个 Perl 脚本 pst2pdf,它可以使用 pdflatex 创建文档,也可以将 PSTricks 图像作为pdf|png|whatever图像。它获取主文档的序言,并为所有 PostScript 特定代码创建独立文档。

答案2

虽然我不知道 Herbert 提供的解决方案,但我还是想介绍一下另一种解决方案。

您可以按照以下步骤轻松地将 pstricks 与 pdflatex 结合使用:

  1. 在您的 .tex 文件中包括 pstricks 包(仅当您想使用 pstricks 扩展时才需要第二个包):

    \usepackage{pst-all}
    \usepackage{pstricks-add}
    

现在,当处理您的文件以生成最终的 pdf 文件时,请执行以下步骤(下面假设 main.tex 是您的主要 tex 文件):

  1. 创建 dvi 文件:

    latex main.tex
    
  2. 创建 postscript 文件:

    dvips -Ppdf -G0 main.dvi
    
  3. 最后生成pdf文件:

    ps2pdf main.ps
    

幸运的是,所有这些步骤都可以在 makefile 中自动完成(我希望有一种方法可以将文件附加到这些答案,但我在高级帮助中没有找到,对此感到抱歉):

NAME    = myfile.pdf
SRC     = main.tex
OBJ     = main.pdf

# Macro Definitions 
LATEX   = latex
DVIPS   = dvips
PSPDF   = ps2pdf
RM      = /bin/rm -f    
TAR     = tar

.SUFFIXES: .tex .dvi .ps .pdf

.tex.dvi:
    $(LATEX) $<

.dvi.ps:
    $(DVIPS) -Ppdf -G0 $<

.ps.pdf:
    $(PSPDF) $<

##############################
# Basic Compile Instructions #
##############################

all:    $(NAME)

$(NAME): $(OBJ)
    @mv $(OBJ) $(NAME)

: $(SRC)

clean:
    @$(RM) *.aux *.log *.nav *.out *.snm *.toc *.dvi *.bbl *.blg *~

delete: clean
    @$(RM) $(NAME) $(OBJ) *.ps *.tar.gz

help:
    @echo "Type 'make; bibtex main; make; make' to get the pdf file"
    @echo "Type 'make clean' to delete all intermediate files"
    @echo "Type 'make delete' to delete all intermediate and output files"

如果你将此 makefile 复制并粘贴到你的某个文件中,请确保将标签放在正确的位置。

这种方法的优点是运行起来很顺畅,只需在编辑 LaTeX 文件后输入 make,就可以为您完成所有艰苦的工作,而无需您处理其他中间步骤。如果您必须处理 bib 引用,请输入:make,然后bibtex再次输入make

答案3

另一种方法:

% TeX it with pdflatex -shell-escape filename
% filename.tex
\documentclass{article}

\usepackage{filecontents}

%====== begin file contents ======
\begin{filecontents*}{circle.tex}
\documentclass[border=12pt,pstricks]{standalone}
\usepackage{pstricks}
\begin{document}
\begin{pspicture}[showgrid](4,4)
    \pscircle*[linecolor=red](2,2){2}
\end{pspicture}
\end{document}
\end{filecontents*}
%====== end file contents ======


\usepackage{graphicx}
\IfFileExists{circle.pdf}
{% if exist do nothing
 % file age should be taken under consideration but it is ignored for simplicity!
}
{% if not exist do the following
  \immediate\write18{latex circle && dvips circle && ps2pdf -dNOSAFER -dAutoRotatePages=/None circle.ps}%
}
\begin{document}


\begin{figure}
\centering
\includegraphics[scale=2]{circle}
\caption{Red Circle}
\label{fig:RedCircle}
\end{figure}
\end{document}

答案4

为了完整起见,有一个脚本ps4pdf运行以下命令将使用 PSTricks 的 .tex 文件转换为 PDF。

latex $1.tex
dvips -Ppdf -o $1-pics.ps $1.dvi
ps2pdf $1-pics.ps $1-pics.pdf
pdflatex $1.tex
bibtex $1
pdflatex $1.tex

相关内容