wrapfigureがうまくいかない

wrapfigureがうまくいかない

- 向井 公志 の投稿
返信数: 15
tabular環境を使った表を文章中に挿入したいのですが,もともと2段組にしているせいか普通にすると表が右側に行ってしまいます. また挿入したい範囲ごとminipage環境で挟んだ場合,挿入はできますがitemize環境のせいか表近くの文章が極端に狭くなります. どうすればよいか教えてください. windows10で使用しています. \documentclass[b4paper,landscape,twocolumn,fleqn,dvipdfmx]{jsarticle} \pagestyle{empty} \usepackage{emath,epic,eepic,setspace,scalefnt,nccmath,amsmath,amsthm,amssymb,ascmac,enumitem,graphicx,multicol,tikz,ulem,ajmacros,tasks,wrapfig} \usepackage[margin=15mm]{geometry} \usetikzlibrary{patterns} \settasks{counter-format=(tsk[1])} \setlength{\columnsep}{12zw} \newcommand{\dis}{\displaystyle} \newcommand{\ctext}[1]{\raise0.16ex\hbox{\textcircled{\footnotesize{#1}}}} \newcommand{\sh}{\slash \hspace{-0.8mm} \slash} \newcommand{\ve}[1]{\ \vec{#1}\ } \renewcommand{\baselinestretch}{1.5} \begin{document} {\Large 確率(4) 期待値,分散,標準偏差} \begin{itemize} \item 確率変数\\ $\dis 試行の結果によって値Xが決まり,各値に対して確率Pが定まっている場合,その値Xを確率変数という.$\\ \begin{minipage}[t]{15cm} \begin{wrapfigure}{r}[0pt]{10cm} \begin{tabular}{c||ccccc|c} \hline X&0&1&2&3&4&計\\ \hline P(X)&$\bunsuu{1}{16}$&$\bunsuu14$&$\bunsuu38$&$\bunsuu14$&$\bunsuu{1}{16}$&1\\ \hline \end{tabular} \end{wrapfigure} $\dis 例)コイン4枚を同時に投げたとき,表が出る枚数をX,そのときの確率をP(X)とする.$\\ このとき確率は次のように変化する. \end{minipage} \end{itemize} \end{document}
向井 公志 への返信

Re: wrapfigureがうまくいかない

- 岩熊 哲夫 の投稿
二段組だからA4 なら段幅は10cmも無いのに,
なぜそこに 15cm の minipage が必要なのかも
理解できないし,そこに 10cm の表を入れたら
文章は 5cm のところにしか出ないのは当たり前
です。しかも \item の中・・・もっと幅は狭い。
さらに $\dis 日本語文章が長く続いて $ というのも
ちょっと理解できません。$\dis$ 例) コイン・・・・
のようにするならわかるんですけど。

どういう論理構造の文章にしたいのでしょう。
箇条書きの部分は二段組で,その表のところは
1段組に戻したいのでしょうか?
岩熊 哲夫 への返信

Re: wrapfigureがうまくいかない

- 和田 勇 の投稿
岩隈さんの指摘の他、なぜか表が右に逃げるので、
調べると \columnsep が 12zw にもなっていますね。
これもうまくいかないと感じる原因の一つだと思います。


@@ -4,7 +4,7 @@
  \usepackage[margin=15mm]{geometry}
  \usetikzlibrary{patterns}
  \settasks{counter-format=(tsk[1])}
- \setlength{\columnsep}{12zw}
+ %%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%\setlength{\columnsep}{12zw}
  \newcommand{\dis}{\displaystyle}
  \newcommand{\ctext}[1]{\raise0.16ex\hbox{\textcircled{\footnotesize{#1}}}}
  \newcommand{\sh}{\slash
@@ -17,7 +17,7 @@
  \begin{itemize}
  \item 確率変数\\ $\dis 試行の結果によって値Xが決まり,各値に対して確率Pが定まっている場合,その値Xを確率変数という.$\\
  \begin{minipage}[t]{15cm}
- \begin{wrapfigure}{r}[0pt]{10cm}
+ \begin{wrapfigure}{r}[0pt]{7cm}
  \begin{tabular}{c||ccccc|c}
  \hline X&0&1&2&3&4&計\\
  \hline P(X)&$\bunsuu{1}{16}$&$\bunsuu14$&$\bunsuu38$&$\bunsuu14$&$\bunsuu{1}{16}$&1\\
@@ -25,6 +25,8 @@
  \end{tabular}
  \end{wrapfigure}
  $\dis 例)コイン4枚を同時に投げたとき,表が出る枚数をX,そのときの確率をP(X)とする.$\\ このとき確率は次のように変化する.
+ $\dis 例)コイン4枚を同時に投げたとき,表が出る枚数をX,そのときの確率をP(X)とする.$\\ このとき確率は次のように変化する.
+ $\dis 例)コイン4枚を同時に投げたとき,表が出る枚数をX,そのときの確率をP(X)とする.$\\ このとき確率は次のように変化する.
  \end{minipage}
  \end{itemize}
  \end{document}
和田 勇 への返信

Re: wrapfigureがうまくいかない

- 向井 公志 の投稿
minipageの部分は,うまくいくかいろいろ試行錯誤しているところなので,いくらでも変更可能です.なんならminipage環境にしなくて済むならしなくても結構です.
$\dis $の部分は,いちいち$$で挟むのをめんどくさくなった結果です.(やはりこの方法はやめた方がいいのでしょうか……)
完成イメージとしては,文章全体はB4サイズの紙を2段組みで(短辺をつなげて短辺を折ったときの線を「中央線」とします),その左側の文章の右側にあの表を置きたいです.(中央線を超えないように)
あと質問の方でなぜか全然改行されていなかったので改めて載せなおしておきます.

\documentclass[b4paper,landscape,twocolumn,fleqn,dvipdfmx]{jsarticle}
\pagestyle{empty} \usepackage{emath,epic,eepic,setspace,scalefnt,nccmath,amsmath,amsthm,amssymb,ascmac,enumitem,graphicx,multicol,tikz,ulem,ajmacros,tasks,wrapfig}
\usepackage[margin=15mm]{geometry}
\usetikzlibrary{patterns}
\settasks{counter-format=(tsk[1])}
\setlength{\columnsep}{12zw}
\newcommand{\dis}{\displaystyle}
\newcommand{\ctext}[1]{\raise0.16ex\hbox{\textcircled{\footnotesize{#1}}}}
\newcommand{\sh}{\slash \hspace{-0.8mm} \slash}
\newcommand{\ve}[1]{\ \vec{#1}\ }
\renewcommand{\baselinestretch}{1.5}

\begin{document}
{<br /> \Large 確率(4) 期待値,分散,標準偏差<br /> }
\begin{itemize}
\item 確率変数\\
$\dis 試行の結果によって値Xが決まり,各値に対して確率Pが定まっている場合,その値Xを確率変数という.$\\
\begin{minipage}[t]{15cm}
\begin{wrapfigure}{r}[0pt]{10cm}
\begin{tabular}{c||ccccc|c}
\hline
X&0&1&2&3&4&計\\
\hline
P(X)&$\bunsuu{1}{16}$&$\bunsuu14$&$\bunsuu38$&$\bunsuu14$&$\bunsuu{1}{16}$&1\\
\hline
\end{tabular}
\end{wrapfigure}
$\dis 例)コイン4枚を同時に投げたとき,表が出る枚数をX,そのときの確率をP(X)とする.$\\
このとき確率は次のように変化する.
\end{minipage}
\end{itemize}
\end{document}
向井 公志 への返信

Re: wrapfigureがうまくいかない

- 和田 勇 の投稿
初回の投稿ソースでも解釈はできるのですが もう一度読んだら、
添削してあげた方が良いと思い分析しなおしてみました。
長いので html にしたもの、および分析に使用した
ソースを添付します。html の目次を示してきます

  1. 私見で記述内容を添削してみました
   1.1. シェバング(描かなくても良いけど llmk などが必要な手順を推定実行してくれるので)
   1.2. \columnsep が今回の問題を大きくしていると考えている
   1.3. baselinestretch も個人的には広すぎるように思う
   1.4. \dis マクロについての可否についての私の考え
   1.4.1. 今回の検証で作成したマクロ等
   1.5. タイトル行に(4) が入っているのが気になります
   1.6. minipage / wrapfig のオプション値について
   2. わかっている問題点

私見いっぱいなのでツッコミはたくさんあると思います。
和田 勇 への返信

Re: wrapfigureがうまくいかない

- 向井 公志 の投稿
返信ありがとうございます.
試しに2段組みを外し,検証に不要なパックを読み込まないようにしても,表の挿入はうまくいきませんでした.
指摘された箇所についてもいったんシェバリングと\dis以外すべてなかったことにしています.
素人ながら軽い検証をしてみたところ,分かったことが2点あります.
①どうやらitemize内で挿入しようとすると今回の場合itemize環境終了後のスペースに飛ばされるらしい
②そもそも挿入場所の指定がうまくいっていない
この2点を解消できればうまくいくのではないかと考えていますが,いかかでしょうか.

今回検証したコードは下になります.
貼り付けがなぜかうまくいかないときもあるので,念のためデータを送っておきます.
よろしくお願いします.

\documentclass[dvipdfmx]{jsarticle}
\usepackage{emath,ascmac,multicol,ajmacros,wrapfig}
\usepackage[margin=20mm]{geometry}
\newcommand{\dis}{\displaystyle}
\newcommand{\sumn}{\sum_{k=1}^{n}}

\begin{document}
\begin{itemize}
\item 確率変数$X^2$について\\%ここに本来は図を挿入する
\begin{wrapfigure}{l}[0pt]{0.4\textwidth}
\begin{tabular}{c||cccc|c}
\hline
$X$&$x_1$&$x_2$&$\cdots \cdots $&$x_n$&計\\ \hline
$X^2$&${x_1}^2$&${x_2}^2$&$\cdots \cdots $&${x_n}^2$& \\ \hline
$P$&$p_1$&$p_2$&$\cdots \cdots $&$p_n$&1\\ \hline
\end{tabular}
\caption{itemize内}
\end{wrapfigure}
$X$を確率変数とすると,$X$の各値$x_i\ (i=1,\ 2,\ \cdots \cdots ,\ n)$を2乗することによって定められる$X^2$も確率変数になる.この場合,$X^2$の期待値は $\dis E(X^2)=\sumn {x_k}^2p_k$ となる.\\
\item 期待値と分散の間に成り立つ公式\\
$\dis m=E(X),\sum_{k=1}^{n}p_k=1であることに注意すると,次の式が得られる.$
\vspace{-3mm}
\begin{align*}
V(X)&=\sum_{k=1}^{n}(x_k-m)^2p_k\\
&=\sum_{k=1}^{n}({x_k}^2-2mx_k+m^2)p_k\\
&=\sum_{k=1}^{n}{x_k}^2p_k-2m\sum_{k=1}^{n}x_kp_k+m^2\sum_{k=1}^{n}p_k\\
&=E(X^2)-2E(X)\cdot E(X)+\{ E(X)\} ^2=E(X^2)-\{ E(X)\} ^2
\end{align*}
\begin{shadebox}
point~期待値と分散の公式~\\
$\dis V(X)=E(X^2)-\{ E(X)\} ^2$
\end{shadebox}
\end{itemize}
\vspace{20mm}%分かりやすいように開けた
確率変数$X^2$について\\%検証用にitemize外に上と同じコードを書いた
\begin{wrapfigure}{r}[0pt]{0.4\textwidth}
\begin{tabular}{c||cccc|c}
\hline
$X$&$x_1$&$x_2$&$\cdots \cdots $&$x_n$&計\\ \hline
$X^2$&${x_1}^2$&${x_2}^2$&$\cdots \cdots $&${x_n}^2$& \\ \hline
$P$&$p_1$&$p_2$&$\cdots \cdots $&$p_n$&1\\ \hline
\end{tabular}
\caption{itemize外}
\end{wrapfigure}
$X$を確率変数とすると,$X$の各値$x_i\ (i=1,\ 2,\ \cdots \cdots ,\ n)$を2乗することによって定められる$X^2$も確率変数になる.この場合,$X^2$の期待値は $\dis E(X^2)=\sumn {x_k}^2p_k$ となる.\\

\end{document}
向井 公志 への返信

Re: wrapfigureがうまくいかない

- 大熊 一弘 の投稿
> \usepackage{emath
とあるので,誘い出されました。

> itemize内で挿入しようとすると今回の場合itemize環境終了後のスペースに飛ばされるらしい

これは,wrapfigure の仕様でしょう。
ログファイルに

> Package wrapfig Warning: wrapfigure used inside a conflicting environment ...

この conflicting environment に,itemize など,list系環境は
すべて含まれるようです。
すなわち,itemize環境とwrapfigure環境は併用できない,ということです。
回避策はいろいろあるようですが,
私からは,emath パッケージの mawarikomi環境を提示させていただきましょう:

ソースリスト: QA0126.tex
タイプセットしたPDF : QA0126.pdf

をまとめた zip を

http://emath.s40.xrea.com/temp/QA0126.zip

に置きました。
大熊 一弘 への返信

Re: wrapfigureがうまくいかない

- 向井 公志 の投稿
wrapfigureは仕様でlist環境と併用できないんですね,初めて知りました.
おかげでうまくいきました.ありがとうございました!

ちなみに調べてもなかなか出てこなかったので聞きたいんですが,
\usepackage[notMy]{emath}
の”notMy”って何者ですか?なくてもコンパイルできてしまうのですが……
向井 公志 への返信

Re: wrapfigureがうまくいかない

- 和田 勇 の投稿
補足しておきます。 2回目の質問には2つの wrapfigure についての質問があったと理解しています

  1. itemize 環境で
  2. 環境なし

1) itemize 環境で

  itemize enumerate など list 環境では当初質問時に利用された minipage を
  併用することで可能です。ただし、複数ページにまたがるケースではNG です。

  \item
   \begin{minipage}{\linewidth}
    \begin{wrapfigure} ....
     ...
    \end{wrapfigure}

    ..回り込みテキスト
   \end{minipage}

2) 環境なし

  https://okumuralab.org/tex/mod/forum/discuss.php?d=329
  を参考にしてください。

  2回目の質問のソースは段落が一つしかありません。

  適度な改行=段落分けは wrapfigure だけでなく、
  ドキュメント作成時の思考作業にも非常に有効になると思います。
和田 勇 への返信

Re: wrapfigureがうまくいかない

- 向井 公志 の投稿
itemize環境内の図も外の図も,ご指導いただけたおかげできちんと挿入できました.
ただ思った通りの挿入のされ方ではなく,文章と図の間隔が異様に空いている気がします.
個人的にはもう少し挿入した時の文章と図の間隔を狭くしたいです.(この間隔を変えられる方法があるなら教えていただきたいです.)
念のため書いているコードとその結果をファイルで添付しておきます.
向井 公志 への返信

Re: wrapfigureがうまくいかない

- 和田 勇 の投稿
> 文章と図の間隔が異様に空いている

これは以前回答した通り決め内ではなく
\sbox で仮組版した幅をもとにした値を wrapfig に与えれば良いでしょう。

詳しくは見ていませんが emath の mawarikomi(?) はこの辺をというか
特に幅指定無しの場合は幅を求めて設定しているのでと思います。

# 以下は「ソースを見て感じたこと」なのですが
 「じじーのぼやき」だと思って無視していただいても結構です。
- 適切にインデントしましょう
  - ソースを見て編集するのは「あなた」なのですから ...
- テーブル表記の部分ベタ書きですが $...$ と& がたくさんありすぎで検証が難しいです。
 - 貴方が身辛く思う箇所は変更した方が良いと思います。
 - 幸い LaTeX は複数の半角スペースを基本一個の空白に扱ってくれますので。
 - そのような対応をして表的に表せば「項目が不足してる」ことにきがつくと思います。
 (実際の結果には影響は及ぼしませんが)
- vspace で逆方向の補正は可能な限り行うべきではありません。結果は見つらくするだけです。
- 前回提案したつもりですが「表」以外のところで「\\」をするなら空行を開けましょう、
- 以上を踏まえ、なんとか行空間を調整しようしていることが裏目に出ていると思います。
- ですので、話題が変わるところでは「段落」を積極的に!!
- とはいえ、やっぱ空間広すぎという時はその度合いに応じて \smallskip \medskip \bigskip で調整した方が良いです(経験上)
- 以上、細々なことは無視しても適切にインデントできるエディタを使うことをお勧めします
和田 勇 への返信

Re: wrapfigureがうまくいかない

- 和田 勇 の投稿
気になったので、じっくりソースを見直しました。
質問が「2段組横」→「(1段組)縦」→「2段組横」になっていたのですね。
しかも2段組には 「今回の質問のキーワード columnsep 12zw 」がついて回っていましたね。

これを回避すれば大方解決するのですが ....
  - 今回のケースでは回り込むテキストが少ないことが影響して次のテキストブロックに重なる
  -  今回はたまたまですが最後(2個目)も回り込むテキストが少ないので
   段落終了をご判断しているようで図・表がフロートになってしまう現象
などにも手を入れる必要がありました。

再掲になりますが改善案です。

- columsep を特定のブロック範囲内限定にしたい場合はブロックを宣言してください
  - minipage 環境は一つのブロックなのでそこでの設定は、その外側には影響しません
  - 通常のところでは「{」と「}」で盈虚する範囲を囲ってください
- 回り込むテキストが少ない時
  - デフォルトの図・表の高さは四行分を除いた領域を埋め尽くすテキストがない場合は、段落を明示的に入れてください
  - それでも文字が重なるようであれば \bigskip \medskip \smallskip で調整してください

検証用に提供していただいたソースを使って改修したものを添付します。
改修内容は以下の通り。
 
- \columsep をブロック内限定で変更
- 上記だけで多分改善されると思いますが \sbox を使って図・表の幅を計算しています
- その他、こんな風にも書き表せるという例になるようあちこちに空白を補い、
 私だけかもしれませんが見やすくしてみました。
 - 表は表らしく、縦にカラムを並べ、
 - 数式は、演算子の前後は空白に、類似した式は縦に並べ、
 -「$ ... $」は改行し後ろにスペースをいれ、どこからどこまでがが明確に判読できるようにしてみました
和田 勇 への返信

Re: wrapfigureがうまくいかない

- 向井 公志 の投稿
いろいろありがとうございました.
\columnsepが文章と図の間隔にも適用されるとは思ってなかったです……
先ほどの検証済.texと同様に\columnsepを設定するとうまくいきました!
これからは段落等を意識してコードを書いてみようと思います.
向井 公志 への返信

Re: wrapfigureがうまくいかない

- 大熊 一弘 の投稿
emath 固有の話で恐縮です。

emath パッケージは,カスタマイズ用に
  emathMy.sty
という名のファイルがあれば,それを読み込むようになっています。
しかし,これは「人さまざま」ですから,
情報交換をするときは,外しておきたいですね。
そのためのオプションが
\usepackage[notMy]{emath}
です。これがあると,emathMy.sty は読み込まれません。
大熊 一弘 への返信

Re: wrapfigureがうまくいかない

- 向井 公志 の投稿
要はemathMyという自分用にカスタマイズしたものがある場合はそれを読まないようにしているのですね,理解しました.
ありがとうございました!
岩熊 哲夫 への返信

Re: wrapfigureがうまくいかない

- 北見 けん の投稿
「二段組だからA4 なら段幅は10cmも無い」
について。
設定は B4横置き(landscape)のようですね。

(追記)ただ、\columnsep が 12zw と広いので
15cmのminipageは広すぎですが、
中身の表自体の幅は15cmもないので、
minipageの幅15cmは紙面上では見えないのでしょう。