如何在 LaTeX 定理环境中围绕 tikz 图片浮动文本?
How to float text around a tikz picture in a LaTeX theorem environment?
我不喜欢用像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}
问题是图片滑过上面的文字,上面的space是空的,开始下面的文字。当我更改 spaces 时,图片随处可见,并且降低这些数字它越来越接近计划的位置,并在数字 0 处等待它。但是当我写零时,翻译器会因此而抛出错误.确切的消息是 "Missing number, treated az zero".
你可能最好让你的 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}
生成以下输出:
当然,如果您愿意,您可以将图形移到定理环境之外。
另请注意,如果您希望删除整个图形标题,只需将图形输入为
\begin{figure}[h]
\centering
\usebox{\mytikzpic}
\end{figure}
在您的 .tex 文件中,生成以下内容:
wrapfig
包不支持里面的 proof
环境,所以我会 post 一个非常简单的 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}
输出:
请注意,我只编辑了第 25 行和第 32 行(并在第 12 行评论了 \usepackage{cutwin}
):center
环境在 \section{}
之前的任意长度文本也表现得很好。
如果我为 cutout
环境制定了一些好的设置,我会 post 更新,这意味着要使用 in theorem-like environments。
我不喜欢用像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}
问题是图片滑过上面的文字,上面的space是空的,开始下面的文字。当我更改 spaces 时,图片随处可见,并且降低这些数字它越来越接近计划的位置,并在数字 0 处等待它。但是当我写零时,翻译器会因此而抛出错误.确切的消息是 "Missing number, treated az zero".
你可能最好让你的 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}
生成以下输出:
当然,如果您愿意,您可以将图形移到定理环境之外。
另请注意,如果您希望删除整个图形标题,只需将图形输入为
\begin{figure}[h]
\centering
\usebox{\mytikzpic}
\end{figure}
在您的 .tex 文件中,生成以下内容:
wrapfig
包不支持里面的 proof
环境,所以我会 post 一个非常简单的 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}
输出:
请注意,我只编辑了第 25 行和第 32 行(并在第 12 行评论了 \usepackage{cutwin}
):center
环境在 \section{}
之前的任意长度文本也表现得很好。
如果我为 cutout
环境制定了一些好的设置,我会 post 更新,这意味着要使用 in theorem-like environments。