diagramas tkz que causan mal funcionamiento de vbox

diagramas tkz que causan mal funcionamiento de vbox

¿Cómo puedo detener el problema de vbox a continuación? Solo se detiene si hago que mis diagramas tengan una escala de = 0,3 cm y no los quiero tan pequeños. Sé que no se muestra en WME, pero en el documento completo esto es el único diagrama que lo afecta.

    \documentclass[12pt, a4paper, twoside, openright,fleqn, leqno, draft, ]{book}

    \usepackage{tkz-euclide}            %Tkz-Euclide diagrams
    \usepackage{amsmath,amsthm,amssymb,cancel}                  %Math packages

    %Diagram environment
    \newenvironment{diagram}
    {%
    \par\addvspace{0pt}%
    \centering
    \stepcounter{CountDiag}
    \tkzSetUpCompass[lenth=1cm]
    \begin{tikzpicture}
    }{%
    \end{tikzpicture}\par
    \vspace{-20pt}
    Diagram~\theCountDiag\par
    \addvspace{0pt}
    }
%    \newcounter{CountDiag}\counterwithin*{CountDiag}.   {section}%
    \newcounter{CountDiag}\counterwithin*{CountDiag}{section}%

    \newcommand{\Tri}[8]{%%
    \tkzDefPoint(0,0){#1}%
    \tkzDefPoint({#2,#3}){#4}%
    \tkzDefPoint({#5,#6}){#7}%
    \tkzDrawPolygon[fill=#8](#1,#4,#7)%
    \tkzLabelPoint[left](#1){$#1$}% 
    \tkzLabelPoint[below](#4){$#4$}%
    \tkzLabelPoint[above](#7){$#7$}%
    \tkzDrawPoints(#1,#4,#7)%
    }

    \begin{document}

    \begin{diagram}[scale=0.7]
    \Tri{B}{3}{0}{C}{1.5}{3}{A}{none}
        \tkzDefPointOnLine[pos=2](A,B)          \tkzGetPoint{E}
        \tkzDefPointOnLine[pos=2](A,C)          \tkzGetPoint{D}
        \tkzDefPointOnLine[pos=1.5](A,B)            \tkzGetPoint{F}
        \tkzDefPointOnLine[pos=1.5](A,C)            \tkzGetPoint{G} 
         \tkzDrawPolygon(A,B,C)
         \tkzDrawSegment(A,E)
         \tkzDrawSegment(A,D)
        \tkzLabelPoints[left](E)
        \tkzLabelPoints[right](D)
        \tkzLabelPoints[left](F)
        \tkzLabelPoints[right](G)
        \tkzMarkSegment[mark=|](A,C)
        \tkzMarkSegment[mark=|](A,B)
        \tkzMarkAngle[size=0.5](A,C,B)
        \tkzMarkAngle[size=0.5](C,B,A)
        \tkzDrawPoints[fill=gray](A,B,C,D,E,F,G)
         \tkzDrawSegment[dashed](C,F)
     \end{tikzpicture}
    \hspace{0.3cm}
    \begin{tikzpicture}[scale=0.7]
       \Tri{B}{3}{0}{C}{1.5}{3}{A}{none}
       \tkzDefPointOnLine[pos=2](A,B)           \tkzGetPoint{E}
    \tkzDefPointOnLine[pos=2](A,C)      \tkzGetPoint{D}
        \tkzDefPointOnLine[pos=1.5](A,B)            \tkzGetPoint{F}
        \tkzDefPointOnLine[pos=1.5](A,C)            \tkzGetPoint{G} 
        \tkzDrawPolygon(A,B,C)
        \tkzDrawSegment(A,E)
        \tkzDrawSegment(A,D)
        \tkzLabelPoints[left](E)
        \tkzLabelPoints[right](D)
        \tkzLabelPoints[left](F)
        \tkzLabelPoints[right](G)       
        \tkzMarkSegment[mark=|](A,C)
        \tkzMarkSegment[mark=|](A,B)
        \tkzMarkAngle[size=0.5](A,C,B)
        \tkzMarkAngle[size=0.5](C,B,A)
        \tkzDrawSegment[dashed](B,G)
        \tkzDrawPoints[fill=gray](A,B,C,D,E,F,G)
    \end{tikzpicture}
    \hspace{0.3cm}
    \begin{tikzpicture}[scale=0.7]
       \Tri{B}{3}{0}{C}{1.5}{3}{A}{none}
          \tkzDefPointOnLine[pos=2](A,B)            \tkzGetPoint{E}
        \tkzDefPointOnLine[pos=2](A,C)          \tkzGetPoint{D}
        \tkzDefPointOnLine[pos=1.5](A,B)            \tkzGetPoint{F}
        \tkzDefPointOnLine[pos=1.5](A,C)            \tkzGetPoint{G} 
        \tkzDrawPolygon(A,B,C)
        \tkzDrawSegment(A,E)
        \tkzDrawSegment(A,D)
        \tkzLabelPoints[left](E)
        \tkzLabelPoints[right](D)
        \tkzLabelPoints[left](F)
        \tkzLabelPoints[right](G)       
        \tkzMarkSegment[mark=|](A,C)
        \tkzMarkSegment[mark=|](A,B)
        \tkzMarkAngle[size=0.5](A,C,B)
        \tkzMarkAngle[size=0.5](C,B,A)
        \tkzDrawSegment[dashed](B,G)
          \tkzDrawSegment[dashed](C,F)
        \tkzDrawPoints[fill=gray](A,B,C,D,E,F,G)
    \end{diagram}
    \end{document}

Perdón por el código largo, pero se trata principalmente de diagramas.

Captura de pantalla:

resultado

Respuesta1

El código mostrado no tiene ningún vbox underful, aunque puede participar en el salto de página produciendo una página underful. (Podrías haber simplificado el ejemplo reemplazando todos los tikz \rule{5pt}{4cm}porque lo único que importa es el tamaño vertical del diagrama).

Un ejemplo de su problema es

ingrese la descripción de la imagen aquí

\documentclass[12pt, a4paper, twoside, openright,fleqn, leqno, draft, ]{book}

    \usepackage{tkz-euclide}            %Tkz-Euclide diagrams
    \usepackage{amsmath,amsthm,amssymb,cancel}                  %Math packages

    %Diagram environment
    \newenvironment{diagram}
    {%
    \par\addvspace{0pt}%
    \centering
    \stepcounter{CountDiag}
    \tkzSetUpCompass[lenth=1cm]
    \begin{tikzpicture}
    }{%
    \end{tikzpicture}\par
    \vspace{-20pt}
    Diagram~\theCountDiag\par
    \addvspace{0pt}
    }
%    \newcounter{CountDiag}\counterwithin*{CountDiag}.   {section}%
    \newcounter{CountDiag}\counterwithin*{CountDiag}{section}%

    \newcommand{\Tri}[8]{%%
    \tkzDefPoint(0,0){#1}%
    \tkzDefPoint({#2,#3}){#4}%
    \tkzDefPoint({#5,#6}){#7}%
    \tkzDrawPolygon[fill=#8](#1,#4,#7)%
    \tkzLabelPoint[left](#1){$#1$}% 
    \tkzLabelPoint[below](#4){$#4$}%
    \tkzLabelPoint[above](#7){$#7$}%
    \tkzDrawPoints(#1,#4,#7)%
    }

    \begin{document}

    \begin{diagram}[scale=0.7]
    \Tri{B}{3}{0}{C}{1.5}{3}{A}{none}
        \tkzDefPointOnLine[pos=2](A,B)          \tkzGetPoint{E}
        \tkzDefPointOnLine[pos=2](A,C)          \tkzGetPoint{D}
        \tkzDefPointOnLine[pos=1.5](A,B)            \tkzGetPoint{F}
        \tkzDefPointOnLine[pos=1.5](A,C)            \tkzGetPoint{G} 
         \tkzDrawPolygon(A,B,C)
         \tkzDrawSegment(A,E)
         \tkzDrawSegment(A,D)
        \tkzLabelPoints[left](E)
        \tkzLabelPoints[right](D)
        \tkzLabelPoints[left](F)
        \tkzLabelPoints[right](G)
        \tkzMarkSegment[mark=|](A,C)
        \tkzMarkSegment[mark=|](A,B)
        \tkzMarkAngle[size=0.5](A,C,B)
        \tkzMarkAngle[size=0.5](C,B,A)
        \tkzDrawPoints[fill=gray](A,B,C,D,E,F,G)
         \tkzDrawSegment[dashed](C,F)
     \end{tikzpicture}
    \hspace{0.3cm}
    \begin{tikzpicture}[scale=0.7]
       \Tri{B}{3}{0}{C}{1.5}{3}{A}{none}
       \tkzDefPointOnLine[pos=2](A,B)           \tkzGetPoint{E}
    \tkzDefPointOnLine[pos=2](A,C)      \tkzGetPoint{D}
        \tkzDefPointOnLine[pos=1.5](A,B)            \tkzGetPoint{F}
        \tkzDefPointOnLine[pos=1.5](A,C)            \tkzGetPoint{G} 
        \tkzDrawPolygon(A,B,C)
        \tkzDrawSegment(A,E)
        \tkzDrawSegment(A,D)
        \tkzLabelPoints[left](E)
        \tkzLabelPoints[right](D)
        \tkzLabelPoints[left](F)
        \tkzLabelPoints[right](G)       
        \tkzMarkSegment[mark=|](A,C)
        \tkzMarkSegment[mark=|](A,B)
        \tkzMarkAngle[size=0.5](A,C,B)
        \tkzMarkAngle[size=0.5](C,B,A)
        \tkzDrawSegment[dashed](B,G)
        \tkzDrawPoints[fill=gray](A,B,C,D,E,F,G)
    \end{tikzpicture}
    \hspace{0.3cm}
    \begin{tikzpicture}[scale=0.7]
       \Tri{B}{3}{0}{C}{1.5}{3}{A}{none}
          \tkzDefPointOnLine[pos=2](A,B)            \tkzGetPoint{E}
        \tkzDefPointOnLine[pos=2](A,C)          \tkzGetPoint{D}
        \tkzDefPointOnLine[pos=1.5](A,B)            \tkzGetPoint{F}
        \tkzDefPointOnLine[pos=1.5](A,C)            \tkzGetPoint{G} 
        \tkzDrawPolygon(A,B,C)
        \tkzDrawSegment(A,E)
        \tkzDrawSegment(A,D)
        \tkzLabelPoints[left](E)
        \tkzLabelPoints[right](D)
        \tkzLabelPoints[left](F)
        \tkzLabelPoints[right](G)       
        \tkzMarkSegment[mark=|](A,C)
        \tkzMarkSegment[mark=|](A,B)
        \tkzMarkAngle[size=0.5](A,C,B)
        \tkzMarkAngle[size=0.5](C,B,A)
        \tkzDrawSegment[dashed](B,G)
          \tkzDrawSegment[dashed](C,F)
        \tkzDrawPoints[fill=gray](A,B,C,D,E,F,G)
    \end{diagram}


    \section{aaaaaa}
    xxxx xxxx    xxxx xxxx    xxxx xxxx    xxxx xxxx    xxxx xxxx
    xxxx xxxx    xxxx xxxx    xxxx xxxx    xxxx xxxx    xxxx xxxx
    xxxx xxxx    xxxx xxxx    xxxx xxxx    xxxx xxxx    xxxx xxxx
    xxxx xxxx    xxxx xxxx    xxxx xxxx    xxxx xxxx    xxxx xxxx
    xxxx xxxx    xxxx xxxx    xxxx xxxx    xxxx xxxx    xxxx xxxx
    \section{aaaaaa}
    xxxx xxxx    xxxx xxxx    xxxx xxxx    xxxx xxxx    xxxx xxxx
    xxxx xxxx    xxxx xxxx    xxxx xxxx    xxxx xxxx    xxxx xxxx
    xxxx xxxx    xxxx xxxx    xxxx xxxx    xxxx xxxx    xxxx xxxx
    xxxx xxxx    xxxx xxxx    xxxx xxxx    xxxx xxxx    xxxx xxxx
    xxxx xxxx    xxxx xxxx    xxxx xxxx    xxxx xxxx    xxxx xxxx
    xxxx xxxx    xxxx xxxx    xxxx xxxx    xxxx xxxx    xxxx xxxx
    xxxx xxxx    xxxx xxxx    xxxx xxxx    xxxx xxxx    xxxx xxxx
    xxxx xxxx    xxxx xxxx    xxxx xxxx    xxxx xxxx    xxxx xxxx
    \section{aaaaaa}
    xxxx xxxx    xxxx xxxx    xxxx xxxx    xxxx xxxx    xxxx xxxx
    xxxx xxxx    xxxx xxxx    xxxx xxxx    xxxx xxxx    xxxx xxxx
    xxxx xxxx    xxxx xxxx    xxxx xxxx    xxxx xxxx    xxxx xxxx
    xxxx xxxx    xxxx xxxx    xxxx xxxx    xxxx xxxx    xxxx xxxx
    xxxx xxxx    xxxx xxxx    xxxx xxxx    xxxx xxxx    xxxx xxxx
    \end{document}

que produce

Underfull \vbox (badness 4108) has occurred while \output is active

Como bookla clase está predeterminada, \flushbottompero no puede haber un salto de página inmediatamente después del título de la sección, toda la sección 0.3 tiene que ir a la página siguiente, entonces no hay suficiente pegamento flexible o texto para llegar al final de la página 1 sin sobrepasar. estirando el espacio en blanco, de ahí la advertencia.

Puede escribir más texto para llenar el espacio, o agregarlo \vfilldespués del diagrama para permitir más espacios en blanco, o usarlo \clearpageantes de la sección 3 para forzar una página corta.

información relacionada