You need to enable JavaScript to run this app.
优惠活动
大模型
产品
解决方案
定价
更多

双栏LaTeX文档中实现lstlisting跨栏且与文本同页的方法

解决WileyNJD-v2双栏文档中代码跨栏同页显示的问题

要实现代码像figure*一样跨两栏显示且与文本同页,不要用\onecolumn/\twocolumn切换布局(这会强制页面重排导致代码单独占页),正确的做法是将lstlisting嵌套在跨栏浮动环境figure*中,具体修改如下:

\documentclass[APA,STIX2COL]{WileyNJD-v2}
\lstdefinestyle{basic}{
    numbers= none,
    numberstyle=\scriptsize,
    basicstyle=\ttfamily\scriptsize,
    tabsize=2, 
    breaklines=true, 
    backgroundcolor=\color{black!10}
}
\begin{document}

% 这里可以添加正文内容,代码会和正文同页(只要空间足够)
这是一段测试正文,用于验证代码块是否和文本处于同一页面。

\begin{figure*}[htbp]
    \centering
    \begin{lstlisting}[style=basic]
public class Main {
  public static void main(String[] args) {
    System.out.println("Hello, World!");
  }
}
    \end{lstlisting}
    % 可选:添加代码标题或说明
    \caption{示例Java代码}
\end{figure*}

更多正文内容...

\end{document}

关键说明:

  • figure*是双栏文档专用的跨栏浮动环境,会自动占据两栏宽度,且遵循htbp的浮动位置规则(优先放在当前页顶部/底部,或合适位置),不会强制单独分页。
  • 移除lstlisting本身的float选项,因为已经嵌套在figure*浮动环境中,避免冲突。
  • 如果需要给代码块添加标题,直接用\caption即可,和普通图片标题用法一致。

内容的提问来源于stack exchange,提问作者charlie

相关产品推荐
方舟 Agent Plan

超全模态模型 × Harness 升级,最新支持 Deepseek-V4.1-Flash、GLM-5.3 系列、Doubao-Seedream-5.0-pro、Kimi-K3 (部分), 限时 9.9 元起

最近更新时间:2026.08.21 04:09:17