我有这个代码:
\documentclass{article}
\usepackage{tikz}
\usetikzlibrary{calc}
\begin{document}
\begin{tikzpicture}
\coordinate (A) at (0,0);
\coordinate (B) at (2,2);
\draw[thick] (A) -- (B |- A);
\draw[thick] (B) -- (B |- A);
\draw ($(B |- A) - (.2,0)$) |- ($(B |- A) + (0,.2)$);
\end{tikzpicture}
\end{document}
这样做的目的是:
一个简单的问题:最后一个命令可以优化吗?我对 tikzpictures 还很陌生,也许我不知道如何以更紧凑的方式获取像这样的点($(B |- A) - (.2,0)$)或直角?
答案1
你甚至不需要calc
。你可以简单地引入一个辅助坐标并使用它。
\documentclass{article}
\usepackage{tikz}
\begin{document}
\begin{tikzpicture}
\coordinate (A) at (0,0);
\coordinate (B) at (2,2);
\draw[thick] (A) -| coordinate (aux) (B) ;
\draw ([xshift=-2mm]aux) |- ([yshift=2mm]aux);
\end{tikzpicture}
\end{document}
答案2
tkz-euclide
在点坐标中引入了一些随机性
\documentclass{article}
\usepackage{tkz-euclide}
\begin{document}
\begin{tikzpicture}[scale=1.0]
%define points A,B,C
\tkzDefPoint(0,0){C}
\tkzDefPoint(20:9){B}
\tkzDefPoint(80:5){A}
%label point A,B,C
\tkzLabelPoints(C)
\tkzLabelPoints[above](A)
%get line orthogonal to base CB
\tkzDefPointsBy[projection=onto B--C](A){a}
\tkzDrawSegment[dashed, red](A,a)
%marking right angles
\tkzMarkRightAngle(A,a,C)
%drawing dimension 10
\tkzDrawSegment[style=red, dashed, dim={$10$,15pt,midway,font=\scriptsize, rotate=90}](A,a)
\tkzDrawLine(a,C)
\tkzDrawPoints(A,C)
\end{tikzpicture}
\end{document}
答案3
您可以从 tikz 包中加载角度库,该库提供了绘制直角符号的命令,还提供了绘制其他角度的圆弧符号:
\usepackage{tikz}
\usetikzlibrary{calc,angles}
\begin{document}
\begin{tikzpicture}
\coordinate (A) at (0,0);
\coordinate (B) at (2,2);
\draw[thick] (A) -- (B |- A)node[coordinate](C){}--(B);
% \draw ($(B |- A) - (.2,0)$) |- ($(B |- A) + (0,.2)$); No !
\draw pic[draw,red,thick,angle radius =2mm]{right angle=B--C--A}; % Yes !
\end{tikzpicture}
您需要使用节点来引用您将使用的点(这就是我添加node[coordinate](C){}
到您的代码中的原因)。