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。