很多时候,当我编写 tikz-picture 代码时,我不记得命令语法或某个选项的名称,而只能在 pgf-manual 中查找,因为 pgf-manual 不是很短。有人有适合一两页的 Tikz 命令摘要吗?
答案1
命令模板
基本路径:
\drawing-command [options] path-specification;
路径指定:
(coordinate) path-component (coordinate);
路径重用
postaction={<basic drawing commands> or <decorate>}
当将此选项赋予下面的任何基本绘图命令时,初始绘图命令完成后不会立即丢弃和重新使用路径。preaction={<basic drawing commands> or <decorate>}
当将此选项赋予下面的任何基本绘图命令时,在执行初始绘图命令之前将使用一次路径。
基本绘图命令:
\path
:构造路径
以下所有命令实际上都是\path
带有一个或两个选项的缩写形式:
\draw
:构造并绘制(“描边”)路径\fill
:构造并填充路径\filldraw
:构造、填充并绘制路径(按此顺序)\shade
:构建并阴影化路径\shadedraw
:构造、着色并绘制路径(按顺序)\coordinate
:标记坐标\node[<options>] at (<coordinate>) (<name>) {<text>}
:构造一个节点\path (nodeName1) edge [options->] (nodeName2);
:一条边
坐标规格:
(<x>,<y>)
:将坐标指定为当前 x 和 y 向量的倍数(默认值:向右 1 厘米,向上 1 厘米)(<θ>:<r>)
以极坐标形式指定坐标,r
为矢量长度,θ
为角度(以度为单位)+<coordinate specification>
:指定相对于前一个位置的坐标,但不保存当前位置++<coordinate specification>
:指定相对于前一个位置的坐标
笔记
长度可以带单位也可以不带单位。如果带单位,则按字面意思理解;如果没有单位,则为电流
x
或y
矢量的倍数(视情况而定)。相对坐标是相对于最后一个已保存位置。除非另有说明,以上所有操作均将其结果位置保存为最后保存的位置。
当在贝塞尔曲线规范中使用相对坐标时,行为会略有不同。第二个控制点是相对于曲线的最终位置而取的,而最终点是相对于初始点(或最后保存的位置)而取的。
路径规范:
(coordinate) (coordinate)
:将“当前点”从第一个坐标移动到第二个坐标(coordinate) -- (coordinate)
:从第一个坐标到第二个坐标绘制一条线(coordinate) .. controls (control) and (control) .. (coordinate)
:使用指定的控制点从第一个坐标到第二个坐标绘制三次贝塞尔曲线(coordinate) to[options] (coordinate)
:to path
从第一个坐标到第二个坐标绘制一个;to path
s 可能非常复杂(coordinate) rectangle (coordinate)
:以坐标为对角绘制一个矩形(coordinate) circle[options]
:以坐标为中心画一个圆(coordinate) arc[options]
:从坐标处开始绘制圆弧(coordinate) node[options] {text}
:在坐标处添加一个节点(coordinate) coordinate
:在给定坐标处添加坐标标签
基本选项
draw[=<colour specification>]
1:绘制当前路径(使用给定的颜色)fill[=<colour specification>]
1:填充当前路径(使用给定的颜色)<colour specification>
:设置绘制、填充、文本的颜色(不明确执行这些操作)line width=<dimen>
:设置线宽thin
、、thick
等ultra thick
:线宽的预设
1括号表示可选部分,代码中不能输入。即使用draw=red
而不是draw[=red]
。
答案2
我内心的懒惰数学家决定想出另一种方法。我在文档上运行了以下脚本:
(for f in pgfmanual-en-tikz-{design,scopes,coordinates,paths,actions,shapes,graphs,matrices,trees,plots,transparency,decorations,transformations}.tex; do
cat $f
done) | perl -ne '
if (/(\\(begin|end)\{(coordinatesystem|keylist|package|predefinednode|command|key|stylekey|pathoperation)\})|\\(sub)*section|\\catcode/) {
print;
$c = ($_ =~ tr/{/{/);
$c -= ($_ =~ tr/}/}/);
} else {
if ($c > 0) {
print;
$c += ($_ =~ tr/{/{/);
$c -= ($_ =~ tr/}/}/);
};
};
' | xclip
然后将结果粘贴到以下模板中:
\documentclass[a4paper]{ltxdoc}
\usepackage[scale=.9]{geometry}
\usepackage{tikz}
% The location of this will depend on where you put the sources of the pgfmanual
\input{../../../local/share/pgf/doc/generic/pgf/macros/pgfmanual-en-macros}
\begin{document}
%%%% <--- pasted text goes here
\end{document}
然后删除了一些意外包含的内容(搜索codeexample
并删除所有此类环境 - 它们由于开关而被包含在内\catcode
),并添加了一个缺失的右括号。
当我在 2012 年首次运行此程序时,它生成了一份 21 页的文档,其中列出了手册中 TikZ 部分的所有命令和键(据我所知)。我在 2022 年重新运行了该过程,现在它是一份 27 页的文档。
- 2012年版本:https://docs.mathforge.org/tikzcheatsheet-2012.pdf
- 2022年版本,PGF版本3.1.8:https://docs.mathforge.org/tikzcheatsheet-2022.pdf