LaTeX宏包TikZ绘图示例——Go语言起源图
本例所绘图形选自《Go语言程序设计》(作者:Alan A. A. Donovan与Brian W. Kernighan)一书的前言部分。
完整代码
\documentclass{article}
%
\usepackage{ctex} % 汉字支持
\usepackage{geometry} % 页面布局支持
\usepackage{tikz} % 绘图支持
%
% 加载TikZ内的各种库
\usetikzlibrary{positioning, arrows.meta, chains}
%
\begin{document}
% 博客园陆巍的博客https://www.cnblogs.com/atthefirst/
\textbf{Go语言起源图}
\begin{center}
\begin{tikzpicture}[
every node/.style={text width=4cm,align=center},
arrow1/.style={-{stealth[angle'=45]},thick},
node distance=1.0cm,
]
\renewcommand{\baselinestretch}{1.0}% 修改行间距为1倍
% -------------------- 中间节点 --------------------
\node(c1){\textbf{ALGOL 60}\\\small (Backus et al., 1960)};
\node[below=of c1](c2){\textbf{Pascal}\\\small (Wirth, 1970)};
\node[below=of c2](c3){\textbf{Modula-2}\\\small (Wirth, 1980)};
\node[below=of c3](c4){\textbf{Oberon}\\\small (Wirth \& Gutknecht,\\ 1986)};
\node[right=0.5cm of c4,yshift=-1cm](c41){\textbf{Object Oberonn}\\\small (Mössenböck, Templ \& Griesemer, 1990)};
\node[below=of c4](c5){\textbf{Oberon-2}\\\small (Wirth \& Mössenböck,\\ 1991)};
\node[text width = 6.0cm,below=2cm of c5](c6){\textbf{Go}\\\small (Griesemer, Pike \& Thompson, 2009)};
% -------------------- 左侧节点 --------------------
\node at(-5cm,-3cm)(l1){\textbf{CSP}\\\small (Hoare, 1978)};
\node[below=of l1](l2){\textbf{Squeak}\\\small (Cardelli \& Pike, 1985)};
\node[below=of l2](l3){\textbf{Newsqueak}\\\small (Pike, 1989)};
\node[below=of l3](l4){\textbf{Alef}\\\small (Winterbottom, 1992)};
% -------------------- 右侧节点 --------------------
\node at(7cm,-2cm)(r1){\textbf{C}\\\small (Ritchie, 1972)};
% -------------------- 连线 --------------------
\draw[arrow1](c1)--(c2);
\draw[arrow1](c2)--(c3);
\draw[arrow1](c3)--(c4);
\draw[arrow1](c4)--(c41);
\draw[arrow1](c41)--(c5);
\draw[arrow1](c4)--(c5);
\draw[arrow1](c5)--(c6);
\draw[arrow1](l1)--(l2);
\draw[arrow1](l2)--(l3);
\draw[arrow1](l3)--(l4);
\draw[arrow1](l4)--(c6);
\draw[arrow1](c1)--(r1);
\draw[arrow1](c2)--(l3);
\draw[arrow1](r1)(c6)(node cs:name=r1) .. controls +(1,-10) and +(1.2,1) .. (node cs:name=c6);
\end{tikzpicture}
\end{center}
效果

说明
1、这里对节点与箭头线段style的定义放在了tikzpicture环境定义的参数设置中。实际工作中,对于经常使用的style应该单独用文件保存,方便管理维护。
2、注意从C到Go的那根曲线绘制方法的原理,使用过矢量图绘制软件的朋友应该不会陌生。
LaTeX宏包TikZ绘图示例——Go语言起源图的更多相关文章
- latex目录标题常用宏包说明与示例
http://blog.sina.com.cn/s/blog_5e16f1770100gyxn.html
- LaTeX自定义宏包、类文件的默认搜索路径设置方法
对于自定义的LaTeX宏包与类,在调用时可以通过在命令\documentclass{}与\usepackage{}命令中指定完整路径或者相对路径,这样确实可以调用,但是编译时总是有烦人的警告信息, ...
- Windows 下 LaTeX 手动安装宏包(package)以及生成帮助文档的整套流程
本文简单介绍如何手动安装一个 LaTeX 宏包. 一般来说,下载的 TeX 发行版已经自带了很多宏包,可以满足绝大部分需求,但是偶尔我 们也可能碰到需要使用的宏包碰巧没有安装的情况,这时我们就需要自己 ...
- LaTeX源代码显示宏包listings应用备忘之新语言定义
我目前了解的LaTeX中有关源代码显示的宏包有两个,这里介绍其中的listings宏包.listings宏包中已经定义了部分计算机语言的显示样式,但还是有些语言没有定义,我们一起看一下如何定义新的 ...
- 在LaTeX中利用preview宏包和tikz宏包生成单图pdf
有时候我们利用tikz宏包画出的图片后,只想生成一个单图pdf,而且pdf的页面大小与图片相同,以便于以后再次用latex插入. 可以与preview宏包进行搭配,页面大小由图像大小决定,可以通过改变 ...
- [原创][LaTex]LaTex学习笔记之框架及宏包
0. 简介 LaTex在书写文档时的最基本单元就是首部的写作,变相的也可以说是头文件.本文章就来总结一下文档的基本格式和常用宏包. 1. 基本单元 基本单元需要对LaTex语法有一定的了解,这个很简单 ...
- LaTeX的一些宏包及细节知识
文章来源:LaTeX的一些宏包及细节知识http://blog.chinaunix.net/uid-20289887-id-1710422.html ps:我的机器上软件并不能直接运行通,下面“代码” ...
- TeX系列: tikz-3dplot绘图宏包
tikz-3dplot包提供了针对TikZ的命令和坐标变换样式, 能够相对直接地绘制三维坐标系统和简单三维图形. tikz-3dplot包当前处于初创期, 有很多功能有待完善. 安装过程如下: (1) ...
- LaTeX的tasks宏包
tasks 宏包 LaTeX的列表(list)通常是将项(item,条目)一个一个垂直的平行显示,所谓"列"表的由来. 水平分列列表,即将多个项分散到各列而不是一列,在出考卷的选择 ...
随机推荐
- ORACLE学习文档
转自 http://sparklet.blog.sohu.com/523655.html 数据库被分成一个或多个逻辑部件称作表空间.而表空间又被分成称作段(segment)的逻辑部件.这些段再细分就叫 ...
- pageHelper插件
mybatis的分页插件使用总结 环境准备工作: 1.在使用pagehelper插件时,我已经搭建好了ssm(spring+springmvc+mybatis) 在这简单描述一下ssm搭建过程 ...
- 创建完美SDK的10个技巧
[编者按]本文作者为 Gal Lavinsky,文中将列出10个零基础小技巧,帮你创建完美的Java SDK.文章系国内 ITOM 管理平台 OneAPM 编译呈现.以下为正文. 本文起源于笔者朋友的 ...
- top,job,user,file,alias
1.系统进程 2.系统资源管理 3.作业管理 4.用户管理 5.文件权限 6.别名定义 一.系统进程 1.进程的定义 进程是操作系统的概念,每当我们执行一个程序时,对于操作系统来讲就创建了 ...
- 3. 跟踪标记 (Trace Flag) 1204, 1222 抓取死锁信息
跟踪标记:1204/1222 功能及用途: 捕获SQL Server死锁信息,并自动存放到错误日志(ERRORLOG)中. 举例: USE tempdb GO CREATE TABLE t1(id i ...
- @private、@protected与@public三者之间的区别
@private.@protected与@public三者之间的区别 类之间关系图 @private只能够使用在声明的类当中,其子类也不能够使用用@private声明的实例变量 @protected只 ...
- cxfreeze打包python程序的方法说明(生成安装包,实现桌面快捷方式、删除快捷方式)
一.cxfreeze基础 1.cxfreeze功能 python代码文件转exe方法有三种,分别是cx_freeze,py2exe,PyInstaller,这三种方式各有千秋,本人只用过py2exe和 ...
- HBase HA的分布式集群部署(适合3、5节点)
本博文的主要内容有: .HBase的分布模式(3.5节点)安装 .HBase的分布模式(3.5节点)的启动 .HBase HA的分布式集群的安装 .HBase HA的分布式集群的启动 .H ...
- D:\hunting2014\小题目\字符串倒序
#include<stdio.h>#include<string.h> char *revert(char *str){ char temp; char *p = str; c ...
- mysql5.7.22的安装与配置(适用mysql5.7.20至mysql5.7.22版本)
一.解压Mysql5.7.20安装包,刚解压是没有 data 这个文件夹的 二.配置mysql环境变量,创建MYSQL_HOME,然后在Path上添加%MYSQL_HOME%\bin; 三.配置m ...