LaTeX
PSTricks 是一组扩展包。基本包是 pstricks,当需要时,可以加载其他包。
xcolor 扩展包会随着 PSTricks 一起加载,因此不需要手动加载。
PSTricks 的一个技术规范是:它内部使用 PostScript,因此命名为 PSTricks。由于这一点,您不能使用 pdftex 或 pdflatex 编译器,而需要使用 dvips 来生成正确的文档。尽管如此,借助 ps2pdf,您仍然可以从 PS 文件生成 PDF。也可以使用 PDFTricks 扩展包,这使得可以与 PSTricks 命令一起使用 pdflatex。
然而,如果您安装了 xetex-pstricks 包,您可以使用 xetex 或 xelatex 来配合 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:刻度线的样式,值可以是solid、dashed、dotted。
示例:
\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=value和Dy=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:值为dashed、dotted等。 -
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=value和yunit=value
value 是一个带或不带单位的数字。这会改变绘图的缩放,但不会改变线条的宽度。
开放形状
您可以通过可选参数 {symbol1-symbol2} 定义开放形状(线条、多线段、弧线等)的极限。有许多可用的符号:
-
<或>:箭头。 -
<<或>>:双箭头。 -
|:条形。 -
|*:居中条形。 -
oo:圆形。 -
o:居中圆形。 -
**:圆盘。 -
*:居中圆盘。 -
|<或>|:箭头加条形。 -
cc:圆角极限。 -
c:居中圆角极限。
示例:
\psline{|->>}(x0,y0)(x1,y1)
闭合形状
对于闭合形状,您可以定义填充样式:
-
fillstyle=value:图案。可能的值有:crosshatch、crosshatch*、vlines、vlines*、hlines、hlines*、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。