here.styと二段組み中に一段組の表を挿入する際のtable*が同時に使えません.
ソースファイルは以下の通りです.
------------------------------------
\documentclass[twocolumn]{jsarticle}
\usepackage{here}
\begin{document}
価格は以下の通りです.
\begin{table*}[H]
\centering
\begin{tabular}{c|c} \hline
メニュー & 価格 \\ \hline \hline
牛丼(並) & 380円 \\ \hline
牛丼(大) & 420円 \\ \hline
\end{tabular}
\end{table*}
\end{document}
-------------------------------------
としてコンパイルすると,表が表示されません.この際,table*->tableとするか,H->h等とすると問題なく表示されます.私の環境だけでなく,”TeXを使ってみよう”でも同様の問題が起きました.
どなたか解決策を教えていただければ幸いです.
投稿できなかったので書き直して ...
私が LaTeX を書くときいつも愛用している 1998 年に出版されたアスキー出版の「The LaTeX コンパニオン」の p175 (6章 フロートの達人、6.3.1 フロートを記述した箇所に出力したい場合)からの引用 ...
「意訳して引用開始」
float パッケージ(here は float を読み込んでいます)は、デフォルトで標準の figure 環境と table 環境を修整するわけではない。これらの環境で [H] 指示子を使いたければ \restylefloat{figure} \restyle{table} コマンドを先に指定しておかなければならない
「引用終わり」
ということで \begin{table*} の前に\restylefloat{table*} を置くと表示されるようになりました。 OSX 10.10 TeXLive 2014 で試しました。
restylefloat table latex で調べると http://stackoverflow.com/questions/1673942/latex-table-positioning のも検索できます。
> 1998 年に出版されたアスキー出版の「The LaTeX コンパニオン」
現在の float パッケージのバージョンは
\ProvidesPackage{float}
[2001/11/08 v1.3d Float enhancements (AL)]
ですね.ドキュメントを読むと,
This style option provides the [H] specifier for newly defined
classes of floats as well as the predefined figures and tables,
thereby superseding here.
とあります.実際に,次のようにして float を読み込むか読み込まないかを変えてみると,
表の配置場所が変わるので,float を読み込めば既存の table 環境でも [H] 指示子が使える
ようになることがわかります.
\documentclass{jsarticle}
% \usepackage{float}
\begin{document}
\begin{table}[H]
\centering
\begin{tabular}{c|c} \hline
メニュー & 価格 \\ \hline \hline
牛丼(並) & 380円 \\ \hline
牛丼(大) & 420円 \\ \hline
\end{tabular}
\end{table}
\end{document}
また,\restylefloat{table} は table と table* の両方を再定義するようです.
\restylefloat{table*} とやってしまうと,table* が「二段組み中に一段組の表」にならないうえに,
\caption を入れると
! LaTeX Error: No counter 'table*' defined.
と出てしまいます.
そもそも元の質問は,仮に両立できたとしてどう動くべきなのでしょうか.
デフォルトの LaTeX2e では table* などのアスタリスク付きのフロート環境は
[tp] が効くようになっていて,dblfloatfix パッケージを読み込むと [tbp] が
使えるようになるようです.この場合でも [h] は考慮されていないように見えます.
(私はフロートの実装を知らないのもあって,二段組み中の指定された箇所で一段組みの
表を入れる,という組み方を自動で実現可能なのかどうかよくわからないです.
できないことはないのではないか,という気はしますが…….調査不足?)
現在の float パッケージのバージョンは
\ProvidesPackage{float}
[2001/11/08 v1.3d Float enhancements (AL)]
ですね.ドキュメントを読むと,
This style option provides the [H] specifier for newly defined
classes of floats as well as the predefined figures and tables,
thereby superseding here.
とあります.実際に,次のようにして float を読み込むか読み込まないかを変えてみると,
表の配置場所が変わるので,float を読み込めば既存の table 環境でも [H] 指示子が使える
ようになることがわかります.
\documentclass{jsarticle}
% \usepackage{float}
\begin{document}
\begin{table}[H]
\centering
\begin{tabular}{c|c} \hline
メニュー & 価格 \\ \hline \hline
牛丼(並) & 380円 \\ \hline
牛丼(大) & 420円 \\ \hline
\end{tabular}
\end{table}
\end{document}
また,\restylefloat{table} は table と table* の両方を再定義するようです.
\restylefloat{table*} とやってしまうと,table* が「二段組み中に一段組の表」にならないうえに,
\caption を入れると
! LaTeX Error: No counter 'table*' defined.
と出てしまいます.
そもそも元の質問は,仮に両立できたとしてどう動くべきなのでしょうか.
デフォルトの LaTeX2e では table* などのアスタリスク付きのフロート環境は
[tp] が効くようになっていて,dblfloatfix パッケージを読み込むと [tbp] が
使えるようになるようです.この場合でも [h] は考慮されていないように見えます.
(私はフロートの実装を知らないのもあって,二段組み中の指定された箇所で一段組みの
表を入れる,という組み方を自動で実現可能なのかどうかよくわからないです.
できないことはないのではないか,という気はしますが…….調査不足?)
私も何年か前に,この multicol パッケージを使う方法で二段組み中の特定の位置に
一段組みを入れたことがあります.
これ以外にリーズナブルな方法があるのかどうかは,私は知りません.
いちいち multicols 環境を閉じたり開いたりするのが嫌ということならば,
新しい環境を定義して,そこに押し込めることはできそうに思います(何の解決にもなっていない気はしますが).
\documentclass{jsarticle}
\usepackage{multicol,float,etoolbox}
\newenvironment{tablehere}{\begin{table}[H]}{\end{table}}
\BeforeBeginEnvironment{tablehere}{\end{multicols}}
\AfterEndEnvironment{tablehere}{\begin{multicols}{2}}
\begin{document}
\begin{multicols}{2}
本文本文本文本文本文本文本文本文本文本文本文本文本文本文本文本文本文本文本文本文本文本文本文
本文本文本文本文本文本文本文本文本文本文本文本文本文本文本文本文本文本文本文本文本文本文本文
本文本文本文本文本文本文本文本文本文本文本文本文本文本文本文本文本文本文本文本文本文本文本文
\begin{tablehere}
\centering
表表表表表表表表表表表表表表表表表表表表表表表表表表表表表表表表表表表表表表表表表表表表表
\end{tablehere}
本文続き本文続き本文続き本文続き本文続き本文続き本文続き本文続き本文続き本文続き本文続き
本文続き本文続き本文続き本文続き本文続き本文続き本文続き本文続き本文続き本文続き本文続き
本文続き本文続き本文続き本文続き本文続き本文続き本文続き本文続き本文続き本文続き本文続き
\end{multicols}
\end{document}
ただし,multicols 環境中では通常のフロート環境は使えないという制限があるようです.
figure* などは使えますが,必ず次のページ以降に送られます.
これが問題になるようでしたら解決にならないです.
一段組みを入れたことがあります.
これ以外にリーズナブルな方法があるのかどうかは,私は知りません.
いちいち multicols 環境を閉じたり開いたりするのが嫌ということならば,
新しい環境を定義して,そこに押し込めることはできそうに思います(何の解決にもなっていない気はしますが).
\documentclass{jsarticle}
\usepackage{multicol,float,etoolbox}
\newenvironment{tablehere}{\begin{table}[H]}{\end{table}}
\BeforeBeginEnvironment{tablehere}{\end{multicols}}
\AfterEndEnvironment{tablehere}{\begin{multicols}{2}}
\begin{document}
\begin{multicols}{2}
本文本文本文本文本文本文本文本文本文本文本文本文本文本文本文本文本文本文本文本文本文本文本文
本文本文本文本文本文本文本文本文本文本文本文本文本文本文本文本文本文本文本文本文本文本文本文
本文本文本文本文本文本文本文本文本文本文本文本文本文本文本文本文本文本文本文本文本文本文本文
\begin{tablehere}
\centering
表表表表表表表表表表表表表表表表表表表表表表表表表表表表表表表表表表表表表表表表表表表表表
\end{tablehere}
本文続き本文続き本文続き本文続き本文続き本文続き本文続き本文続き本文続き本文続き本文続き
本文続き本文続き本文続き本文続き本文続き本文続き本文続き本文続き本文続き本文続き本文続き
本文続き本文続き本文続き本文続き本文続き本文続き本文続き本文続き本文続き本文続き本文続き
\end{multicols}
\end{document}
ただし,multicols 環境中では通常のフロート環境は使えないという制限があるようです.
figure* などは使えますが,必ず次のページ以降に送られます.
これが問題になるようでしたら解決にならないです.