发布时间:2010-07-04 14:38:30
文章类别:插图技巧
原文地址:http://blog.sina.com.cn/s/blog_5e16f1770100k267.html

QQ群:91940767/145316219/141877998/80300084/194770436
淘宝店:http://latexstudio.taobao.com
技巧续篇:http://latexstudio.net/
常见数学公式问题集下载

原文地址:http://bbs.chinatex.org/forum.php?mod=viewthread&tid=5023&extra=
问题描述
貌似multicols环境中不能放图片,即
\begin{multicols}{2}
\begin{figure}
\centering
\includegraphics[width=0.309\textwidth]{fig0001.eps}
\caption{图} \label{fig:1}
\end{figure}
\end{multicols} 是不允许的,图片丢失,可是如把图片放在multicols环境外图片就是单栏的了,是不是这样?


解释说明:Package multicol Warning: Floats and marginpars not allowed inside `multicols'
environment!.
就是说multicols环境里,是不允许浮动环境存在的。
解决方案
方案一、参见ctex-faQ,59个问题。摘录如下:
如果你使用的是LATEX 标准文档类的twocolumn 模式,那么使用figure 和table 环境可以产生单列的
浮动图形或者表格,而使用figure* 和table* 环境则可以产生通栏的浮动图形或者表格。
如果你使用的是multicol 宏包提供的multicols 环境,那么就有一点小问题了。figure 和table 在这种方式下无法正常工作,会导致图形或者表格丢失。但是, figure* 和table* 仍然可以正常工作,产生通栏的浮动图形或者表格,就像在标准文档类的twocolumn 模式下一样。
要在multicols 环境中使用单栏的图形或者表格,可以使用float 宏包提供的[H] 位置选项。例如
\begin{figure}[H]
...
\caption{...}
\end{figure}
但是要注意的是,这种方式产生的对象是不能“浮动”的,也就是说位置是固定的。因此,有时候你必须仔细调整它的位置,以免造成分栏的底部参差不齐。

方案二、在双栏环境下,我们可以不使用figure。可以直接插入图片,居中的话可以用center环境。若是想使用caption和label,导言区 加入代码:
\makeatletter
\def\@captype{figure}
\makeatother
\caption{???}\label{xxx}


这样会让图和表格的标题都以figure ,若是table也正常的话。每次使用前修改为\makeatletter
\def\@captype{table}
\makeatother
或者重新定义为:
\makeatletter
\newcommand\figurecaption{\def\@captype{figure}\caption}
\newcommand\tablecaption{\def\@captype{table}\caption}
\makeatother
然后用\figurecaption{XXX}和\tablecaption{XXX}来加标题吧!

方案三、定义新的环境来使用。
\makeatletter
\newenvironment{tablehere}
{\def\@captype{table}}
{}


\newenvironment{figurehere}
{\def\@captype{figure}}
{}
\makeatother

我们直接使用 figurehere 和 tablehere环境就可以了。

点赞(3)

评论列表 共有 1 条评论

? ? ? ? ? ? ? 4月前 回复TA

总算找到问题的解决方案了,这应该是很容易遇到的问题(双栏+插图,几乎必然会用到),却有这样不合理的bug,感谢楼主分享解决方法

立即
投稿

微信公众账号

微信扫一扫加关注

发表
评论
返回
顶部