提问于:
浏览数:
6033
我目前是写一个双栏环境报告
但是遇到了问题,就是使用multicols的情况下,图片无法显示出来,下面是我的mwe:
![](/static/images/ext/zip.gif)mwe.zip
我期待的结果是像这样的,图片也是跟文字一样双栏显示
![](https://pics.latexstudio.net/data/images/201911/321fd8e5bd90b25.png)
而我编译后会只有正文,图片完全不显示。
求大神帮忙解答!!十分感谢!
3 回答
1
1. `multicols` 环境内部,不支持使用单栏浮动体,如 `figre` 和 `table`。
编译你的例子,生成的 log 中就包含相应的警告信息
```tex
Floats and marginpars not allowed inside multicols environment!
```
1. 非浮动体,可以用,如 `\begin{figure}[H]`(选项 `H` 由 `array` 宏包提供)
1. 跨栏的浮动体,可以用,但一定会出现在下一页。
参考 `texdoc multicols`, sec. 2.4, 2.6
1
1. 不建议使用 `multicol` 宏包实现双栏模式,除非有一些特殊的需要。在 `multicols` 环境中是不能使用浮动体的。需要带标题的插图可以使用 `center` 环境(或者其他环境,看你的需求了)里插入图表,并用 `caption` 宏包的 `\captionof{<类型>}{<标题>}` 来形成标题,如果你觉得 `\captionof` 太麻烦了,不想总写那个 `table` 和 `figure` 参数,可以定义一个新的环境:
```tex
% in preamble
\makeatletter
\newenvironment{fighere}
{\def\@captype{figure}\begin{center}}{\end{center}}
\newenvironment{tabhere}
{\def\@captype{table}\begin{center}}
{\end{center}}
\makeatother
```
使用 `fighere` 或 `tabhere` 即可。
注意 `center` 环境本质是一个 `list` 环境,会带来与上下文的额外间距。
2. 使用 `multicol` 宏包可以形成跨栏的浮动体,需要先结束 `multicols` 环境,再插图表,然后再重新开启 `multicols`环境。浮动位置选项 `htbp` 全都有效(其实这是废话,这种情况的浮动体和一般浮动体没区别)。这是我能想到的用 `multicol` 宏包而不是用文档选项 `twoclumn` 实现双栏模式的唯一理由。
2. 推荐采用文档类 `twocolumn` 选项形成双栏模式。浮动体正常使用,需要跨栏的浮动体则采用带 `*` 的环境。跨栏浮动体只有`tp` 两个浮动位置有效,另有一个宏包(我不常用,实在想不起来是啥了)可以扩展到使用 `b` 位置选项,有需要自己搜索找一下。
0
为什么要加`multicols`?
我这里给个 MWE
```tex
\documentclass[12pt,a4paper,twocolumn]{ctexart}
\usepackage{mwe}
\usepackage{zhlipsum}
\begin{document}
\zhlipsum[1-2]
\begin{figure}
\centering
\includegraphics[width=0.7\linewidth]{example-image}
\caption{积分电路仿真}
\label{fig:picture1}
\end{figure}
\end{document}
```
你的回答
请登录后回答
你的回答将会帮助更多人,请务必认真回答问题。