段組みと大きな画像の問題

段組みと大きな画像の問題

画像は最初の列に収まるには高すぎますが、残りのテキストはこの列の高さ全体に広がっています。この問題を回避する唯一の方法は、vbox特定の高さに空白を配置することです。これでは満足できません。最善の方法は何でしょうか?

\documentclass{scrartcl}
\usepackage{tikz}
\usepackage{multicol,lipsum}
\setlength{\columnsep}{24pt}
\setlength{\columnseprule}{0.4pt}

\begin{document}
\begin{multicols*}{2}
   
\section{Contruction with inversion} 

Let us consider the circle $\mathcal{T}$ of center $T$ point common to the circles $\mathcal{A}$ and $\mathcal{B}$ and tangent to the line $(EF)$. It intercepts the two circles at 4 points which define two lines $\mathcal{L_A}$ and $\mathcal{L_B}$ perpendicular to the line $(AB)$.
  
Consider the inversion of center $T$ with respect to the circle $\mathcal{T}$. The circles $\mathcal{A}$ and $\mathcal{B}$ have as inverses the lines $\mathcal{L_A}$ and $\mathcal{L_B}$.
     
The orange circle passing through $T$ and tangent to the circle $\mathcal{T}$ and to the line $(EF)$ is therefore tangent to the line $(EF)$. This circle is therefore tangent to the lines $\mathcal{L_A}$ and $\mathcal{L_B}$ since $(EF)$ is tangent to the circles $\mathcal{A}$ and $\mathcal{B}$.

%\vbox to 10cm{} 

 \begin{tikzpicture}
    \draw (0,0)--(7,15) (0,15)--(7,0);
 \end{tikzpicture} 
 
\lipsum[2]
 \end{multicols*}

\end{document}

ここに画像の説明を入力してください

答え1

これにより、最初の列を埋めるのに十分なテキストが追加され、リンクされたソリューションが使用されます。

\documentclass{scrartcl}
\usepackage{tikz}
\usepackage{multicol,lipsum}
\setlength{\columnsep}{24pt}
\setlength{\columnseprule}{0.4pt}

\makeatletter
\newcommand{\split}[2]% #1 = text, #2 = insert
{\par\bgroup
  \setbox0=\vbox{\strut #1\strut}% measure height
  \sbox1{#2}% ditto
  \dimen0=\dimexpr \pagegoal-\pagetotal-\col@number\baselineskip\relax% fudge factor
  \dimen1=\pagegoal% compute height of one column
  \ifnum\col@number>1\relax
    \divide\dimen1 by \col@number
  \fi
  \advance\dimen1 by -\baselineskip% fudge factor
  \loop\ifdim\dimen0>\dimen1% space left in this column
    \advance\dimen0 by -\dimen1
  \repeat
  \dimen1=\dimexpr \ht1+\dp1+\textfloatsep\relax% space needed for insert
  \ifdim\dimen1>\dimen0
    \ifdim\ht0>\dimen0
      \setbox2=\vsplit0 to \dimen0
      \unvbox2
      \noindent\box1
      \vskip\textfloatsep
      \unvbox0
    \else% entire text will fit into column
      \unvbox0
      \vskip\textfloatsep% probably ignored
      \noindent\box1
      \vskip\textfloatsep
    \fi
  \else% insert will fit into column
    \vskip\intextsep
    \noindent\box1
    \vskip\intextsep
    \unvbox0
  \fi
\egroup\par}
\makeatother

\begin{document}
\begin{multicols*}{2}
   
\section{Contruction with inversion} 

Let us consider the circle $\mathcal{T}$ of center $T$ point common to the circles $\mathcal{A}$ and $\mathcal{B}$ and tangent to the line $(EF)$. It intercepts the two circles at 4 points which define two lines $\mathcal{L_A}$ and $\mathcal{L_B}$ perpendicular to the line $(AB)$.
  
Consider the inversion of center $T$ with respect to the circle $\mathcal{T}$. The circles $\mathcal{A}$ and $\mathcal{B}$ have as inverses the lines $\mathcal{L_A}$ and $\mathcal{L_B}$.
     
The orange circle passing through $T$ and tangent to the circle $\mathcal{T}$ and to the line $(EF)$ is therefore tangent to the line $(EF)$. This circle is therefore tangent to the lines $\mathcal{L_A}$ and $\mathcal{L_B}$ since $(EF)$ is tangent to the circles $\mathcal{A}$ and $\mathcal{B}$.\strut

\split{\lipsum[2-3]}{\noindent\begin{tikzpicture}
    \draw (0,0)--(\columnwidth,15) (0,15)--(\columnwidth,0);
 \end{tikzpicture}}

 \end{multicols*}

\end{document}

デモ


もし、あんたがのように大きな隙間がある場合は

\split{\vfill}{\noindent\begin{tikzpicture}
    \draw (0,0)--(\columnwidth,15) (0,15)--(\columnwidth,0);
\end{tikzpicture}}

関連情報