LaTex图和表之直接在 LaTeX 中绘制图表
LaTeX的内置环境可用于创建图表/图形 - 您无需加载任何外部软件包即可使用它,但是已经编写了诸如pict2e和picture之类的软件包来增强或改进其功能。本文简要介绍了picture该环境,所有示例都使用pict2e包。LaTeX2e 非官方参考手册LaTeX2ε的简短介绍(见第5章)维基百科picture-mode在tex.stackexchange的问题标记pict2e 软件包文档与Ti
LaTex图和表之直接在 LaTeX 中绘制图表
文章目录
介绍
LaTeX的内置环境可用于创建图表/图形 - 您无需加载任何外部软件包即可使用它,但是已经编写了诸如pict2e和picture之类的软件包来增强或改进其功能。
本文简要介绍了picture该环境,所有示例都使用 pict2e 包。以下资源中提供了更广泛的文档和一系列有用的示例:
LaTeX2e 非官方参考手册
LaTeX2ε的简短介绍(见第5章)
维基百科
picture-mode在tex.stackexchange的问题标记
pict2e 软件包文档
与TikZ / PGF,MetaPost,PSTricks或Asymptote等强大而复杂的图形工具相比,picture环境似乎非常有限,但是,不时地,它可能足以满足您的需求。
创建新图片
创建新图片通常涉及以下步骤:
- 定义要使用的绘图单位的大小;
- 声明一个定义图片大小的picture环境;
- 使用
\put、\multiput\或\qbezier命令绘制各个图形组件。
定义绘图单位的大小
要创建图片,通常首先通过\unitlengthpicture命令设置绘图单位,该命令必须在环境之外使用。例如,如果您编写
\setlength{\unitlength}{1cm}
绘图单位将被解释为1cm的倍数。默认单位为 1pt。
定义图片的大小
环境的一般形式如下picture
\begin{picture}(width, height)(Xoffset, Yoffset)
...
\end{picture}
width和height是以\unitlength为单位的值,用于定义图片的大小。LaTeX使用这些值来创建一个框,其尺寸为
框(图片)宽度 = ×width\unitlength
框(图片)高度 = ×height\unitlength
(Xoffset, Yoffset)是一个可选坐标,用于设置图片的原点(左下角),表示为相对于默认位置的偏移量。Xoffset和Yoffset也由的当前\unitlength值确定的单位表示
请注意,Xoffset,Yoffset并且不影响LaTeX保留的空间量;例如箱体尺寸。
了解图片尺寸
我们将创建两张图片,两张图片都使用\setlength{\unitlength}{1cm}和每个图片width和height均为3个单位。
第一张图片使用默认原点:(0,0)
\begin{picture}(3,3)
...
\end{picture}
第二张图片通过以下方式偏移(平移)原点:(1,1)
\begin{picture}(3,3)(1,1)
...
\end{picture}
绘制图形
图形是使用一系列命令例如(\put \multiput \qbezier)创建的,这些命令生成构建图片或插图的各个“组件”(或“对象”):
\put(x, y){component}绘制component在(x,y)位置 。\multiput(x, y)(dx, dy){n}{component}绘制componentn次:从(x, y)位置开始,然后以(dx, dy)为参照值反复平移,以重绘。\qbezier[n](x1, y1)(x, y)(x2, y2):绘制一条二次贝塞尔曲线,其中:n一个可选整数,用于确定所用点数绘制/生成曲线(x1, y1)是曲线的起点(x2, y2)是曲线的终点(x, y)表示(二次)贝塞尔曲线控制点
component(组件)是通常使用图形基元(如\line \oval \circle \vector等)生成的图形元素 — 有关可用基元的详细信息,请参阅LaTeX2e 非官方参考手册和LaTeX2ε的简短介绍(见第5章)
注: pict2e包扩展了picture原始环境,提供了几个用于绘制贝塞尔曲线的命令:\bezier \qbezier \cbezier和 \qbeziermax 。
了解偏移和原点
在下面的示例中,\put命令用于绘制彩色点,这些点指示图形中的关键坐标(位置)。这两个示例都使用\fbox的命令在 LaTeX 创建的包含我们图片的框周围绘制边框,显示图形的边界框。
示例 1:使用默认原点
\documentclass{article}
\usepackage[pdftex]{pict2e}
\usepackage[dvipsnames]{xcolor}
\begin{document}
\setlength{\unitlength}{1cm}
\setlength{\fboxsep}{0pt}
This is my picture\fbox{%
\begin{picture}(3,3)
\put(0,0){{\color{blue}\circle*{0.25}}\hbox{\kern3pt \texttt{(0,0)}}}
\put(3,3){{\color{red}\circle*{0.25}}\hbox{\kern3pt \texttt{(3,3)}}}
\end{picture}}
\end{document}

该\fbox命令在图形的边界框周围绘制一个边框,显示 LaTeX 保留的空间(区域):
图片宽度 = width x \unitlength = 3 × 1cm = 3cm。
图片高度 = height x \unitlength = 3 × 1cm = 3cm。
第一个示例显示,原点(0,0),位于\begin{picture}执行命令的点,紧跟在文本“这是我的图片”之后。此外,右上角位于(3,3)
位置 ,(width,height)提供给\begin{picture}(3,3)的值。
示例 2:将原点移位 (1,1)
\documentclass{article}
\usepackage[pdftex]{pict2e}
\usepackage[dvipsnames]{xcolor}
\begin{document}
\setlength{\unitlength}{1cm}
\setlength{\fboxsep}{0pt}
This is my picture\fbox{%
\begin{picture}(3,3)(1,1)
\put(0,0){{\color{blue}\circle*{0.25}}\hbox{\kern3pt\texttt{(0,0)}}}
\put(1,1){{\color{orange}\circle*{0.25}}\hbox{\kern3pt\texttt{(1,1)}}}
\put(3,3){{\color{red}\circle*{0.25}}\hbox{\kern3pt\texttt{(3,3)}}}
\put(4,4){{\color{black}\circle*{0.25}}\hbox{\kern3pt\texttt{(4,4)}}}
\end{picture}}
\end{document}
第二个示例显示了移位原点的效果,并突出显示了一些关键点:
\fbox(width,height)(1,1)创建的边框显示图形的边界框(由 LaTeX 创建的框的宽度和高度)不受移位原点的影响:它仍然由提供给\begin{picture}(3,3)
图片宽度 = width x \unitlength = 3 × 1cm = 3cm
图片高度 = width x \unitlength = 3 × 1cm = 3cm
绘图元素不会限制(剪切)到 LaTeX 创建的区域(边界框尺寸)。例如,蓝点和(0,0)坐标绘制在 \fbox生成的边界线之外,这表示边界框。
用户需要确保绘图元素保持在定界框中,并且不覆盖任何周围的文本。
原点(0,0), 不再紧跟在文本“这是我的图片”之后,在 \begin{picture}执行命令的点上:原点现在向左移动 1 个单位,向下移动 1 个单位右上角现在位于(4,4)该位置。
图片环境示例
LaTeX2e 非官方参考手册中的示例
LaTeX2e非官方参考手册包含许多picture环境示例,其中一些示例与在 Overleaf 中打开它们的链接一起在此处复制,允许您编辑和浏览代码。
示例 1:\vector 命令
\documentclass{article}
\usepackage[pdftex]{pict2e}
\begin{document}
\setlength{\unitlength}{1cm}
\begin{picture}(6,6) % picture box will be 6cm wide by 6cm tall
\put(0,0){\vector(2,1){4}} % for every 2 over this vector goes 1 up
\put(2,1){\makebox(0,0)[l]{\ first leg}}
\put(4,2){\vector(1,2){2}}
\put(5,4){\makebox(0,0)[l]{\ second leg}}
\put(0,0){\vector(1,1){6}}
\put(3,3){\makebox(0,0)[r]{sum\ }}
\end{picture}
\end{document}
此示例生成以下输出:
示例 2:\qbezier、\line、\vector、\thinlines 和 \thicklines 命令
请注意,在\qbezier中不使用该命令,而在\put{...}中使用其他基元命令(如 \line``\vector)。
\documentclass{article}
\usepackage[pdftex]{pict2e}
\begin{document}
\setlength{\unitlength}{1cm}
\begin{picture}(8,4)
\thinlines % Start with thin lines
\put(0,0){\vector(1,0){8}} % x axis
\put(0,0){\vector(0,1){4}} % y axis
\put(2,0){\line(0,1){3}} % left side
\put(4,0){\line(0,1){3.5}} % right side
\thicklines % Use thicker lines for the \qbezier commands
\qbezier(2,3)(2.5,2.9)(3,3.25)
\qbezier(3,3.25)(3.5,3.6)(4,3.5)
\thinlines % Back to using thin lines
\put(2,3){\line(4,1){2}}
\put(4.5,2.5){\framebox{Trapezoidal Rule}}
\end{picture}
\end{document}

示例 3:\multiput 和 \linethickness 命令
\documentclass{article}
\usepackage[pdftex]{pict2e}
\begin{document}
\setlength{\unitlength}{1cm}
\thicklines
\begin{picture}(10,10)
\linethickness{0.05mm}
\multiput(0,0)(1,0){10}{\line(0,1){10}}
\multiput(0,0)(0,1){10}{\line(1,0){10}}
\linethickness{0.5mm}
\multiput(0,0)(5,0){3}{\line(0,1){10}}
\multiput(0,0)(0,5){3}{\line(1,0){10}}
\end{picture}
\end{document}

其他示例
贝塞尔基本曲线
下面的示例使用\qbezier该命令绘制贝塞尔曲线:
\qbezier(1,1)(5,5)(9,0.5)
请注意以下几点:
- 该
\qbezier命令不在\put命令中使用 - 贝塞尔曲线的起点是(1,1)
- 贝塞尔曲线的终点是(9,0.5)
- 贝塞尔曲线控制点为(5,5)
- 我们不使用可选整数来确定所用点数,绘制/生成贝塞尔曲线
\documentclass{article}
\usepackage[pdftex]{pict2e}
\begin{document}
\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}
\end{document}

椭圆形、线条和圆形
下面的示例演示 \line``\circle``\oval命令,并注意它们在\put{...} 命令中的用法:
\documentclass{article}
\usepackage[pdftex]{pict2e}
\begin{document}
\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}
\end{document}

以下是这些命令的说明:
- \put(2,2.2){\line(1,0){6}}:使用“方向矢量”绘制长线单位6(1,0)
- \put(6,2.2){\oval(4,2)[r]}:绘制一个以点(4,2)为中心的椭圆形。该参数是可选的,您可以使用
[r]、[l]、[t]、[b]来显示椭圆的右侧、左侧、顶部或底部。rltb - \put(2,2.2){\circle{2}}:绘制一个以点(2,2.2)为中心的圆,其直径为2。
组合线条、圆圈和文本
可以组合不同的基本元素来创建更复杂的图片。在此示例中,将几条线和几个圆圈组合在一起以创建图片,并结合文本来标记点:
\documentclass{article}
\usepackage[pdftex]{pict2e}
\begin{document}
\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}
\end{document}

以下是使用的一些命令的摘要:
\thicklines:这会增加线条的粗细。\thinlines命令具有相反的效果。\put(8,3.3){{\footnotesize $3$-simplex}}:文本“3-单纯形”插入到该点(8,3.3),字体大小设置为\footnotesize。相同的命令用于标记每个点。\put(9,3){\circle*{0.1}}:这将绘制一个填充圆,其中心(9,3)为0.1小直径(绘图单位),因此可以用作点。\put(10,1){\line(3,2){1}}:创建一条直线,从 开始,沿 长度为 1 的方向绘制(绘制单位)。(10,1)(3,2)
使用箭头
箭头也可以在环境中使用,所以下面是第二个示例:picture
\documentclass{article}
\usepackage[pdftex]{pict2e}
\begin{document}
\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}
\end{document}

该命令使用与:\vector \line语法相同
\put(120,200){\vector(0,-1){150}}:绘制一个起始点为 (120,200)、长度为150且绘制方向为(0,-1)的矢量。
更多推荐
所有评论(0)