在 tikz 图片周围放置文字

在 tikz 图片周围放置文字

我编写了一个命令来自动将文字环绕在 tikz 图片周围(图像 1)。 在此处输入图片描述

我希望当文本高于图像高度时,线宽可以扩大(图像 2)。 在此处输入图片描述

请帮助纠正以下代码。

\documentclass{article}
\usepackage{tikz}
\usepackage{lipsum} 
\newdimen\widthimmini
\newdimen\heightimmini
\newdimen\textimagewidth
\newbox\imbox
\newcommand{\putimage}[3][-12pt]{
        \setbox\imbox=\vbox{\hbox{#3}}
        \widthimmini=\wd\imbox
        \heightimmini=\ht\imbox 
        \textimagewidth=\dimexpr\linewidth - 1.075\widthimmini\relax
\par\vspace*{\dimexpr#1\relax}\noindent{\ignorespaces\begin{minipage}[t]{\textimagewidth}
    \vspace*{0pt}\ignorespaces
    \begingroup
    #2
    \endgroup
    \end{minipage}
    \begin{minipage}[t]{\widthimmini}
    \vspace*{-1pt}
\begin{center}
    \begingroup
        #3
    \endgroup
\end{center}
\end{minipage}}}
\begin{document}
\putimage{ \lipsum[30]
}
{\begin{tikzpicture}
\draw (0,0) circle(2);
\end{tikzpicture}}

\newpage
\putimage{ \lipsum[10]
}
{\begin{tikzpicture}
\draw (0,0) circle(2);
\end{tikzpicture}}

\noindent
\lipsum[5]
\end{document}

答案1

你把事情变得复杂了:普通的 TeXinsbox宏包可以做你想做的事,在这里它工作得很好。它定义了一个 \InsertBoxR命令,该命令接受两个强制参数:插入框之前未缩短的行数和插入的框,以及一个可选参数:补充缩短的行数,以防 latex 对放置框所需的缩短行数计算错误。

还有一个\InsertBoxL和一个\InsertBoxC命令。

这是一个可能的代码:

 \documentclass{article}
\usepackage{tikz}
\usepackage{lipsum}
\input{insbox.tex}

\begin{document}

\InsertBoxR{0}{\begin{tikzpicture}
\draw (0,0) circle(2);
\end{tikzpicture}}
 \lipsum[30]
\newpage

\InsertBoxR{3}{\begin{tikzpicture}
\draw (0,0) circle(2);
\end{tikzpicture}}
\lipsum[10]
\noindent
\lipsum[5]

\end{document} 

在此处输入图片描述

相关内容