找回密码
 快速注册
搜索
查看: 8664|回复: 4

自定义命令简化tikz画图代码

[复制链接]

730

主题

1万

回帖

9万

积分

积分
93613
QQ

显示全部楼层

kuing 发表于 2013-8-25 15:59 |阅读模式
1、\coordinate
这个单词长,难记且打起来慢,而且那个 label 只有8个方向,有时不太好使,虽然可以加 shift 来微调,但是也比较麻烦。
因此当 \coordinate 需要带有 label 时有必要自定义个命令来简化并增强一下 label 的位置。
  1. 这里我定义的是带有1个可省参数+4个必要参数的命令 \zba,具体如下:
  2. \newcommand\zba[5][7pt]{\coordinate (#3) at (#2);
  3. \node[shift={(#5*22.5:#1)}] at (#3) {$#4$};}
  4. 用法:
  5. \zba[标记中心与点的距离/缺省为7pt]{点坐标/不必加括号}{内部标签}{标记字母/不必加$}{角度系数/可以不是整数}
  6. 比如说,命令 \zba{0,0}AA4 相当于
  7. \coordinate (A) at (0,0);
  8. \node[shift={(4*22.5:7pt)}] at (A) {$A$};
  9. 命令 \zba[10pt]{2,3}{B1}{B_1}{-1.3} 相当于
  10. \coordinate (B1) at (2,3);
  11. \node[shift={(-1.3*22.5:10pt)}] at (B1) {$B_1$};
复制代码
具体实际及效果见PDF附件
$type zba.pdf (25.89 KB, 下载次数: 1532)

这个命令可能定得比较粗糙,但是对于我来说暂时已经够用了。
或者说也算是抛砖引玉吧,期待大牛们提供更好的方法。

730

主题

1万

回帖

9万

积分

积分
93613
QQ

显示全部楼层

 楼主| kuing 发表于 2014-3-10 14:38

[注]:此楼已多余,tikz/pgf 3.0 开始已有此功能

2、角弧标记
  1. \newcommand\arcnode[6][0.2]{%
  2. \begin{scope}
  3. \clip (#2)--(#3)--(#4)--cycle;
  4. \draw (#3) circle (#5);
  5. \path let \p1=(#2),\p2=(#4),\p0=(#3) in
  6. ($(#3)+({0.5*atan2(\x1-\x0,\y1-\y0)+0.5*atan2(\x2-\x0,\y2-\y0)}:{#5+#1})$) node {$#6$}
  7. ($(#3)-({0.5*atan2(\x1-\x0,\y1-\y0)+0.5*atan2(\x2-\x0,\y2-\y0)}:{#5+#1})$) node {$#6$};
  8. \end{scope}}
复制代码
懒得写用法说明,因为还有待改进,至少有一个大bug,因为是用 \clip 弄的,所以那个角比较平的时候,弧以及字母可能会被切掉部分。

配合楼上的命令,用如下的代码
  1. \begin{tikzpicture}
  2. \draw[->] (-3,0)--(3,0) node[above]{$x$};
  3. \draw[->] (0,-3)--(0,3) node[left]{$y$};
  4. \zba{45:-1}AA{-7};
  5. \zba{3,2.5}BB4;
  6. \zba{2,-1.1}CC{-3};
  7. \draw (A)--(B)--(C)--cycle;
  8. \arcnode BAC{0.3}\alpha
  9. \arcnode[0.25] ABC{0.35}\beta
  10. \arcnode BCA{0.2}\gamma
  11. \end{tikzpicture}
复制代码
即得
QQ截图20140310143844.gif

注:计算中用到了 atan2 函数,故需要 \usetikzlibrary{calc}
$type

arcnode.tex

895 Bytes, 下载次数: 1114

108

主题

2372

回帖

1万

积分

积分
13374

显示全部楼层

其妙 发表于 2014-3-15 21:47
latex学的半懂不懂的,这个tikz何时能上手啊

730

主题

1万

回帖

9万

积分

积分
93613
QQ

显示全部楼层

 楼主| kuing 发表于 2014-3-15 22:08
回复 3# 其妙

先确定有没有这种需要……

730

主题

1万

回帖

9万

积分

积分
93613
QQ

显示全部楼层

 楼主| kuing 发表于 2014-3-22 20:07
回复 2# kuing

这个看来已经不需要了,最新的 tikz/pgf 3.0 有了这个功能,见 texample.net/tikz/examples/angles-quotes/

手机版|悠闲数学娱乐论坛(第3版)

GMT+8, 2025-3-4 15:46

Powered by Discuz!

× 快速回复 返回顶部 返回列表