2014 dxdy logo

Научный форум dxdy

Математика, Физика, Computer Science, Machine Learning, LaTeX, Механика и Техника, Химия,
Биология и Медицина, Экономика и Финансовая Математика, Гуманитарные науки




 
 Как обтечь картинку текстом с формулами? (wrapfigure?)
Сообщение15.05.2015, 12:23 
Аватара пользователя
Доброго дня!
Неспеша ваяю в Латехе нетленку.
Текст с формулами, формул много.
Периодически надо вставлять картинки. Хочу чтобы картинка по ширине занимала полстраницы и красиво обтекалась моим текстом с формулами.
Пытаюсь использовать wrapfigure.
Вставляю такой код:

\begin{wrapfigure}{r}{0.5\linewidth}
\centering
\pgfplotsset{width=1.0\linewidth}
\begin{tikzpicture}
...здесь картинка
\end{tikzpicture}
\end{wrapfigure}

Результат неоднозначный.
Если картинка в тексте - то все работает отлично. Если в тексте есть формулы - то может получиться как угодно. В том числе и вариант когда формула будет прям на картинке.
Можно использовать такой параметр \begin{wrapfigure}[10]{r}{0.5\linewidth} - он должен явно выделять количество строк, то тоже работает не поймеж как если есть формулы.
Вопрос - как быть? Может есть какие-нибудь другие пакеты, или народные методы? По идее сложного обтекания мне не нужно - достаточно обтекать прямоугольник. (Использую MikTex(win)+TexMaker).
С уважением, Гарри

-- 15.05.2015, 13:43 --

Сам задал вопрос и сам же отвечаю.
После \end{wrapfigure}
помогает добавление
\leavevmode
Правда съезжают метки осей в TikZграфике (то что задано через shift) - приходится корректировать ручками, что конечно не айс, но все же гораздо лучше чем было.

 
 
 
 Re: Как обтечь картинку текстом с формулами? (wrapfigure?)
Сообщение15.05.2015, 17:52 
Сможете сваять минимальный рабочий пример с вашим вопросом и решением? Чтобы и команды tikz были с shift, и формулы, которые ломают, и текст, и преамбула минимально для этого необходимая. Так, чтобы можно было бы скопипастить текст из ЛаТеХ тегов и поискать решение. Хорошо бы ещё краткое и четкое определение того "чего хочу" для выложенного примера и по пунктам перечисление ошибок из этого же демонстрируемого примера. Как чеклист, чтобы можно было отмечать, что решил желающий помочь, а что ещё осталось (или что успел сломать ещё хуже, чем было).

 
 
 
 Re: Как обтечь картинку текстом с формулами? (wrapfigure?)
Сообщение15.05.2015, 19:47 
Аватара пользователя
Н-да... в процесс подготовки минимального примера убрал все лишние пакеты - коих было до фига, и... все стало хорошо.
Выкладываю пример - в котором все работает и вроде даже \leavevmode необязателен. ))) Вдруг кому пригодится. Что с чем конфликтовало - предмет отдельного разбирательства.
Код:
\documentclass[a4paper]{article}
\usepackage[left=2cm,right=2cm,top=2cm,bottom=2cm,bindingoffset=0cm]{geometry}
\usepackage[utf8]{inputenc}
\usepackage[russian]{babel}
\usepackage{fontenc}
\usepackage{tikz}
\usepackage{pgfplots}
\usepackage{wrapfig}
\usepackage{lipsum}
\usepackage{nccmath}

\newcommand{\diffptwo}[2]{\frac{\partial^2 #1}{\partial #2^2}}
\newcommand{\diffp}[2]{\frac{\partial #1}{\partial #2}}
\newcommand{\diffpr}[1]{\frac{\partial #1}{\partial r}}
\newcommand{\diffprb}[1]{\frac{\partial #1}{\partial R}}
\newcommand{\diffptheta}[1]{\frac{\partial #1}{\partial\theta}}
\newcommand{\diffpphi}[1]{\frac{\partial #1}{\partial\varphi}}
\newcommand{\diffpt}[1]{\frac{\partial #1}{\partial t}}

\newcommand{\diff}[2]{\frac{d #1}{d #2}}
\newcommand{\rot}[1]{\nabla\times\vec #1}
\newcommand{\rots}[1]{\nabla\times #1}
\newcommand{\grad}[1]{\nabla #1}
\newcommand{\dvr}[1]{\nabla \vec #1}
\newcommand{\difftwosplit}[4]{\frac{\partial}{\partial #1}\left(#2 \frac{\partial #3}{\partial #4}\right)}
\newcommand{\dgr}{^\circ}
\newcommand{\textdgr}{${^\circ}$}
\newcommand{\q}{~---~}

\newcommand{\be}{\begin{equation*}}
\newcommand{\ee}{\end{equation*}}

\begin{document}

\begin{wrapfigure}[10]{r}{0.5\linewidth}
\centering
\pgfplotsset{width=1.0\linewidth}
\begin{tikzpicture}
\begin{axis}
[y label style={rotate = -90,at={(ticklabel cs:0.93)}},
x label style={at={(ticklabel cs:0.93)}},
ylabel shift=-80pt,
xlabel shift=-45pt,
xlabel=$m${, м},
ylabel={$U_z$,м/с},
xtick pos=left,
ytick pos=left,
yticklabel style={anchor=east}]
\addplot coordinates {
( 338.1, 266.45 )
( 169.1, 143.43 )
( 84.5, 64.80 )
( 42.3, 34.19 )
( 21.1, 9.47 )};
\end{axis}
\end{tikzpicture}
\end{wrapfigure}
\leavevmode

Уравнение Максвелла: $\rot{B}=\mu_0\vec J$ в цилиндрических координатах:

\begin{align*}
&(\rot{B})_r=\frac{1}{r}\diffp{B_z}{\varphi}-\diffp{B_{\varphi}}{z}=J_r,\\
&(\rot{B})_{\varphi}=\diffp{B_r}{z}-\diffp{B_z}{r}=0,\\
&(\rot{B})_{z}=\frac{1}{r}\left(\diffp{(rB_{\varphi})}{r}-\diffp{B_r}{\varphi}\right)=J_z.
\end{align*}

Учитывая, что $\diffp{\cdots}{\varphi}=0$ у нас остается:

\begin{align*}
&-\diffp{B_{\varphi}}{z}=J_r,\\
&\frac{1}{r}\diffp{(rB_{\varphi})}{r}=J_z.
\end{align*}


\lipsum[1-4]
\begin{wrapfigure}{r}{0.5\linewidth}
\centering
\pgfplotsset{width=1.0\linewidth}
\begin{tikzpicture}
\begin{axis}
[y label style={rotate = -90,at={(ticklabel cs:0.93)}},
x label style={at={(ticklabel cs:0.93)}},
ylabel shift=-80,
xlabel shift=-45,
xlabel=$m${, м},
ylabel={$U_z$,м/с},
xtick pos=left,
ytick pos=left,
yticklabel style={anchor=east}]

\addplot coordinates {
( 338.1, 266.45 )
( 169.1, 143.43 )
( 84.5, 64.80 )
( 42.3, 34.19 )
( 21.1, 9.47 )};

\end{axis}
\end{tikzpicture}
\end{wrapfigure}
\leavevmode
\lipsum[1-6]

\end{document}

Большое спасибо за морально-логическую поддержку!

 
 
 [ Сообщений: 3 ] 


Powered by phpBB © 2000, 2002, 2005, 2007 phpBB Group