![使用 cutwin 定制通用 wrapfig](https://linux22.com/image/361723/%E4%BD%BF%E7%94%A8%20cutwin%20%E5%AE%9A%E5%88%B6%E9%80%9A%E7%94%A8%20wrapfig.png)
该环境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}