免費論壇 繁體 | 簡體
Sclub交友聊天~加入聊天室當版主
分享
返回列表 发帖

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

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附件
zba.pdf (25.89 KB)

这个命令可能定得比较粗糙,但是对于我来说暂时已经够用了。
或者说也算是抛砖引玉吧,期待大牛们提供更好的方法。
分享到: QQ空间QQ空间 腾讯微博腾讯微博 腾讯朋友腾讯朋友
$\href{https://kuingggg.github.io/}{\text{About Me}}$

[注]:此楼已多余,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
2014-3-10 14:38


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

arcnode.tex (895 Bytes)

$\href{https://kuingggg.github.io/}{\text{About Me}}$

TOP

latex学的半懂不懂的,这个tikz何时能上手啊

TOP

回复 3# 其妙

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

TOP

回复 2# kuing

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

TOP

返回列表 回复 发帖