如何在LaTeX定理环境中的tikz图片周围浮动文本?

时间:2016-01-10 03:00:04

标签: latex tikz

我不喜欢像xfig一样使用外部图片编辑器,因为它不起作用。这是一个例子:

\documentclass{article}
\usepackage[T1]{fontenc}
\usepackage[utf8]{inputenc}
\usepackage[magyar]{babel}

\usepackage{amsthm}
\usepackage{amsmath}
\usepackage{amssymb}
\usepackage{amstext}

\usepackage{tikz}
\usepackage{cutwin}

\newtheorem{thm}{tétel}

\begin{document}
    \section{Téglalap}
        \begin{thm}
            A téglalap a területét az oldalhosszakból az
            $$A=ab$$
            képlettel számolhatjuk ki.
        \end{thm}
        \begin{proof}
            A bizonyítás grafikusan igen jól szemléltethető. Vegyünk fel ugyanis egy $a+b$ oldalhosszúságú négyzetet, és ebben helyezzük el a négy egybevágó téglalapot.
            \opencutleft\begin{cutout}{3}{0pt}{\textwidth}{1}
                \begin{tikzpicture}
                    \draw (0,0) -- (0,1) -- (3,1) -- (3,0) -- cycle;
                    \draw (3,0) -- (4,0) -- (4,3) -- (3,3) -- cycle;
                    \draw (4,3) -- (4,4) -- (1,4) -- (1,3) -- cycle;
                    \draw (0,4) -- (1,4) -- (1,1) -- (0,1) -- cycle;
                \end{tikzpicture}
            \end{cutout}
            A nagy négyzet területe $A=(a+b)^2$, a belső kis négyzet oldalhossza $a-b$, így a területe $A'=(a-b)^2$. A kettő különbsége lesz a négy téglalap területének összege:
            \begin{align*}
                (a+b)^2-(a-b)^2&=a^2+b^2+2ab-(a^2+b^2-2ab)=\\
                &=4ab=4A.
            \end{align*}

            Innen egy téglalap területe az egybevágóság miatt már megkapható, és ez pont a tétel állítása.
        \end{proof}
\end{document}

问题是图片滑过上面的文字,上面的空格是空的,开始下面的文字。当我改变空间时,图片会逐渐消失,并且降低这些数字会越来越接近计划的位置,等待数字为0.但是当我写零时,翻译因为它的出现而抛出错误。确切的消息显示“缺少数字,处理az为零”。

2 个答案:

答案 0 :(得分:2)

你可能最好让你的tikz图片成为图形的一部分,你可以从你的定理中引用它。实现此目的的一种方法是将tikz图片嵌入到保存箱中,例如:

\documentclass{article}
\usepackage{tikz}
\usepackage{amsmath}
\newtheorem{theorem}{Theorem}

%% Define savebox and tikz picture
\newsavebox{\mytikzpic}
\begin{lrbox}{\mytikzpic} 
    \begin{tikzpicture}
        \draw (0,0) -- (0,1) -- (3,1) -- (3,0) -- cycle;
        \draw (3,0) -- (4,0) -- (4,3) -- (3,3) -- cycle;
        \draw (4,3) -- (4,4) -- (1,4) -- (1,3) -- cycle;
        \draw (0,4) -- (1,4) -- (1,1) -- (0,1) -- cycle;
    \end{tikzpicture}
\end{lrbox} 

\begin{document}
\subsection*{My TiKZ picture within a savebox}
\noindent See my TiKZ picture in Figure~\ref{fig1}.
\begin{theorem}
    I have some theorem using this TiKZ picture in Figure~\ref{fig1}, which yields
    \begin{align*}
        x = c^2 + \sum_{i=1}^4 ab,
     \end{align*}
     \noindent where $a$ and $b$ are side lengths of the rectangles in Figure~\ref{fig1}, and $c$ the side length of the middle square.
     %% Include savebox in a figure
\begin{figure}[h]
    \centering 
    \usebox{\mytikzpic} 
    \caption{My TiKZ picture.} 
    \label{fig1}
\end{figure}  
     % 

     \noindent And with this, the area has been blahablasized.
\end{theorem}
\end{document}

产生以下输出:

enter image description here

当然,如果您愿意,您可以将图形移到定理环境之外。

另请注意,如果您想删除整个数字标题,只需输入数字

即可
\begin{figure}[h]
    \centering 
    \usebox{\mytikzpic}
\end{figure}  

在.tex文件中,改为生成以下内容:

enter image description here

答案 1 :(得分:0)

wrapfig包不会帮助proof内部环境,所以我会发布一个非常简单的 no-float 替代@dfri的好答案。

\documentclass{article}
\usepackage[T1]{fontenc}
\usepackage[utf8]{inputenc}
\usepackage[magyar]{babel}

\usepackage{amsthm}
\usepackage{amsmath}
\usepackage{amssymb}
\usepackage{amstext}

\usepackage{tikz}
%\usepackage{cutwin}

\newtheorem{thm}{tétel}

\begin{document}
    \section{Téglalap}
    \begin{thm}
        A téglalap a területét az oldalhosszakból az
        $$A=ab$$
        képlettel számolhatjuk ki.
    \end{thm}
    \begin{proof}
        A bizonyítás grafikusan igen jól szemléltethető. Vegyünk fel ugyanis egy $a+b$ oldalhosszúságú négyzetet, és ebben helyezzük el a négy egybevágó téglalapot.
        \begin{center}
            \begin{tikzpicture}
            \draw (0,0) -- (0,1) -- (3,1) -- (3,0) -- cycle;
            \draw (3,0) -- (4,0) -- (4,3) -- (3,3) -- cycle;
            \draw (4,3) -- (4,4) -- (1,4) -- (1,3) -- cycle;
            \draw (0,4) -- (1,4) -- (1,1) -- (0,1) -- cycle;
            \end{tikzpicture}
        \end{center}
        A nagy négyzet területe $A=(a+b)^2$, a belső kis négyzet oldalhossza $a-b$, így a területe $A'=(a-b)^2$. A kettő különbsége lesz a négy téglalap területének összege:
        \begin{align*}
            (a+b)^2-(a-b)^2&=a^2+b^2+2ab-(a^2+b^2-2ab)=\\
            &=4ab=4A.
        \end{align*}

        Innen egy téglalap területe az egybevágóság miatt már megkapható, és ez pont a tétel állítása.
    \end{proof}
\end{document}

输出:

screenshot

请注意,我只编辑了第25行和第32行(并在第12行注释了\usepackage{cutwin}):center环境在\section{}之前的任意长度文本也能正常运行。

如果我为cutout环境制定了一些好的设置,我会发布更新,这个设置应该用in theorem-like environments