LaTeX/PSTricks
PSTricks 是一组扩展。基本包是pstricks,其他包可能在需要时加载。
该xcolor扩展与 PSTricks 一起加载,因此无需手动加载它。
PSTricks 有一项技术规范:它在内部使用 PostScript,因此得名。因此,您不能使用pdftex或pdflatex编译器,您需要使用dvips来获取您的正确文档。由于ps2pdf,仍然可以从 PS 文件中获取 PDF。还可以使用 PDFTricks 扩展,这使得它可以使用pdflatex与 PSTricks 命令一起使用。
但是,如果您安装了xetex-pstricks包,您可以使用pstricks与xetex或xelatex一起使用,无需修改源文件。
PSTricks 命令通常放在 pspicture
环境中。
\begin{pspicture}(x1,y1)
% ...
\end{pspicture}
括号之间的第一个参数指定图片右上角的坐标。左下角位于 (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(即 2mm)。您可以指定参数
\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
: 与上面相同,但valueneg指定负坐标的大小,valuepos指定正坐标的大小。ticklinestyle=value
: 不言自明。value可以是solid, dashed, dotted
之一。这对于大型刻度(例如ticksize
很大)很有用。
- 示例
\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}
通用参数
[edit | edit source]所有形状
[edit | edit source]这些应该添加到方括号之间。
linewidth=value
: 如果value没有单位,则使用默认单位。linecolor=color
: color由xcolor包定义。linestyle=value
: value是dashed,dotted
之一。doubleline=true
.showpoints=true
: 高亮显示点。dotscale=value
指定点的尺寸。dotstyle=value
其中value属于- *: 圆盘
- o: 圆形
- +,x: 十字形
- square, squarre*: 星号版本已填充。
- diamond, diamond*
- triangle, triangle*
- 等等。
例如
\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是一个带或不带单位的数字。这会更改绘图的比例,但不会更改线的宽度。
开放形状
[edit | edit source]您可以使用可选参数{symbol1-symbol2}
定义开放形状(线、折线、弧线等)的极值。有一个相当完整的可用符号列表。
- <或>: 箭头。
- <<或>>: 双箭头。
- |: 条形。
- |*: 居中条形。
- oo: 圆形。
- o: 居中圆形。
- **: 圆盘。
- *: 居中圆盘。
- |<或>|: 箭头加条形。
- cc: 圆角极值。
- c: 居中圆角极值。
示例
\psline{|->>}(x0,y0)(x1,y1)
封闭形状
[edit | edit source]对于封闭形状,您可以定义填充样式。
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}
对象位置
[edit | edit source]\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扩展
[edit | edit source]原始的PSTricks包不能与pdflatex一起使用,但幸运的是PDFTricks允许我们绕过此限制。
- 用法
- 在前言中声明PDFTricks包。
- 将所有PSTricks扩展放在
psinputs
环境中;将所有PSTricks命令放在pdfpic
环境中。 - 使用以下命令编译pdflatex -shell-escape <file>.
该-shell-escape参数启用shell命令调用。它是必需的,以便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}
使用PSTricks与pdflatex的另一种方法是pst-pdf包定义。