有人能帮我缩放表格中的元素吗?它确实能渲染,但它会给我错误消息,如果我继续按回车键,这些消息就会消失,有没有人能帮助我编写代码让它运行?
\documentclass{book}
\usepackage{blindtext}
\usepackage{tikz}
\usepackage{tkz-euclide}
%Diagram enviroment
\newenvironment{diagram}
{\begin{center}\vspace*{10pt}\begin{tikzpicture}}
{\end{tikzpicture}\vspace*{-5pt}\end{center}}
\begin{document}
\begin{tabular}{ccc}
\begin{diagram}[scale=0.5]
\tkzDefPoints{-2/0/A,2/0/B,0/3/C}
\tkzDefPointOnLine[pos=2](C,A)\tkzGetPoint{E}
\tkzDefPointOnLine[pos=2](C,B)\tkzGetPoint{D}
\tkzDefPointOnLine[pos=1.5](C,A)\tkzGetPoint{F}
\tkzDefPointOnLine[pos=1.5](C,B)\tkzGetPoint{G}
\tkzDrawPolygon(A,B,C)
%\tkzDrawPolygon(D,E,C)
\tkzDrawSegment(A,E)
\tkzDrawSegment(B,D)
\tkzLabelPoints[left](A)
\tkzLabelPoints[right](B)
\tkzLabelPoints[above](C)
\tkzLabelPoints[left](E)
\tkzLabelPoints[right](D)
\tkzLabelPoints[left](F)
\tkzLabelPoints[right](G)
\tkzMarkSegment[mark=|](A,C)
\tkzMarkSegment[mark=|](B,C)
\tkzMarkAngle[size=0.5](B,A,C)
\tkzMarkAngle[size=0.5](C,B,A)
%\tkzDrawSegment(B,F)
%\tkzDrawSegment(A,G)
\end{diagram}
&
\begin{diagram}[scale=0.5]
\tkzDefPoints{-2/0/A,2/0/B,0/3/C}
\tkzDefPointOnLine[pos=2](C,A)\tkzGetPoint{E}
\tkzDefPointOnLine[pos=2](C,B)\tkzGetPoint{D}
\tkzDrawPolygon(A,B,C)
%\tkzDrawPolygon(D,E,C)
\tkzDrawSegment(A,E)
\tkzDrawSegment(B,D)
\tkzLabelPoints[left](A)
\tkzLabelPoints[right](B)
\tkzLabelPoints[above](C)
\tkzLabelPoints[left](E)
\tkzLabelPoints[right](D)
\tkzLabelPoints[left](F)
\tkzLabelPoints[right](G)
\tkzMarkSegment[mark=|](A,C)
\tkzMarkSegment[mark=|](B,C)
\tkzMarkAngle[size=0.5](B,A,C)
\tkzMarkAngle[size=0.5](C,B,A)
\tkzDrawSegment[dashed](B,F)
%\tkzDrawSegment(A,G)
\end{diagram}
&
\begin{diagram}[scale=0.5]
\tkzDefPoints{-2/0/A,2/0/B,0/3/C}
\tkzDefPointOnLine[pos=2](C,A)\tkzGetPoint{E}
\tkzDefPointOnLine[pos=2](C,B)\tkzGetPoint{D}
\tkzDrawPolygon(A,B,C)
%\tkzDrawPolygon(D,E,C)
\tkzDrawSegment(A,E)
\tkzDrawSegment(B,D)
\tkzLabelPoints[left](A)
\tkzLabelPoints[right](B)
\tkzLabelPoints[above](C)
\tkzLabelPoints[left](E)
\tkzLabelPoints[right](D)
\tkzLabelPoints[left](F)
\tkzLabelPoints[right](G)
\tkzMarkSegment[mark=|](A,C)
\tkzMarkSegment[mark=|](B,C)
\tkzMarkAngle[size=0.5](B,A,C)
\tkzMarkAngle[size=0.5](C,B,A)
\tkzDrawSegment[dashed](B,F)
\tkzDrawSegment[dashed](A,G)
\end{diagram}
\end{tabular}
\end{document}
答案1
(1)最好不要使用scale
。正如作者指出的那样
我最近在使用“比例”选项时发现了一个问题。
....
还有一种万无一失的方法,就是避免使用 scale = .... 如果您像我一样只使用代码开头固定的固定点,那么这很容易。图形的大小仅取决于这些固定点,因此您只需调整这些固定点的坐标即可。
(1b,更新)scale
引发了这个问题,但不是原因。请参阅最后添加的注释。
(2) 您可以将tikz
图形插入表格但不能插入环境diagram
,适合与文本一起使用。
由于所有图表都相似,因此添加了三个命令来更改块中的坐标。
\documentclass{book}
\usepackage{blindtext}
\usepackage{tikz}
\usepackage{tkz-euclide}
%\usepackage{showframe}
%Diagram enviroment
\newenvironment{diagram}
{\begin{center}\vspace*{10pt}\begin{tikzpicture} }
{\end{tikzpicture}\vspace*{-5pt}\end{center}}
\newcommand{\AB}{0.7} % A and B added <<<<<<<<<<<<<<
\newcommand{\C}{1.0} % C added <<<<<<<<<<<<<<
\newcommand{\Asize}{0.25} % Angle added <<<<<<<<<<<<<<
\begin{document}
\noindent\begin{tabular}{@{}ccc@{}}
\begin{tikzpicture}%[scale=0.5]
\tkzDefPoints{-\AB/0/A,\AB/0/B,0/\C/C}
\tkzDefPointOnLine[pos=2](C,A)\tkzGetPoint{E}
\tkzDefPointOnLine[pos=2](C,B)\tkzGetPoint{D}
\tkzDefPointOnLine[pos=1.5](C,A)\tkzGetPoint{F}
\tkzDefPointOnLine[pos=1.5](C,B)\tkzGetPoint{G}
\tkzDrawPolygon(A,B,C)
%% %\tkzDrawPolygon(D,E,C)
\tkzDrawSegment(A,E)
\tkzDrawSegment(B,D)
\tkzLabelPoints[left](A)
\tkzLabelPoints[right](B)
\tkzLabelPoints[above](C)
\tkzLabelPoints[left](E)
\tkzLabelPoints[right](D)
\tkzLabelPoints[left](F)
\tkzLabelPoints[right](G)
\tkzMarkSegment[mark=|](A,C)
\tkzMarkSegment[mark=|](B,C)
\tkzMarkAngle[size=\Asize](B,A,C)
\tkzMarkAngle[size=\Asize](C,B,A)
%% %\tkzDrawSegment(B,F)
%% %\tkzDrawSegment(A,G)
\end{tikzpicture}
&
\begin{tikzpicture}%[scale=0.5]
\tkzDefPoints{-\AB/0/A,\AB/0/B,0/\C/C}
\tkzDefPointOnLine[pos=2](C,A)\tkzGetPoint{E}
\tkzDefPointOnLine[pos=2](C,B)\tkzGetPoint{D}
\tkzDrawPolygon(A,B,C)
%\tkzDrawPolygon(D,E,C)
\tkzDrawSegment(A,E)
\tkzDrawSegment(B,D)
\tkzLabelPoints[left](A)
\tkzLabelPoints[right](B)
\tkzLabelPoints[above](C)
\tkzLabelPoints[left](E)
\tkzLabelPoints[right](D)
\tkzLabelPoints[left](F)
\tkzLabelPoints[right](G)
\tkzMarkSegment[mark=|](A,C)
\tkzMarkSegment[mark=|](B,C)
\tkzMarkAngle[size=\Asize](B,A,C)
\tkzMarkAngle[size=\Asize](C,B,A)
\tkzDrawSegment[dashed](B,F)
%\tkzDrawSegment(A,G)
\end{tikzpicture}
&
\begin{tikzpicture}%[scale=0.5]
\tkzDefPoints{-\AB/0/A,\AB/0/B,0/\C/C}
\tkzDefPointOnLine[pos=2](C,A)\tkzGetPoint{E}
\tkzDefPointOnLine[pos=2](C,B)\tkzGetPoint{D}
\tkzDrawPolygon(A,B,C)
%\tkzDrawPolygon(D,E,C)
\tkzDrawSegment(A,E)
\tkzDrawSegment(B,D)
\tkzLabelPoints[left](A)
\tkzLabelPoints[right](B)
\tkzLabelPoints[above](C)
\tkzLabelPoints[left](E)
\tkzLabelPoints[right](D)
\tkzLabelPoints[left](F)
\tkzLabelPoints[right](G)
\tkzMarkSegment[mark=|](A,C)
\tkzMarkSegment[mark=|](B,C)
\tkzMarkAngle[size=\Asize](B,A,C)
\tkzMarkAngle[size=\Asize](C,B,A)
\tkzDrawSegment[dashed](B,F)
\tkzDrawSegment[dashed](A,G)
\end{tikzpicture}
\end{tabular}
\end{document}
修复问题
至少在这种情况下,问题似乎是局部的,当值较小(缩放后,约为 0.2)\tkzMarkAngle
时命令会失败。size
可以使用新的定义和一个简单的选项来修复它\tkzMarkAngle
(它可以适用于 的任何值size
,甚至 0):
\makeatletter
\def\tkz@MarkAngle[#1](#2,#3,#4){%
\begingroup
\pgfqkeys{/tkzmkangle}{#1}
\tkzFindSlopeAngle(#3,#2)\tkzGetAngle{tkz@dirOne}
\tkzFindSlopeAngle(#3,#4)\tkzGetAngle{tkz@dirTwo}
\tkzNormalizeAngle(\tkz@dirOne,\tkz@dirTwo)
\def\tkz@mymark{\pgfsetplotmarksize{\tkz@mksize}\pgfuseplotmark{\tkz@markang}}
% draw the arcs
\begin{scope}[decoration= {markings, mark=at position \tkz@mkpos with {\tkz@mymark}}]
\tkzDrawArcRAN[#1,fill=none]%
(#3,\tkz@size)(\tkz@FirstAngle,\tkz@SecondAngle)%
\end{scope}
\endgroup
}
\makeatother