原 文:在 LaTeX 中直接作图:Picture环境
译 者:Xovee
翻译时间:2020年11月3日
如果你需要在文档中加入一些简单的图形,picture
环境将是一个很好的选择。本篇文章将会介绍如何在 LaTeX 中使用该环境绘制圆形、线条,以及其他图形元素。
在 LaTeX 文件中,你可以直接使用代码来绘制图片:
\setlength{\unitlength}{1cm}
\thicklines
\begin{picture}(10,6)
\put(2,2.2){\line(1,0){6}}
\put(2,2.2){\circle{2}}
\put(6,2.2){\oval(4,2)[r]}
\end{picture}
picture
的语法是
\begin{picture}(width,height)(x-offset,y-offset)
参数是通过小括号来传递的。width
和height
就是宽和高,单位由这条命令设定:\setlength{\unitlength}{1cm}
。第二个参数是可选的,它定义了图形相对于左下角的坐标。下面给出几个其他命令的例子:
\put(6,2.2){\oval(4,2)[r]}
这个命令会绘制一个椭圆,其中心点的位置是(4,2)。参数[r]
是可选的,你可以使用r
、l
、t
、b
,分别代表椭圆的右、左、上、后者下半部分。不设定这个参数的话,那么整个椭圆都会被显示出来。
\put(2,2.2){\circle{2}}
这个命令会绘制一个园,其中心点是(2,2.2),半径是2。
在下一个章节,我们介绍剩下的命令。
不同的基础元素可以组合起来,从而绘制复杂的图形。
\setlength{\unitlength}{0.8cm}
\begin{picture}(12,4)
\thicklines
\put(8,3.3){
{\footnotesize $3$-simplex}}
\put(9,3){\circle*{0.1}}
\put(8.3,2.9){$a_2$}
\put(8,1){\circle*{0.1}}
\put(7.7,0.5){$a_0$}
\put(10,1){\circle*{0.1}}
\put(9.7,0.5){$a_1$}
\put(11,1.66){\circle*{0.1}}
\put(11.1,1.5){$a_3$}
\put(9,3){\line(3,-2){2}}
\put(10,1){\line(3,2){1}}
\put(8,1){\line(1,0){2}}
\put(8,1){\line(1,2){1}}
\put(10,1){\line(-1,2){1}}
\end{picture}
在这个例子中,图片中包含多个线和圆,同时还包含一些文字来作为元素的标签。下面解释各个命令:
\thicklines
这个命令改变线的粗细,让线变得更粗。你也可以使用 \thinlines,来让线变得更细。
\put(8,3.3){ {\footnotesize 3 3 3-simplex}}
这个命令会绘制一个填充的圆,其中心点是(9,3),半径是0.1。它很小,可以被当作成一个点。
\put(10,1){\line(3,2){1}}
这个命令会绘制一个直线,起点是(10,1),长度是1,方向是(3,2)。你可能需要进行一些计算来确定线的斜率。
你也可以在picture
环境中绘制箭头。下面介绍几个例子:
\setlength{\unitlength}{0.20mm}
\begin{picture}(400,250)
\put(75,10){\line(1,0){130}}
\put(75,50){\line(1,0){130}}
\put(75,200){\line(1,0){130}}
\put(120,200){\vector(0,-1){150}}
\put(190,200){\vector(0,-1){190}}
\put(97,120){$\alpha$}
\put(170,120){$\beta$}
\put(220,195){upper state}
\put(220,45){lower state 1}
\put(220,5){lower state 2}
\end{picture}
\put(120,200){\vector(0,-1){150}}
这个命令会绘制一个箭头,起点是(120,200),长度是150,方向是(0,-1)。
贝塞尔(Bézier curves)是一种特殊的曲线,绘制它需要三个参数:起点、终点、以及一个定义它有多曲的参数。
\setlength{\unitlength}{0.8cm}
\begin{picture}(10,5)
\thicklines
\qbezier(1,1)(5,5)(9,0.5)
\put(2,1){
{Bézier curve}}
\end{picture}
需要注意的是:命令\qbezier
(二次贝塞尔曲线)不在\put
命令之中。
需要传递的参数包括:
picture
是在 LaTeX 中创建图片的标准工具。如你所见,这个工具有时候限制很多,不太容易使用。不过它可以被大多数编译器支持,并且不需要引入额外的包。如果你需要创建更复杂的图片,你可以参考这两篇文档:
更多信息请见: