使用 cutwin 定制通用 wrapfig

使用 cutwin 定制通用 wrapfig

该环境wrapfigure与定理类环境配合得不好。可以通过mywrapfig使用包编写自定义(但受限)环境来补救cutwin。这可以正常工作,但唯一的麻烦是手动插入图形的高度。

在 MWE 中,{5}需要手动插入以下几行令人厌烦的参数——

\begin{mywrapfig}{5}{\begin{tikzpicture}
\begin{mywrapfig}{5}{\begin{tabular}{|cc|}

理想情况下,我希望废除它,因为——

\begin{mywrapfig}{\begin{tikzpicture}
\begin{mywrapfig}{\begin{tabular}{|cc|}

有办法吗?

编辑:具体来说,有没有办法\wrapquestionfigure在打印之前知道文本的高度(以文本行数为单位)?如果我知道,我可以用 该尺寸替换#1此行\cutout{0}{\dimexpr \textwidth - \wd\wrapquestionfigure - \columnsep\relax}{0pt}{#1}%

完整的 MWE——

\documentclass{article}
\usepackage{tikz,cutwin,lipsum} 

\newsavebox{\wrapquestionfigure}
\opencutright
\newenvironment{mywrapfig}[2]{%
    \savebox{\wrapquestionfigure}{ \begin{tikzpicture}\node {#2};\end{tikzpicture} }%
    \renewcommand{\windowpagestuff}{\begin{center}#2\end{center}}%
    \cutout{0}{\dimexpr \textwidth - \wd\wrapquestionfigure - \columnsep\relax}{0pt}{#1}%
} {%
    \endcutout%
}%

\begin{document}
    \begin{mywrapfig}{5}{\begin{tikzpicture}
            \draw[->] (0,0) -- (0,1.5) node[above] {$a (ms^2)$};
            \draw[->] (-.3,0) -- (2,0) node[right] {$t (s)$};
            \end{tikzpicture}}
        \textbf{Wrapped figure:} \lipsum[1]
    \end{mywrapfig}

    \begin{mywrapfig}{5}{\begin{tabular}{|cc|}%
                $\hat{i}\times\hat{j}=\hat{k}$ & $\hat{j}\times\hat{i}=-\hat{k}$ \\
                $\hat{j}\times\hat{k}=\hat{i}$ & $\hat{k}\times\hat{j}=-\hat{i}$ \\
                $\hat{k}\times\hat{i}=\hat{j}$ & $\hat{i}\times\hat{k}=-\hat{j}$ 
        \end{tabular}}
        \textbf{Wrapped table:} \lipsum[1]
    \end{mywrapfig}

    \textbf{General text:} \lipsum
\end{document}

在此处输入图片描述

答案1

问题的主要部分是询问一个框占用多少个标准基线,即

\numexpr
  \dimexpr \ht\wrapquestionfigure+\dp\wrapquestionfigure+.5\baselineskip\relax
  /
  \numexpr\baselineskip\relax
 \relax

答案2

您已经可以使用普通的 Tex 宏包非常轻松地完成此操作insbox.tex:它定义了两个命令:\InsertBoxR{no of lines untouched}{contents}和类似的\InsertBoxL。它们还接受一个可选参数(作为最后一个参数),即补充短行的数量,以防(La)TeX 错误地计算短行的数量:

\documentclass{article}
\usepackage{tikz ,lipsum}
\input{insbox}

\begin{document}

    \InsertBoxR{0}{\begin{tikzpicture}
            \draw[->] (0,0) -- (0,1.5) node[above] {$a (ms^2)$};
            \draw[->] (-.3,0) -- (2,0) node[right] {$t (s)$};
            \end{tikzpicture}}
        \textbf{Wrapped figure:} \lipsum[1]

    \InsertBoxR{0}{~\begin{tabular}{|cc|}%
                $\hat{i}\times\hat{j}=\hat{k}$ & $\hat{j}\times\hat{i}=-\hat{k}$ \\
                $\hat{j}\times\hat{k}=\hat{i}$ & $\hat{k}\times\hat{j}=-\hat{i}$ \\
                $\hat{k}\times\hat{i}=\hat{j}$ & $\hat{i}\times\hat{k}=-\hat{j}$
        \end{tabular}}[1]
        \textbf{Wrapped table:} \lipsum[1]

    \textbf{General text:} \lipsum
\end{document}

在此处输入图片描述

相关内容