
Как мне остановить этот ужасный vbox? Он прекращается только если я делаю масштаб диаграмм = 0,3 см, а я не хочу, чтобы они были такими маленькими. Я знаю, что это не отображается в WME, но в полном документе это единственная диаграмма, которая на это влияет.
\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}
извините за длинный код, но в основном это просто диаграммы.
Скриншот:
решение1
В показанном коде нет ни одного недозаполненного vbox, хотя он может участвовать в разрыве страницы, создавая недозаполненную страницу. (Вы могли бы упростить пример, заменив все tikz на , \rule{5pt}{4cm}
поскольку важен только вертикальный размер диаграммы.)
Пример вашей проблемы:
\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}
который производит
Underfull \vbox (badness 4108) has occurred while \output is active
Поскольку book
класс по умолчанию равен , \flushbottom
но вы не можете сделать разрыв страницы сразу после заголовка раздела, весь раздел 0.3 должен перейти на следующую страницу, тогда не будет достаточно гибкого клея или текста, чтобы достичь низа страницы 1 без чрезмерного растяжения пустого пространства, отсюда и предупреждение.
Вы можете написать больше текста, чтобы заполнить пространство, или добавить его \vfill
после диаграммы, чтобы оставить больше свободного места, или использовать \clearpage
перед разделом 3, чтобы сделать страницу короче.