tkz-euclide で作成した三角形の図は TeX Live 2018 ではレンダリングされますが、2020 ではレンダリングされません

tkz-euclide で作成した三角形の図は TeX Live 2018 ではレンダリングされますが、2020 ではレンダリングされません

Overleaf (TeX Live 2018) で完璧にコンパイルおよびレンダリングされる三角形の図があります。

ここに画像の説明を入力してください

正常にコンパイルされるコードは次のとおりです。

\documentclass[addpoints]{exam}
\printanswers
\usepackage{gensymb} %for degree symbol
\usepackage{pgf,tikz}
\usetikzlibrary{angles,arrows.meta,automata,backgrounds,calc,decorations.markings,decorations.pathreplacing,intersections,patterns,positioning,quotes}
\usetikzlibrary{shapes} %For polygon nodes, see http://www.texample.net/tikz/examples/node-shapes/
\usepgflibrary{shapes.geometric}

%Needed to resolve conflict between tkz-euclide and thmtools, see https://tex.stackexchange.com/questions/456029/thmtools-and-tkz-euclide-conflict
\usepackage{tkz-euclide}
\usetkzobj{all}
%\usepackage{thmtools}
\usepackage{etoolbox}
\makeatletter
%%% patch tkz-tools-base.tex
\let\tkz@g@xa\tkz@init@xmin % don't undef \@xa or thmtools will be upset
\let\tkz@g@xb\tkz@init@xmax\undef\@xb
\let\tkz@g@ya\tkz@init@ymin\undef\@ya
\let\tkz@g@yb\tkz@init@ymax\undef\@yb
\patchcmd{\tkz@Init}
 {\global\let\@xa\tkz@init@xmin
  \global\let\@xb\tkz@init@xmax
  \global\let\@ya\tkz@init@ymin
  \global\let\@yb\tkz@init@ymax}
 {\global\let\tkz@g@xa\tkz@init@xmin
  \global\let\tkz@g@xb\tkz@init@xmax
  \global\let\tkz@g@ya\tkz@init@ymin
  \global\let\tkz@g@yb\tkz@init@ymax}
 {}{}
\patchcmd{\tkz@Grid}
 {(\@xa,\@ya)(\@xb,\@yb)}
 {(\tkz@g@xa,\tkz@g@ya)(\tkz@g@xb,\tkz@g@yb)}
 {}{}
\makeatother
\newtheorem{thm}{Theorem}

\title{MWE}
\begin{document}
\begin{questions}
\question
\begin{parts}
\part %from https://tex.stackexchange.com/questions/314290/how-to-draw-a-triangle-with-line-parallel-inside
$\triangle ABC$ to $\triangle ADE$
\begin{center}
\begin{tikzpicture}[scale=0.5]
\tkzDefPoint(0,0){A}
\tkzDefPoint(12,0){D}
\tkzDefPoint(12,6){E}
\tkzLabelPoint[below right](D){$D$}
\tkzLabelPoint[above right](E){$E$}
\tkzLabelPoint[below left](A){$A$}
\begin{pgfinterruptboundingbox}
\tkzDrawSegment(A,D)
\tkzDrawSegment(A,E)
\tkzDrawSegment(D,E)
\tkzDefPoint(9,4.5){C}
\tkzDefMidPoint(A,E)\tkzGetPoint{C}
\tkzDrawAltitude(A,D)(C)\tkzGetPoint{B}
\tkzLabelPoint[above](C){$C$}
\tkzLabelPoint[below](B){$B$}
\tkzLabelSegment[right](B,C){$y_1$}
\tkzLabelSegment[right](D,E){$y_2$}
\tkzLabelSegment[below](A,B){$x_1$}
\tkzLabelSegment[below](B,D){$x_2$}
\tkzLabelSegment[above](A,C){$z_1$}
\tkzLabelSegment[above](C,E){$z_2$}
\tkzMarkRightAngle[size=0.75,opacity=.4](A,B,C)
\tkzMarkRightAngle[size=0.75,opacity=.4](A,D,E)
\draw[{Bar[width=3mm].Latex[]}-{Latex[]Bar[width=3mm]}]($(D)-(0,1.5)$) -- node [fill=white] {$l$} ($(A)-(0,1.5)$);
\end{pgfinterruptboundingbox}
%\draw (current bounding box.south east) rectangle (current bounding box.north west);
\end{tikzpicture}
\end{center}
\vspace*{\stretch{1}}
\end{parts}
\end{questions}
\end{document}

ただし、TeX Live ディストリビューションを 2018 から 2020 に変更すると、図が壊れてレンダリングに失敗します。

ここに画像の説明を入力してください

ここに画像の説明を入力してください

私は学んだこのスレッド最近の tkz-euclide では使用しないでください\usetkzobj{all}。2020 ディストリビューションでこの行をコメントすると、一部の問題は修正されますが、すべての問題は修正されません。

役に立つかもしれないので、私の Overleaf プロジェクトへのリンクをここに示します。

オーバーリーフ MWE

メニュー > TeX Live に移動してバージョンを変更し、何が起こるか確認してみてください。( \usetkzobj{all}TeX Live を 2018 に切り替える場合はコメントを解除することを忘れないでください。そうしないと、図が正しくレンダリングされません。)

非互換性の原因は何だと思いますか? ありがとうございます!

答え1

\tkzDrawXXXX の構文が変更されたようで、これが に影響します\tkzDrawAltitude。これは次のようにコンパイルされます:

\documentclass{article}
\usepackage{tkz-euclide}
\begin{document}
\begin{tikzpicture}[scale=0.5]
\tkzDefPoint(0,0){A}
\tkzDefPoint(12,0){D}
\tkzDefPoint(12,6){E}
\tkzLabelPoint[below right](D){$D$}
\tkzLabelPoint[above right](E){$E$}
\tkzLabelPoint[below left](A){$A$}
\begin{pgfinterruptboundingbox}
\tkzDrawSegment(A,D)
\tkzDrawSegment(A,E)
\tkzDrawSegment(D,E)
\tkzDefPoint(9,4.5){C}
\tkzDefMidPoint(A,E)\tkzGetPoint{C}
\tkzDrawAltitude(A,C,D)%<--- changed
\tkzGetPoint{B}
\tkzLabelPoint[above](C){$C$}
\tkzLabelPoint[below](B){$B$}
\tkzLabelSegment[right](B,C){$y_1$}
\tkzLabelSegment[right](D,E){$y_2$}
\tkzLabelSegment[below](A,B){$x_1$}
\tkzLabelSegment[below](B,D){$x_2$}
\tkzLabelSegment[above](A,C){$z_1$}
\tkzLabelSegment[above](C,E){$z_2$}
\tkzMarkRightAngle[size=0.75,opacity=.4](A,B,C)
\tkzMarkRightAngle[size=0.75,opacity=.4](A,D,E)
\draw[{Bar[width=3mm].Latex[]}-{Latex[]Bar[width=3mm]}]($(D)-(0,1.5)$) -- node [fill=white] {$l$} ($(A)-(0,1.5)$);
\end{pgfinterruptboundingbox}
%\draw (current bounding box.south east) rectangle (current bounding box.north west);
\end{tikzpicture}
\end{document}

関連情報