双栏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
相关产品推荐
相关产品推荐

