内部に Python コードを含む 2 列レイアウト - 重複の問題

内部に Python コードを含む 2 列レイアウト - 重複の問題

私は次の LaTeX コードを使用して、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 ファイルの 2 番目の列に重なっていることです。リスト関数が次の列に重ならず、同じ列の次の行に移動するように、どなたか助けていただけないでしょうか。これは非常に重要なことなので、どんな助けでも大歓迎です。また、リストされたコードを小さいフォント サイズにして、1 ページの列ごとにより多くのコードが収まるようにすることは可能でしょうか。

答え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}}

breaklineslistingsは改行を許可し、他のパラメータは改行が発生した場合に新しい行にシンボルを出力します (\hookrightarrow一般的に使用されますが、独自のシンボルを使用してください)。

編集

フォントサイズの問題を解決するには、 の行をcommentstyle次の行に置き換えます。

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

答え2

これは主にあなたの最後の点に答えるためのものです。私は論文でラテンモダンを使用したので、

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

私の場合は\lstset「ラテンモダンタイプライターライトコンデンス」を使うことができました(こここれは私が見つけた最も狭い等幅フォント(無料で入手可能)で、実際にかなり見栄えが良いです。行番号には を使用しました\tiny。行継続記号は使用せず、breakindent=0.5em

私は 2 列レイアウトを使用していませんでした (コード付録では 2 列レイアウトは避けますが、運が良ければそれはあなた次第です)。また、かなり長い行もありました。

関連情報