避免使用该multicols
包,在一页中放置一段跨越两列的文本的正确方法是什么(是否为新页面无关紧要,尽管如果它是两列页面的中间部分则是理想的)并且那里的代码也跨越它们?
梅威瑟:
以下 MWE 显示了我尝试过的操作,但是取消注释环境时会出现错误lstlisting
(因此问题标题)。
\documentclass[journal,twoside]{IEEEtran}
\usepackage{listings}
\begin{document}
This is an empty example page.
\twocolumn[
\begin{@twocolumnfalse}
This part of the document must span the two columns when it is too large.
%\begin{lstlisting}
%A code listing is needed here.
%\end{lstlisting}
\end{@twocolumnfalse}
]
This part of the document doesn't span the two columns when it is too large.
\end{document}
为了让寻找错误的人找到此页面,我将引用出现的错误:
Argument of \lst@next has an extra }.
<inserted text>
\par
l.13 ]
其他问题(如果允许):
主要目的是满足最初的要求,但是,如果你的善意超出了你的想象,你可能需要回答我:
- 冲突为何发生?
- 应该怎样解决呢?
答案1
@Troy 的评论使用您在帖子中概述的方法,为您遇到问题的原因提供了很好的参考。
我解读你的印刷字体客观的(与您尝试实现目标的方式相反)如下:lstlisting
在开始处(即页面顶部)以单列模式排版一些材料(包括环境)。如果是这种情况,您可以使用环境table*
。请注意,这种方法会自动在页面的单列和双列部分之间插入一些空白。
\documentclass[journal,twoside]{IEEEtran}
\usepackage{listings,lipsum}
\newcommand{\blurb}{This part of the document must span both columns when it is too large.\ }
\begin{document}
This starts off a non-empty page
\begin{table*} % this will be placed at the top of the *next* page
\blurb\blurb\blurb
\begin{lstlisting}
A code listing is needed here.
A code listing is needed here.
\end{lstlisting}
\blurb\blurb\blurb
\end{table*} % note that we don't provide a "\caption" statement.
\lipsum[1-20] % filler text for pages 1 and 2
\end{document}