在 LaTex 中,可以直接使用 picture
环境绘制图形。但这种方法具有局限性,比如线段的斜率和圆的半径只能在一个很小的范围内取值。picture
环境提供了 \qbezier
命令,"q"
表示 "quadratic"
。许多常用的曲线如圆、椭圆、或者悬链线都可以用二次 Bezier 曲线得到令人满意的近似,虽然这可能需要一些辛苦的数学准备。
虽然在 LaTex 里绘图有局限性而且比较繁琐,但绘图而不插入额外的图片,会使得生成的文档体积较小,比较实用。
如果想要在 LaTex 中使用 picture
环境来绘制一些简单的图形,就需要知道它的语法,如下所示:
\begin{picture}(x,y)...\end{picture}
% 或者
\begin{picture}(x,y)(x0,y0)...\end{picture}
(x, y)
:在文档中图形保留一个矩阵的区域。(x0, y0)
:可选参数,为矩形左下角指派任意的坐标。相对于\unitlength
而言,任何时候(除了在picture
环境之内以外),都可以使用命令\setlength{\unitlength}{1.2cm}
来改变。
大多数的绘图命令是下面两种格式之一
\put(x,y){object}
% 或者
\multiput(x,y)(△x,△y){n}{object}
(x, y)
:起始点。(△x,△y)
:从一个对象到下一个的平移向量。{n}
:n
为对象的数目。{object}
:object
为要绘制的对象。
控制绘制图像的线宽的两类命令如下所示:
\linethickness{length}
:仅对水平和垂直直线及二次Bézier
曲线有作用。\thinlines
与\thicklines
:可以作用于倾斜的线段、圆和椭圆。\thinlines
让线变得更细;\thicklines
让线变得更粗。
下面是使用 \multiput
的案例。
\setlength{\unitlength}{2mm}
\begin{picture}(30,20)
\linethickness{0.075mm}
\multiput(0,0)(1,0){26}{\line(0,1){20}}
\multiput(0,0)(0,1){21}{\line(1,0){25}}
\linethickness{0.15mm}
\multiput(0,0)(5,0){6}{\line(0,1){20}}
\multiput(0,0)(0,5){5}{\line(1,0){25}}
\linethickness{0.3mm}
\multiput(5,0)(10,0){2}{\line(0,1){20}}
\multiput(0,5)(0,10){2}{\line(1,0){25}}
\end{picture}
圆
使用 picture
环境来绘制一个圆,它的语法如下:
\put(x,y){\circle{diameter}}
% 或
\put(x, y){\circle*{diameter}}
(x, y)
为圆心坐标。diameter
为圆的直径。picture
环境只允许diameter
直径最大值约为14mm
。\circle{}
画出空心圆;\circle*{}
画出实心圆。
跟线段的情况一样,你可能需要其他宏包的帮助,比如 eepic
或者 pstricks
。
也可以使用二次 Bézier
曲线拼成一个圆。下面看案例。
\setlength{\unitlength}{1mm}
\begin{picture}(10,6)
\put(20,30){\circle{1}}
\put(20,30){\circle{4}}
\put(20,30){\circle{8}}
\put(20,30){\circle{14}}
\end{picture}