3

I only just discovered the cutwin package, and I'm already having trouble with it. Here is the code:

\documentclass[a4paper]{report}
\usepackage{amsmath,amssymb,amsfonts,cutwin,thmtools}

\newtheorem{es}{Esempio}

\newcommand{\s}{\mathcal}
\newcommand{\Wg}{\Omega}
\newcommand{\R}{\mathbb{R}}
\newcommand{\8}{\infty}
\newcommand{\fg}{\varphi}
\newcommand{\sqb}{\relax}
\newcommand{\lbar}{\overline}

\linespread{1.3}

\begin{document}
\renewcommand\windowpagestuff{\begin{center}\rule{3cm}{3cm} \linebreak Il dominio dell'esempio\end{center}}
\opencutright
\begin{es}[name=Liscia sulla chiusura ma senza derivate,label=thm:es:LisciaChiusNoDer]
\begin{cutout}{2}{9cm}{0pt}{9}
L'esempio è un esempio semplice. Prendete un dominio in $\R^2$. Questo dominio ha una parte saliente vicino all'origine, vicino all'origine assomiglia, il bordo, è uguale al grafico del modulo di $x$. Quindi immaginate il grafico del modulo di $x$ vicino a 0, e poi chiudete il dominio nella maniera più semplice possibile, in maniera liscia però, cioè qui, dove finisce, diciamo, questo dente di sega, partite con una curva liscia, in modo che il bordo sia complessivamente, se facciamo l'eccezione e studiamo <>. Sapete che si possono raccordare una retta e una curva $\s{C}^\8$ senza problé, in modo che risulti una funzione di classe $\s{C}^\8$. D'accordo? Quindi avete questo dominio $\Wg$. Questo dominio $\Wg$, ovviamente, è un dominio Lipschitz, questo lo vedete tutti, perché nei punti diversi dall'origine il bordo è addirittura di classe $\s{C}^\8$, si può descrivere come grafico di una funzione $\s{C}^\8$, vicino all'origine meglio di Lipschitz non si può fare. Adesso prendete la funzione di due variabili $f(x,y)$ data semplicemente da $y$. Ovviamente $f\in\s{C}^k(\lbar\Wg)$ per ogni $k$, perché lei è una funzione di classe $\s{C}^\8$, quindi le sue derivate sono $\s{C}^\8$, e chiaramente le sue derivate ristrette a $\Wg$ ammettono un'estensione continua alla chiusura, addirittura ammettono estensione continua a tutto $\R^2$. Però, se adesso andate a descrivere la restrizione al bordo di $f$, questa non è più una funzione differenziabile. Cioè, restringetevi a un intorno <arbitrariamente> piccolo dell'origine, e in questo intorno il bordo è descritto proprio dalla mappa $\fg(x)=|x|$. \sqb{Bla.} Voi dovete pensare che $f$ è definita su tutto $\R^2$, in verità, a valori in $\R$, \sqb{Rat,} supponiamo di fare le derivate, no, allora, mettiamo, derivata rispetto a $x$ in 0, funzione identicamente nulla, è sicuramente una funzione $\s{C}^k(\Wg)$, ma è anche una funzione $\s{C}^k(\lbar\Wg)$, perché la funzione nulla \sqb… in $\Wg$ si può estendere alla funzione nulla in $\lbar\Wg$, ed è, la funzione nulla risulta continua. \sqb{Cell.} Se invece prendete qualunque altra derivata, per esempio rispetto a $y$, viene la funzione 1, la funzione 1 è sicuramente di classe $\s{C}^k$, per ogni $k$, in $\Wg$, ma anche in $\lbar\Wg$, perché si estende ovviamente alla funzione 1 su $\lbar\Wg$, che è di classe $\s{C}^k$. Giusto? Quindi potremmo dire che è di classe $\s{C}^\8$ in $\lbar\Wg$. Se però adesso esprimete $f$ in coordinate locali, usando la mappa $\fg(x)=|x|$, e', avrete che la funzione risultante è la funzione $x\mapsto f(x,|x|)$. Giusto? Cioè la mappa, la mappa $\fg$ che descrive la parte di bordo vicino all'origine è esattamente il modulo di $x$, quindi, diciamo, al posto di $y$ in $f(x,y)$ devo mettere il modulo di $x$, cioè sto scrivendo $f$ in queste coordinate. Sì? Va bene? Ma siccome l'espressione di $f$ è semplicemente $y$, $f(x,|x|)=|x|$, e questa non è differenziabile. Quindi $f$, secondo la nostra definizione, è di classe $\s{C}^k(\lbar\Wg)$ per ogni $k$, ma se vado a esprimere $f$ in coordinate locali, vicino a 0 nella fattispecie, ottengo una funzione che non è nemmeno differenziabile. Va bene? Quindi occhio.
\end{cutout}
\end{es}
\end{document}

and here is the output:

enter image description here

Why is this all being placed on page 2 instead of page 1? And above all, what is happening to the line spacing? That is, why is the cut-out part shifted down, so that the top of it is far from the last non-cut-out line and the bottom is clashing into the rest of the text? Is it something to do with the \linespread? How can I fix this?

Update

I found a fix for the page issue: reduce the length of the cut-out paragraph. That requires fiddling with the vertical position of the start of the example, since it clashes into anything before it (which is not nothing in my actual setting, though it is in this MWE). Still, the spacing issue remains. And, I add now, manually adding \vspace doesn't fix it. I tried \vspace{-\baselineskip} and it did strange things. If I remember correctly, it looked like there were two superimposed lines in the second non-cut-out line of the example and then the spacing was all the same. Let's see if I find a screenshot.

enter image description here

With the fix implemented, I verified that .1\baselineskip and .5\baselineskip get ignored. \baselineskip, instead, produces something stranger than before:

enter image description here

The first cut-out line is moved to superimpose with the last line before the start of the cut-out paragraph, and the spacing issue is still identical!

Note

Bernard's insbox solution (with some tinkering to avoid breaking the line after the example's title) is one possible practical answer to this question. However, I haven't accepted it yet because I wish to wait to see if someone can post the theoretical side of the matter, i.e. why the problem takes place. And possibly how to fix it with cutwin or without the manual adjusting for the linebreaking problem.

  • Are there any other packages (beside cutwin and shapepar) able to cutout or reflow text around shapes/images? – skan Feb 7 '17 at 15:24
2

I do not know how to solve the problem with cutwin but I can suggest to use an (almost) equivalent for rectangular shapes: the plain TeX macro package insbox, which defines \InsertBoxL, InsertBoxR and \InsertBoxC. These commands take two mandatory arguments: the number of lines first untouched, and the contents of the box, plus an optional correction argument (the number of supplementary lines to be shortened, in case the compiler does not calculate it correctly). To make it work, you'll have to begin the body of the example on a new line, then raise the text of 1 \baselineskip and insert a horizontal spacing of the length of the theorem label (to prevent overlay). This could be made automatic defining a new theorem style.

\documentclass[a4paper, italian]{report}

\usepackage[utf8]{inputenc}
\usepackage[T1]{fontenc}
\usepackage{geometry}
\usepackage{amsmath,amssymb,amsfonts, thmtools}
\usepackage{babel} \input{insbox}
\usepackage{eqparbox}

\newtheorem{es}{Esempio}

\newcommand{\s}{\mathcal}
\newcommand{\Wg}{\Omega}
\newcommand{\R}{\mathbb{R}}
\newcommand{\8}{\infty}
\newcommand{\fg}{\varphi}
\newcommand{\sqb}{\relax}
\newcommand{\lbar}{\overline}

\linespread{1.3}
\usepackage{setspace}

\begin{document}

\newcommand\boxstuff{\setstretch{1}\parbox{4cm}{\centering\rule{3cm}{3cm}\medskip \linebreak Il dominio dell'esempio}}

\begin{es}[name=Liscia sulla chiusura ma senza derivate,label=thm:es:LisciaChiusNoDer]
  \mbox{} \InsertBoxR{2}{\boxstuff}[3]\vspace*{-\baselineskip}
  \noindent\textbf{\hphantom{Esempio 1 (Liscia sulla chiusura ma senza derivate).\hspace*{\dimexpr0.333em-\parindent\relax}}.}
  L'esempio è un esempio semplice. Prendete un dominio in $\R^2$. Questo dominio ha una parte saliente vicino all'origine, vicino all'origine assomiglia, il bordo, è uguale al grafico del modulo di $x$. Quindi immaginate il grafico del modulo di $x$ vicino a 0, e poi chiudete il dominio nella maniera più semplice possibile, in maniera liscia però, cioè qui, dove finisce, diciamo, questo dente di sega, partite con una curva liscia, in modo che il bordo sia complessivamente, se facciamo l'eccezione e studiamo <>. Sapete che si possono raccordare una retta e una curva $\s{C}^\8$ senza problé, in modo che risulti una funzione di classe $\s{C}^\8$. D'accordo? Quindi avete questo dominio $\Wg$. Questo dominio $\Wg$, ovviamente, è un dominio Lipschitz, questo lo vedete tutti, perché nei punti diversi dall'origine il bordo è addirittura di classe $\s{C}^\8$, si può descrivere come grafico di una funzione $\s{C}^\8$, vicino all'origine meglio di Lipschitz non si può fare. Adesso prendete la funzione di due variabili $f(x,y)$ data semplicemente da $y$. Ovviamente $f ∈ \s{C}^k(\lbar\Wg)$ per ogni $k$, perché lei è una funzione di classe $\s{C}^\8$, quindi le sue derivate sono $\s{C}^\8$, e chiaramente le sue derivate ristrette a $\Wg$ ammettono un'estensione continua alla chiusura, addirittura ammettono estensione continua a tutto $\R^2$. Però, se adesso andate a descrivere la restrizione al bordo di $f$, questa non è più una funzione differenziabile. Cioè, restringetevi a un intorno <arbitrariamente> piccolo dell'origine, e in questo intorno il bordo è descritto proprio dalla mappa $\fg(x)=|x|$. \sqb{Bla.} Voi dovete pensare che $f$ è definita su tutto $\R^2$, in verità, a valori in $\R$, \sqb{Rat,} supponiamo di fare le derivate, no, allora, mettiamo, derivata rispetto a $x$ in 0, funzione identicamente nulla, è sicuramente una funzione $\s{C}^k(\Wg)$, ma è anche una funzione $\s{C}^k(\lbar\Wg)$, perché la funzione nulla \sqb… in $\Wg$ si può estendere alla funzione nulla in $\lbar\Wg$, ed è, la funzione nulla risulta continua. \sqb{Cell.} Se invece prendete qualunque altra derivata, per esempio rispetto a $y$, viene la funzione 1, la funzione 1 è sicuramente di classe $\s{C}^k$, per ogni $k$, in $\Wg$, ma anche in $\lbar\Wg$, perché si estende ovviamente alla funzione 1 su $\lbar\Wg$, che è di classe $\s{C}^k$. Giusto? Quindi potremmo dire che è di classe $\s{C}^\8$ in $\lbar\Wg$. Se però adesso esprimete $f$ in coordinate locali, usando la mappa $\fg(x)=|x|$, e', avrete che la funzione risultante è la funzione $x\mapsto f(x,|x|)$. Giusto? Cioè la mappa, la mappa $\fg$ che descrive la parte di bordo vicino all'origine è esattamente il modulo di $x$, quindi, diciamo, al posto di $y$ in $f(x,y)$ devo mettere il modulo di $x$, cioè sto scrivendo $f$ in queste coordinate. Sì? Va bene? Ma siccome l'espressione di $f$ è semplicemente $y$, $f(x,|x|)=|x|$, e questa non è differenziabile. Quindi $f$, secondo la nostra definizione, è di classe $\s{C}^k(\lbar\Wg)$ per ogni $k$, ma se vado a esprimere $f$ in coordinate locali, vicino a 0 nella fattispecie, ottengo una funzione che non è nemmeno differenziabile. Va bene? Quindi occhio.%}
\end{es}

\end{document} 

enter image description here

| improve this answer | |
  • Actually, I just need to find a suitable break point and put the \leavevmode etc there. Here's what I did in the end. But why do I need the \leavevmode? I've seen what happens without, but why? – MickG Mar 28 '16 at 8:56
  • I suppose that, without leavevmode (or \mbox{}) the macro begins its action between` the typing of the title and the body of the environment (I explain it with my own words, as I'm no TeX guru). Your code works, but I feel like there's some tinkering: you create more or less artificially a new paragraph exactly at the end of a line before inserting the image. Not sure you can determine the end of the line in every situation (e.g. the line might end at a hyphenation point). – Bernard Mar 28 '16 at 9:43
  • Yeah there is a bit of tinkering. I agree it's not optimal, but breaking the line after the title of the example when all the other "theorems" (in the wider sense of LaTeX \newtheorem) don't feels too inconsistent. So for the moment I keep this solution, waiting for someone perhaps to propose a better fix (maybe with cutwin). – MickG Mar 28 '16 at 9:45
  • Do you have any suggestions for better tagging of this question? – MickG Mar 28 '16 at 9:52
  • 1
    @MickG: I've found a more automatic way to have no line breaking: raising the text like you did, but at the beginning (just after leavevmode) and inserting a phantom copy of the theorem label to prevent any overlay. – Bernard Mar 28 '16 at 10:37

Your Answer

By clicking “Post Your Answer”, you agree to our terms of service, privacy policy and cookie policy

Not the answer you're looking for? Browse other questions tagged or ask your own question.