表格中的缩放图

表格中的缩放图

有人能帮我缩放表格中的元素吗?它确实能渲染,但它会给我错误消息,如果我继续按回车键,这些消息就会消失,有没有人能帮助我编写代码让它运行?

\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,适合与文本一起使用。

由于所有图表都相似,因此添加了三个命令来更改块中的坐标。

A

\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

相关内容