使用 xleftmargin=3pt,xrightmargin=3pt 时,列表规则会分解为几部分

使用 xleftmargin=3pt,xrightmargin=3pt 时,列表规则会分解为几部分

我在 Tex 文件中使用下面的编码,当我查看 DVI 输出时,列表的框架规则出现故障(请查看下面的屏幕截图)

有人可以帮我解决这个问题吗?

\documentclass{book}

\usepackage{color}
\usepackage{float}
\usepackage{listings}

\overfullrule=12pt

\definecolor{dkgreen}{cmyk}{0.81,0.48,0.95,0.59}%
\definecolor{gray}{cmyk}{0.69,0.63,0.62,0.59}%
\definecolor{mauve}{cmyk}{0.84,1,0.27,0.39}%


\makeatletter
\def\@viiihpt{8.5}

\newcommand\codesize{\@setfontsize\codesize\@viiihpt{10}}

\lstset{
   basicstyle=\ttfamily\codesize,
   backgroundcolor=\color{white},
   showspaces=false,
   showstringspaces=false,
   frame=single,xleftmargin=3pt,xrightmargin=3pt,
   rulecolor=\color{black},
   keywordstyle=\color{blue},
   commentstyle=\color{dkgreen},
   stringstyle=\color{mauve}
}
\makeatother

\begin{document}

\chapter{Book title}

\lstinputlisting[float=b,language=Python,
   caption=Creating a Tk Root Widget (Python Coding),
   label=P04-Tk.py] {P04-Tk.py}

\end{document}

以下是使用的编码P04-Tk.py

from tkinter import *                                 # import Tkinter module

root = Tk()                                           # create Tk root widget

root.mainloop()                                    # enter Tkinter event loop

编辑:[芭芭拉·比顿]

当使用 pdflatex 处理文件时也会发生这种情况,并且仅当注释移动到新行时才会发生。以下是使用原始代码的结果,以及.py修改文件以缩短行数以便所有行都保留在输出中的一行上的结果:

在此处输入图片描述

在此处输入图片描述

这是一个错误吗?或者除了避免(或打破)长线之外还有其他已知的解决方案吗?

答案1

使用选项breaklines

\lstinputlisting[float=b,language=Python,breaklines,
   caption=Creating a Tk Root Widget (Python Coding),
   label=P04-Tk.py] {P04-Tk.py}

在此处输入图片描述

相关内容