2 列布局,内含 Python 代码-重叠问题

2 列布局,内含 Python 代码-重叠问题

我正在使用以下乳胶代码来编写附录,我需要在其中添加 Python 代码。

\section{Appendix}
\begin{landscape}
\begin{multicols}{2}
\subsection{Source Code}
\definecolor{keywords}{RGB}{255,0,90}
\definecolor{comments}{RGB}{0,0,113}
\definecolor{red}{RGB}{160,0,0}
\definecolor{green}{RGB}{0,150,0}

 \lstset{language=Python, 
    basicstyle=\ttfamily\small, 
    keywordstyle=\color{keywords},
    commentstyle=\color{comments},
    stringstyle=\color{red},
    showstringspaces=false,
    identifierstyle=\color{green},
    procnamekeys={def,class}}
    %taking python file and adding code here
    \lstinputlisting{code/Logic_K.py}
\end{multicols}
\end{landscape}

此代码完全满足我的需要,因此我拥有了具有 2 列的横向页面,并且代码格式正确。问题是 python 文件中的一些长行与 latex 文件的第二列重叠。有人能帮我解决一下,以便列表函数不会与下一列重叠,而是转到同一列的下一行吗?我将不胜感激任何帮助,因为这非常重要。此外,是否可以将列出的代码的字体大小缩小,以便更多代码可以适合单个页面上的每一列?

答案1

你必须说出listings你想要什么,因此改变你lsset

 \lstset{language=Python, 
    basicstyle=\ttfamily\small, 
    keywordstyle=\color{keywords},
    commentstyle=\color{comments},
    stringstyle=\color{red},
    showstringspaces=false,
    identifierstyle=\color{green},
    procnamekeys={def,class},
    breaklines=true,
    postbreak=\raisebox{0ex}[0ex][0ex]{your symbol for line break}}

breaklines将允许listings进行换行,并且如果发生换行,另一个参数将在新行上打印一个符号(使用您自己的符号,尽管\hookrightarrow很常用)。

编辑

commentstyle要解决字体大小问题,请用以下行替换:

commentstyle=\fontsize{5}{6}\selectfont\color{comments}

答案2

这主要是为了回答你的最后一点。无论如何,我在论文中使用了拉丁现代语,因此通过

  basicstyle=\footnotesize\ttfamily\fontseries{lc}\selectfont,

在我的系统中,\lstset我可以使用“拉丁现代打字机轻型浓缩版”(这里'拉丁现代的精彩写作)。这是我能找到的最窄的等宽字体(免费提供),实际上看起来相当不错。我的行号使用了\tiny。我没有使用行延续符号,只是breakindent=0.5em

我没有使用双列布局(代码附录中会避免使用双列布局,但这取决于你是否幸运)。我还使用了一些相当长的行。

相关内容