多色和大图问题

多色和大图问题

图片太高,无法放在第一列,但其余文本却占据了这一列的整个高度。我发现避免这个问题的唯一方法是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}}

相关内容