我认为的最佳实践,当涉及「圆锥曲线」时,比较系统化的作图方式是基于tkz-elements,下面的代码虽然较长,但是逻辑清晰,可拓展性强,方便多次复用。
\documentclass[tikz,border=2pt]{standalone}
\usepackage{tkz-euclide,tkz-elements}
\directlua{
init_elements()
z.O = point(0, 0)
z.C = point(2, 1)
z.P = point(4, 4)
% -- 准线
z.L1 = point(-1,-4.5)
z.L2 = point(-1,4.5)
L.line = line(z.L1, z.L2)
% -- 抛物线
z.F = point(1, 0)
CO.PA = conic(z.F, L.line, 1)
PA.PA = CO.PA:points(-4.5, 4.5, 300)
% -- 定义圆
z.c = point(0, 1)
C.Cc = circle(z.C, z.c)
% -- 定义过P做圆C的切线
L.T1,L.T2 = C.Cc:tangent_from(z.P)
z.T1 = L.T1.pb
z.T2 = L.T2.pb
}
\begin{document}
\begin{tikzpicture}[scale=.4,smooth,line cap=round]
\tkzGetNodes
\tkzInit[xmin=-2,xmax=5.5,ymin=-4.5,ymax=4.5]
\tkzDrawX[noticks]\tkzDrawY[noticks]
\tkzDrawCircle[red,thick](C,c)
\tkzDrawPoints(O,P,C,T1,T2)
\tkzLabelPoints[below left](O,P,C)
\tkzDrawSegment[cyan,thick](L1,L2)
\tkzDrawCoordinates[smooth,cyan,thick](PA.PA)
\tkzDrawSegments[violet,thick](P,T1 T1,C C,T2 T2,P)
\end{tikzpicture}
\end{document}


















问 利用tangent绘图系统画切线失败