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

请问如何标记直角符号?

fig.png
2019-3-16 17:01
  1. \begin{tikzpicture}[scale=1.5]
  2. \coordinate(o)at(0,0)node[below left] at (o) {$O$};
  3. \coordinate(a)at(2,0)node[below right] at (a) {$A$};
  4. \coordinate(b)at(0,2)node[left] at (b) {$B$};
  5. \coordinate(p)at($(a)!0.3!(b)$)node[above right] at (p) {$P$};
  6. \coordinate(m)at($(o)!0.5!(a)$)node[below] at (m) {$M$};
  7. \draw[thick](o)--(a)--(b)--cycle;
  8. \draw[thick](o)--(p);
  9. \draw[thick,dashed](p)--(m);
  10. \draw[cyan,thick] (m) -- ($(a)!(m)!(b)$);
  11. \end{tikzpicture}
复制代码
如何标记图中红色的直角符号?画图的代码能更简洁点吗,有的话麻烦贴一下?谢谢
分享到: QQ空间QQ空间 腾讯微博腾讯微博 腾讯朋友腾讯朋友
善始者实繁,克终者盖寡。

以前曾经写过一次,刚翻查了下,发现以前的方式有点笨,改进后如下:
  1. \newcommand\zjbj[4][7pt]{%
  2. \draw let \p1=(#2),\p2=(#4),\p0=(#3) in
  3. (#3)++({atan2(\y1-\y0,\x1-\x0)}:#1)
  4. --++({atan2(\y2-\y0,\x2-\x0)}:#1)
  5. --++({atan2(\y1-\y0,\x1-\x0)}:-#1);
  6. }
复制代码
举个栗子:
\tikz{
\coordinate (A) at (4,0);
\coordinate (B) at (3.5,3.5);
\coordinate (C) at (0,3);
\draw (A)--(B)--(C);
\zjbj ABC
}
标记的大小默认 7pt,你可以自己修改它。
有些时候图很小,也可个别调小一些,比如
\tikz{
\draw (0,0.5)--(0,0)--(0.5,0);
\zjbj[3pt]{0,0.5}{0,0}{0.5,0}
}
$\href{https://kuingggg.github.io/}{\text{About Me}}$

TOP

我是手动旋转画2mm的线段组成。

不知道pic命令中有没有直接标记直角功能。

TOP

回复 3# isee

得看版本,我电脑上的 texlive 还是 2016,其 pgf 版本 3.0.1a 里没有。
但在 CTAN 上查,可以看到最新的 3.1.1 里就有了,第 561 页里有 right angle 这个 Pic type 就是标直角。
TIM截图20190313014824.png
2019-3-16 21:15


其实用起来还是 2# 的方便
$\href{https://kuingggg.github.io/}{\text{About Me}}$

TOP

回复 4# kuing


然来 right angle 即可,,,,,果然手册里有,你翻到了,更厉害。。。

TOP

其实用起来还是 2# 的方便



我不整自已命令。。。。看你用即是。。。

TOP

本帖最后由 aaa 于 2019-3-17 08:51 编辑

回复 2# kuing 谢谢kuing,想问一下如何给直角标记\zjbj加属性啊,加个颜色什么的

TOP

回复 3# isee
好的,谢谢哦

TOP

回复  kuing 谢谢kuing,想问一下如何给直角标记\zjbj加属性啊,加个颜色什么的
aaa 发表于 2019-3-17 08:20


那就用4楼的新命令 pic 啊


PS:我不推荐纯手工作的,虽然也只需麻烦一次。kuing中用正切函数明显高明些。。。

TOP

回复 7# aaa

有颜色等样式的需求,那就用 4# 的,不过需要你的版本够新,我的另一台电脑上的 texlive2017 也没有 right angle 这个 Pic type,看来至少要 2018 的。

TOP

如果版本低,又不想装新的,那 2# 的也可以这样改:
  1. \newlength\zjw
  2. \zjw=7pt
  3. \newcommand\zjbj[4][]{%
  4. \draw[#1] let \p1=(#2),\p2=(#4),\p0=(#3) in
  5. (#3)++({atan2(\y1-\y0,\x1-\x0)}:\zjw)
  6. --++({atan2(\y2-\y0,\x2-\x0)}:\zjw)
  7. --++({atan2(\y1-\y0,\x1-\x0)}:-\zjw);
  8. }
复制代码
也就是新建一个长度命令 \zjw 来统一控制标记的大小,需要改变大小的时候先设 \zjw 再用 \zjbj,而 \zjbj 的可选参数就用来控制线的样式。

完整的示例如下:
  1. \documentclass{article}
  2. \usepackage{tikz}
  3. \usetikzlibrary{calc}

  4. \newlength\zjw
  5. \zjw=7pt
  6. \newcommand\zjbj[4][]{%
  7. \draw[#1] let \p1=(#2),\p2=(#4),\p0=(#3) in
  8. (#3)++({atan2(\y1-\y0,\x1-\x0)}:\zjw)
  9. --++({atan2(\y2-\y0,\x2-\x0)}:\zjw)
  10. --++({atan2(\y1-\y0,\x1-\x0)}:-\zjw);
  11. }

  12. \begin{document}

  13. \tikz{
  14. \coordinate (A) at (2,0);
  15. \coordinate (B) at (1.75,1.75);
  16. \coordinate (C) at (0,1.5);
  17. \draw (A)--(B)--(C);
  18. \zjbj ABC
  19. }
  20. \tikz{
  21. \draw (0,0.5)--(0,0)--(0.5,0)(0,0)--(0,0,0.7);
  22. \zjw=4pt
  23. \zjbj{0,0.5}{0,0}{0.5,0}
  24. \zjbj{0,0,0.7}{0,0}{0.5,0}
  25. }
  26. \tikz{
  27. \coordinate (A) at (2,0);
  28. \coordinate (B) at (1.75,1.75);
  29. \coordinate (C) at (0,1.5);
  30. \draw (A)--(B)--(C);
  31. \zjbj[red,thick]ABC
  32. }

  33. \end{document}
复制代码
效果:
QQ截图20190317144812.png
2019-3-17 14:48


注:在 tikz 里面改变 \zjw 只是局部改变,不会影响全局,如果在外面改就会影响全局。
$\href{https://kuingggg.github.io/}{\text{About Me}}$

TOP

回复 10# kuing

这个跟texlive的版本没关系吧,只是tikz pfg的版本有关吧。

我刚刚升级了所有package,pgfmanual.pdf 才是你4楼说的哪个。。(我 texlive 2018)

TOP

回复 11# kuing

啧啧,就那是开发了个命令嘛。。。

当初升级 package 用画角的 pic 新命令,于是就有升级 package  的动力了,刚升级后,现在终于有直角原生支持了。。。。测试通过了。。。。

如果不是直角,哈哈,就是平行四边形。。
angle.png

TOP

哦,注意,pic 需要加载
\usetikzlibrary{quotes,angles}
否则,无法运行

TOP

pic 命令是2015年新加的,三年余,才有 right angle ,这足以说明老外不喜欢标直角,哈哈。

TOP

回复 12# isee

嗯,只更新宏包也可以。
我那样说是我的习惯问题,我不会单独更新宏包,每次都是重装电脑的时候再找新的整个装

TOP

回复 13# isee

“不是直角就是平行四边形”那是肯定这样设计的呀,包括我写的那个命令也一样(更准确说是菱形)。
还有,我的也可以变成箭头,\zjbj[->]ABC 就行

TOP

回复 15# isee

当年我也觉得奇怪,有弧的却没有直角的,昨天你这样一问,我突然就想或许现在有了,一查就中了

TOP

本帖最后由 isee 于 2019-3-17 16:14 编辑

发现楼主中点命令,和所有点都是手动控制的,和我风格很像。

以前画直角基本就是这个思想,现在回年一看在pic或者kuing的自定义命令之下就完全没啥作用了。
  1. %手动画直角
  2. \begin{tikzpicture}
  3. %\coordinate (b) at (0,0);
  4. %\coordinate (c) at (10,0);
  5. %\coordinate (d) at (10,8);
  6. \coordinate (a) at (0,8);
  7. \coordinate (e) at (10,3);       
  8. \coordinate (f) at (6,0);       
  9. \coordinate (g) at ($(f)!2mm!(a)$);
  10. \coordinate (h) at ($(f)!2mm!(e)$);       
  11. %\draw (b)node[below]{$B$}--(c)node[below]{$C$}--(d)node[above]{$D$}--(a)node[above]{$A$}--cycle;
  12. \draw (a)node[left]{$A$}--(e)node[right]{$E$}--(f)node[below]{$F$}--cycle;
  13. \coordinate (i) at ($(f)!1.41421!-45:(g)$);%画直角标记1
  14. \draw (g)--(i)--(h);%画直角标记2
  15. \end{tikzpicture}
复制代码
mangle.png

TOP

回复 18# kuing


我以前其实翻过,只是没看到直角符号,但又不是很懂英文,只是不确定,不过,心中大至确定还得自己动手,哈哈。

幸好你一查就中了。从pgfman*文件建立 信息来看是 2019年2月2号,很新的~

TOP

返回列表 回复 发帖