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으로 변경하면 다이어그램이 깨지고 렌더링에 실패합니다.
나는에게서 배웠다이 스레드\usetkzobj{all}
최근 tkz-euclide와 함께 사용해서는 안됩니다 . 2020 배포판에서 이 줄을 주석 처리하면 일부 문제가 해결되지만 전부는 아닙니다.
도움이 될 경우를 대비해 내 Overleaf 프로젝트에 대한 링크는 다음과 같습니다.
메뉴 > 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}