PSTricks 是一组扩展包。基本包是 pstricks,当需要时,可以加载其他包。

xcolor 扩展包会随着 PSTricks 一起加载,因此不需要手动加载。

PSTricks 的一个技术规范是:它内部使用 PostScript,因此命名为 PSTricks。由于这一点,您不能使用 pdftexpdflatex 编译器,而需要使用 dvips 来生成正确的文档。尽管如此,借助 ps2pdf,您仍然可以从 PS 文件生成 PDF。也可以使用 PDFTricks 扩展包,这使得可以与 PSTricks 命令一起使用 pdflatex

然而,如果您安装xetex-pstricks 包,您可以使用 xetexxelatex 来配合 PSTricks 使用,无需修改源文件。

pspicture 环境

PSTricks 命令通常放置在 pspicture 环境中:

\begin{pspicture}(x1,y1)
% ...
\end{pspicture}

第一个参数 x1, y1 用圆括号指定图片的右上角坐标。左下角的坐标是 (0,0),并且位于 LaTeX 文档中下一个字符的参考点。

也可以指定左下角 (x0, y0) 的坐标:

\begin{pspicture}(x0,y0)(x1,y1)
% ...
\end{pspicture}

因此,图片的大小为 (x1–x0) × (y1–y0)。默认坐标单位为厘米(cm);可以通过 \psset 命令更改,例如 \psset{unit=1bp}。允许使用任何 TeX 单位。

基本对象

直线和多线段
绘制简单的直线:

\psline(x0,y0)(x1,y1)

要绘制一个向量,添加箭头作为参数:

\psline{->}(x0,y0)(x1,y1)

可以添加多个点来绘制多线段:

\psline(x0,y0)(x1,y1)(x2,y3)…(xn,yn)

要获得圆角,添加以下选项:

\psline[linearc=0.2]{->}(0,0)(2,1)(1,1)

或者:

\psline[linearc=0.2,arrows=->](0,0)(2,1)(1,1)

矩形
绘制矩形:

\psframe(x0,y0)(x1,y1)

带星号版本绘制填充矩形:

\psframe*(x0,y0)(x1,y1)

使用以下参数来获得圆角:

\psframe[framearc=0.2](x0,y0)(x1,y1)

多边形
多边形总是闭合的,语法与 \psline 相同:

\pspolygon(x0,y0)(x1,y1)(x2,y2)...(xn,yn)

对于矩形,带星号版本绘制填充的多边形。linearc=0.2 选项会绘制圆角。

圆形、弧线和椭圆
带星号版本会填充形状。

对于圆形,需要提供中心坐标和半径:

\pscircle(x,y){r}

要限制绘制为弧线,请附加起始角度和结束角度,采用三角函数表示法:

\psarc(x,y){r}{angle1}{angle2}

最后是椭圆:

\psellipse(x,y)(horizontal_axis,vertical_axis)

曲线

\psparabola(x0,y0)(x1,y1)

将绘制一个对称的抛物线,具有垂直渐近线,顶点为 (x1,y1),并结束于 (x0,y0)

使用 \psbezier 绘制具有任意数量控制点的贝塞尔曲线。弧线最多可以有 4 个控制点。使用 showpoints=true 选项可以绘制控制点和切线。

使用 \pscurve 绘制给定点的插值,\psecurve 命令省略了第一个和最后一个弧线。

文本
使用:

\rput(x,y){text}

来绘制文本。提供一个角度来旋转文本:

\rput{angle}(x,y){text}

您可以为文本提供一个锚点,该锚点位于指定的坐标处。

\rput[t]{45}(5,5){text}

可用的锚点有:

  • B, Bl, Br: 基线中部、左侧和右侧。

  • t, tl, tr: 顶部中部、左侧和右侧。

  • b, bl, br: 底部中部、左侧和右侧。

还有一个 \uput 命令,具有更多选项:

\uput{distance}[angle](x,y){text}

distance 参数是距离坐标的距离。

PSTricks 提供了几种文本框样式

  • \psframebox{text}: 矩形。

  • \psdblframebox{text}: 双重矩形。

  • \psshadowbox{text}: 阴影矩形。

  • \pscirclebox{text}: 圆形。

  • \psovalbox{text}: 椭圆形。

  • \psdiabox{text}: 菱形。

  • \pstribox{text}: 三角形。

示例

\rput(5,5){\psdiabox*[fillcolor=green]{text}}

使用 pst-text 扩展包,可以绘制文本路径

\pstextpath{shape}{text}

如果要沿路径打印文本但不打印路径,可以使用 \psset{linestyle=none}

示例

\usepackage{pst-text}

% ...
\begin{pspicture}(5,5)
\psset{linestyle=none}
\pstextpath{\psline(0,0)(1,1)(2,0)}{triangle text}
\end{pspicture}

网格

默认情况下,\psgrid 命令将在 pspicture 内绘制一个网格,间距为 0.2(即 2 毫米)。可以指定参数:

  • \psgrid(xmax,ymax):从 (0,0)(xmax,ymax) 绘制网格。

  • \psgrid(xmin,ymin)(xmax,ymax):从 (xmin,ymin)(xmax,ymax) 绘制网格。

  • \psgrid(x0,y0)(xmin,ymin)(xmax,ymax):从 (xmin,ymin)(xmax,ymax) 绘制网格,其中一个节点位于 (x0,y0)

其他参数:

  • griddots=value:主刻度线的完整线被替换为虚线,value 是每个刻度的点数。

  • subgriddots=value:与 griddots 相同,但适用于子刻度。

  • gridcolor=color, subgridcolor=color:主刻度线和子刻度线的颜色

  • gridwidth=value, subgridwidth=value:线条宽度。

  • subgriddiv=value:两个主刻度之间的子刻度数。

  • gridlabels=value:标签数字的大小。

  • ticksize=value:刻度线的大小。

  • ticksize=valueneg valuepos:为负坐标和正坐标分别指定大小。

  • ticklinestyle=value:刻度线的样式,值可以是 soliddasheddotted

示例

\psgrid[griddots=5, subgriddiv=0, gridlabels=0pt](-1,-1)(5,5)

如果要添加坐标轴,可以使用 pstricks-add 扩展包,命令如下:

  • \psaxes(xmin,ymin)(xmax,ymax)

  • \psaxes(x0,y0)(xmin,ymin)(xmax,ymax)

其中 (xmin,ymin)(xmax,ymax) 为坐标轴的极限,(x0,y0) 为交点。

选项

  • Dx=valueDy=value 定义刻度线之间的间距。

  • comma 允许使用逗号作为小数点分隔符。

  • 如同线条,{->} 为坐标轴添加箭头。

示例

\usepackage{pstricks-add}
% ...
\begin{pspicture}(-1,-1)(5,5)
\psaxes[comma,Dx=0.5,Dy=0.5]{->}(0,0)(3,3)
\end{pspicture}

通用参数

所有形状
这些参数应加在方括号中:

  • linewidth=value:如果没有单位,使用默认单位。

  • linecolor=color颜色xcolor 包定义。

  • linestyle=value:值为 dasheddotted 等。

  • doubleline=true:使用双线。

  • showpoints=true:突出显示控制点。

  • dotscale=value:指定点的大小。

  • dotstyle=value:可选值:*(圆盘)、o(圆形)、+x(十字)、square(方块)、diamond(菱形)等。

例如

\pscircle[linewidth=0.2,linestyle=dashed,linecolor=blue](0,0){1}

应用全局参数

\psset{linewidth=0.2,linestyle=dashed,linecolor=blue}
\pscircle(0,0){1}

此命令还允许您更改长度的默认单位:

  • unit=value

  • xunit=valueyunit=value

value 是一个带或不带单位的数字。这会改变绘图的缩放,但不会改变线条的宽度。

开放形状

您可以通过可选参数 {symbol1-symbol2} 定义开放形状(线条、多线段、弧线等)的极限。有许多可用的符号:

  • <>:箭头。

  • <<>>:双箭头。

  • |:条形。

  • |*:居中条形。

  • oo:圆形。

  • o:居中圆形。

  • **:圆盘。

  • *:居中圆盘。

  • |<>|:箭头加条形。

  • cc:圆角极限。

  • c:居中圆角极限。

示例

\psline{|->>}(x0,y0)(x1,y1)

闭合形状
对于闭合形状,您可以定义填充样式:

  • fillstyle=value:图案。可能的值有:crosshatchcrosshatch*vlinesvlines*hlineshlines*solid

  • fillcolor=color:填充颜色

  • hatchcolor=color:网纹颜色

  • hatchwidth=value:网纹宽度。

  • hatchsep=value:网纹间距。

  • hatchangle=value:网纹角度。

示例

\pscircle[hatchcolor=blue,fillstyle=vlines](0,0){1}

物体定位

可以使用 \rput\uput 命令来移动任何对象。

示例

\begin{pspicture}(5,5)
\psline{->}(0,0)(1,1)
\rput(1,1){\psline{->}(0,0)(1,1)}
\end{pspicture}

或者:

\begin{pspicture}(5,5)
\psline{->}(0,0)(1,1)
\psline{->}(1,1)(2,2)
\end{pspicture}

您可以使用 \multirput 命令重复操作:

\multirput(x0,y0)(xoffset, yoffset){times}{object}

您可以使用与 \rput 相同的选项:

\multirput[reference]{angle}(x0,y0)(xoffset, yoffset){times}{object}

如果只有图形没有文本,您可以使用 \multips 命令:

\multips(x0,y0)(xoffset, yoffset){times}{object}
\multips{angle}(x0,y0)(xoffset,yoffset){times}{object}

PDFTricks 扩展包

原始的 PSTricks 包不能与 pdflatex 配合使用,但幸运的是,PDFTricks 允许我们绕过这个限制。

使用方法

在文档的导言部分声明 PDFTricks 包。
将所有 PSTricks 扩展包放入 psinputs 环境中,将所有 PSTricks 命令放入 pdfpic 环境中。
使用命令 pdflatex -shell-escape <file> 进行编译。
-shell-escape 参数启用外部命令调用,这是 PDFTricks 运行所必需的。

示例

\documentclass{article}
 
\usepackage{pdftricks}
\begin{psinputs}
   \usepackage{pstricks}
   \usepackage{multido}
\end{psinputs}
 
% ...
 
\begin{document}
 
% ...
 
\begin{pdfpic}
   \psset{unit=\linewidth}
   \begin{pspicture}(0,0)(10,10)
      [...]
   \end{pspicture}
\end{pdfpic}
 
% ...
 
\end{document}

另一种方法是使用 pst-pdf 包来与 pdflatex 配合使用 PSTricks。


Last modified: Wednesday, 23 April 2025, 11:03 AM