梅威瑟:

梅威瑟:

避免使用该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}

相关内容