LaTeX 复杂图形绘制教程:从基础到进阶


系列文章目录

第一章:深入了解 LaTeX:科技文档排版的利器
第二章:LaTeX 下载安装保姆级教程
第三章:LaTeX 创建工程并生成完整文档指南
第四章:LaTeX 表格制作全面指南


文章目录


前言

在学术写作和专业文档排版中,精美的图形往往能更直观地传达信息,增强内容的表现力。LaTeX 作为一款强大的排版系统,虽以其出色的文字和公式排版能力闻名,但在图形绘制方面同样不容小觑。本文将深入探讨如何利用 LaTeX 绘制各种复杂图形,为您的文档增添光彩。


一、​LaTeX 绘图工具概览

LaTeX 自身提供了原始的picture环境,可用于绘制一些基本图形,如点、线、矩形、圆和 Bezier 曲线等。然而,由于 LaTeX 本身的限制,其绘图功能较为有限,效果也不尽如人意。随着需求的不断增加,众多功能强大的绘图宏包应运而生,极大地丰富了 LaTeX 的绘图能力。以下是当前较为流行的几种绘图宏包和程序:​

  • PSTricks:基于 PostScript 语法的绘图宏包,绘图能力出色。它对老式的latex+dvips编译命令支持最佳,但在现代的几种编译命令下使用不太方便。
  • TikZ & pgf:德国的 Till Tantau 教授在开发著名的 LaTeX 幻灯片文档类beamer时,一并开发了绘图宏包pgf,旨在使其能在pdflatex或xelatex等不同编译命令下使用。TikZ是在pgf基础上封装的宏包,采用类似 METAPOST 的语法,提供了便捷的绘图命令,绘图能力不逊于 PSTricks。
  • METAPOST & Asymptote:METAPOST 脱胎于高纳德为 TEX 配套开发的字体生成程序 METAFONT,绘图能力卓越,且能调用 TEX 引擎向图片中插入文字和公式。Asymptote 在 METAFONT 的基础上更进一步,具备一定类似 C 语言的编程能力,支持三维图像的绘制。

这些工具通常既可以作为独立程序,将代码写在单独文件中编译生成图片供 LaTeX 引用,也能借助特殊宏包在 LaTeX 代码中直接使用。接下来,我们将重点介绍功能强大且应用广泛的 TikZ 宏包的使用方法。

二、深入 TikZ 绘图语言

1.调用 TikZ 宏包

在 LaTeX 文档的导言区加载 TikZ 宏包,只需加入\usepackage{tikz}语句,即可开启 TikZ 强大的绘图功能。

1.1 TikZ 坐标与路径

  1. 坐标系统:TikZ 支持直角坐标系和极坐标系描述点的位置。在直角坐标下,点的位置表示为(x,y),其中x和y坐标可以使用 LaTeX 支持的任意单位,默认单位为cm。例如,(2,3)表示横坐标为 2cm,纵坐标为 3cm 的点。极坐标下,点的位置写作(θ:r),其中θ为极角,单位是度,r为极径。比如,(30:5)表示极角为 30 度,极径为 5cm 的点。我们还可以为点命名,方便后续使用,如\coordinate (A) at (2,3);,之后就可以用(A)来表示该点位置。
  2. 基本路径:TikZ 最基本的路径是两点之间的连线,通过(x1,y1) -- (x2,y2)表示,可连续使用表示折线。例如,(0,0) -- (1,1) -- (2,0)将绘制一条从(0,0)到(1,1)再到(2,0)的折线。若要绘制闭合路径,可在路径末尾使用cycle关键字,如(0,0) -- (1,1) -- (2,0) cycle将绘制一个三角形。
  3. 其他常用路径​
    • 矩形、圆和椭圆 :绘制矩形使用(x1,y1) rectangle (x2,y2),其中(x1,y1)和(x2,y2)分别为矩形对角顶点的坐标。绘制圆使用(x,y) circle (radius=r),(x,y)为圆心坐标,r为半径。绘制椭圆使用(x,y) ellipse (x radius=rx, y radius=ry),(x,y)为椭圆中心坐标,rx和ry分别为椭圆在 x 轴和 y 轴方向上的半径。
      例如:
    • 直角、圆弧、椭圆弧 :直角可通过特殊的坐标表示和路径绘制实现。绘制圆弧使用(x,y) arc (start angle:end angle:radius),(x,y)为圆心坐标,start angle和end angle分别为圆弧的起始角度和结束角度,radius为半径。椭圆弧的绘制类似,需指定椭圆的 x 半径和 y 半径。例如:
      -
    • 正弦、余弦曲线(1/4 周期):可通过\draw plot[domain=x1:x2,samples=n] function来绘制,其中domain指定函数定义域,samples指定采样点数,function为具体的函数表达式。例如,绘制 1/4 周期的正弦曲线:
    • 抛物线 :使用(x1,y1) parabola (x2,y2)绘制抛物线,也可通过bend关键字控制顶点位置,如(x1,y1) parabola bend (x_mid,y_mid) (x2,y2)。例如:
    • 二次和三次 Bezier 曲线 :二次 Bezier 曲线使用\draw (x1,y1)... controls (x_ctrl,y_ctrl)... (x2,y2),其中(x_ctrl,y_ctrl)为控制点坐标。三次 Bezier 曲线则需要两个控制点,语法为\draw (x1,y1)... controls (x_ctrl1,y_ctrl1) and (x_ctrl2,y_ctrl2)... (x2,y2)。例如:
    • 网格、函数图像 :绘制网格可使用\draw[step=step_size] (x1,y1) grid (x2,y2),step_size为网格间距。绘制函数图像同样使用\draw plot命令,通过domain参数精确控制定义域。例如:
      -

2. 在图形中添加元素​

  1. 绘制线条与形状:使用\draw命令绘制各种线条和形状,可通过在命令中添加选项来设置线条颜色、粗细、样式(如实线、虚线、点线等)。例如,绘制一条红色粗虚线:\draw[red, thick, dashed] (0,0) -- (2,2);。
  2. 添加节点(文字和符号):节点用于在图形中添加文字、符号或其他元素。使用\node[options] {text} at (x,y);命令,options可设置节点的位置(如above、below、left、right等)、颜色、字体等属性。例如,在点(1,1)处添加一个蓝色、位于上方的节点:\node[blue, above] {示例} at (1,1);。
  3. 填充形状:对于封闭形状,可使用\fill[color] path;命令进行填充。例如,填充一个绿色的矩形:\fill[green] (0,0) rectangle (1,1);。

3. 绘制复杂图形示例

绘制流程图​

流程图在学术和工作中广泛应用,用于展示流程、步骤和逻辑关系。使用 TikZ 绘制流程图时,可通过定义不同形状的节点(如矩形表示步骤,菱形表示判断等),并使用带箭头的线条连接节点来实现。

c 复制代码
\begin{tikzpicture}[node distance=2cm,
 	startstop/.style={rectangle, rounded corners, minimum width=3cm, minimum height=1cm,text centered, draw=black, fill=red!30},
 	process/.style={rectangle, minimum width=3cm, minimum height=1cm, text centered, draw=black, fill=blue!30},
 	decision/.style={diamond, minimum width=3cm, minimum height=1cm, text centered, draw=black, fill=green!30},
 	arrow/.style={thick,->,>=stealth}]
 	
 	% 开始节点
 	\node (start) [startstop] {开始};
 	% 第一个处理步骤
 	\node (process1) [process, below of=start] {步骤1};
 	% 决策节点
 	\node (decision1) [decision, below of=process1] {判断条件};
 	% 两个分支处理步骤
 	\node (process2) [process, below left of=decision1, xshift=-1cm] {步骤2};
 	\node (process3) [process, below right of=decision1, xshift=1cm] {步骤3};
 	% 结束节点
 	\node (end) [startstop, below of=process2] {结束};
 	
 	% 连接线条
 	\draw [arrow] (start) -- (process1);
 	\draw [arrow] (process1) -- (decision1);
 	\draw [arrow] (decision1) -| node[anchor=east] {是} (process2);
 	\draw [arrow] (decision1) -| node[anchor=west] {否} (process3);
 	\draw [arrow] (process2) -- (end);
 	\draw [arrow] (process3) |- (process2);
 	
 \end{tikzpicture}

绘制数学图形(如函数图像组合)

在数学领域,常需要绘制复杂的函数图像组合,以展示函数之间的关系。下面以绘制正弦函数、余弦函数及其和函数的图像为例:

c 复制代码
	\begin{tikzpicture}
 	\begin{axis}[
 		axis lines = middle,
 		xlabel = \(x\),
 		ylabel = \(y\),
 		xmin=-2*pi,xmax=2*pi,
 		ymin=-2,ymax=2,
 		xtick={-2*pi,-3*pi/2,-pi,-pi/2,0,pi/2,pi,3*pi/2,2*pi},
 		xticklabels={\(-2\pi\),\(-\frac{3\pi}{2}\),\(-\pi\),\(-\frac{\pi}{2}\),\(0\),\(\frac{\pi}{2}\),\(\pi\),\(\frac{3\pi}{2}\),\(2\pi\)},
 		ytick={-2,-1,0,1,2},
 		legend pos=outer north east  % 将图例放在图表外部右上角
 		]
 		\addplot[domain=-2*pi:2*pi, samples=100, red] {sin(x)};
 		\addlegendentry{\(y = \sin(x)\)}
 		\addplot[domain=-2*pi:2*pi, samples=100, blue] {cos(x)};
 		\addlegendentry{\(y = \cos(x)\)}
 		\addplot[domain=-2*pi:2*pi, samples=100, green] {sin(x)+cos(x)};
 		\addlegendentry{\(y = \sin(x)+\cos(x)\)}
 	\end{axis}
 \end{tikzpicture}

绘制复杂几何图形(如立体几何图形)

对于立体几何图形,TikZ 同样能胜任。通过巧妙设置坐标和视角,可绘制出具有立体感的图形。以下是一个简单的正方体绘制示例:

c 复制代码
\begin{tikzpicture}[
    	scale=2,
    	% 更合理的3D坐标系定义,增强立体感
    	x={(1cm,0cm)},        % x轴向右
    	y={(0cm,1cm)},        % y轴向里
    	z={(0.5cm,0.5cm)}     % z轴向右上方
    	]
    	% 定义立方体的8个顶点
    	\coordinate (A) at (0,0,0);
    	\coordinate (B) at (1,0,0);
    	\coordinate (C) at (1,1,0);
    	\coordinate (D) at (0,1,0);
    	\coordinate (A') at (0,0,1);
    	\coordinate (B') at (1,0,1);
    	\coordinate (C') at (1,1,1);
    	\coordinate (D') at (0,1,1);
    	
    	% 绘制底面(可见面用实线)
    	\draw[thick] (A) -- (B) -- (C) -- (D) -- cycle;
    	
    	% 绘制顶面(可见面用实线)
    	\draw[thick] (A') -- (B') -- (C') -- (D') -- cycle;
    	
    	% 绘制连接棱(前面可见的用实线,后面被遮挡的用虚线)
    	\draw[thick] (A) -- (A');
    	\draw[thick] (B) -- (B');
    	\draw[thick] (C) -- (C');
    	\draw[dashed, thick] (D) -- (D');  % 这条棱被遮挡,用虚线
    \end{tikzpicture}

4. 学习资源与技巧

官方文档与教程​

TikZ 的官方手册是学习其功能的权威资料,可通过运行命令texdoc tikz在本地查看,也可在 TikZ/PGF 官方网站获取最新版手册。此外,网络上有大量关于 TikZ 的教学文章和实例演示,如一些技术博客和社区网站,能帮助您快速上手。​

在线图形编辑器​

一些支持 TikZ 的在线图形编辑器,如 TeXample TikZ 在线编辑平台,允许您直观地设计图形并实时预览效果,降低了图形制作的难度,尤其适合初学者。​

相关书籍与开源示例​

选择一本专注于 LaTeX 图形绘制的专业书籍,可进行系统化学习。同时,互联网上众多公开的 LaTeX 项目文档中包含丰富的 TikZ 图形代码片段,研究这些示例能加深对绘图逻辑的理解,借鉴其中的设计思路。


总结

通过本文对 LaTeX 绘图工具的介绍,特别是对 TikZ 宏包的深入讲解和复杂图形绘制示例,对在 LaTeX 中绘制复杂图形有了更全面的认识和掌握。虽然学习过程可能需要花费一些时间和精力,但一旦熟练掌握,能够在 LaTeX 环境中轻松创建出高质量、与文档风格完美融合的图形,为学术写作、报告制作等工作增添强大助力。

相关推荐
এ旧栎12 分钟前
Gitee
笔记·gitee·学习方法
亦世凡华、17 分钟前
React--》实现 PDF 文件的预览操作
经验分享·pdf·react·pdf预览
kfepiza19 分钟前
vim的`:q!` 与 `ZQ` 笔记250729
linux·笔记·编辑器·vim
Emotion亦楠1 小时前
Java 学习笔记:常用类、String 与日期时间处理
java·笔记·学习
qq10549415162 小时前
江协科技STM32 12-2 BKP备份寄存器&RTC实时时钟
科技·stm32·实时音视频
v先v关v住v获v取2 小时前
热能小车cad【12张】三维图+设计说明书
科技
养海绵宝宝的小蜗2 小时前
OSPF笔记整理
网络·笔记·智能路由器
图灵学术计算机论文辅导3 小时前
提示+掩膜+注意力=Mamba三连击,跨模态任务全面超越
论文阅读·人工智能·经验分享·科技·深度学习·考研·计算机视觉
没见过西瓜嘛3 小时前
数据仓库、数据湖与湖仓一体技术笔记
数据仓库·笔记
Mr Sorry4 小时前
TIME WEAVER: A Conditional Time Series Generation Model论文阅读笔记
论文阅读·笔记