如果我用来\setspace{0.8}
收紧我的列表*我会在行号和代码之间得到一条断线。
\documentclass{article}
\usepackage{listings}
\usepackage{setspace}
\lstset{basicstyle=\footnotesize\ttfamily\selectfont, breakatwhitespace=false, breakindent=0.5em, breaklines=true, captionpos=b, extendedchars=false, frame=l, keepspaces=true} %this line intentionally long
%and some intentional blanks.
\lstset{
numbers=left,
numbersep=5pt,
numberstyle=\tiny\ttfamily\selectfont,
showspaces=false,
showstringspaces=false,
showtabs=false,
stepnumber=2,
tabsize=2,
}
\begin{document}
This is a singlespaced listing:
\lstinputlisting[frame=leftline,firstline=1,lastline=9]{lstline.tex}
This is after \textbackslash setstretch\{0.8\}:
\setstretch{0.8}
\lstinputlisting[frame=leftline,firstline=1,lastline=9]{lstline.tex}
\end{document}
(将其保存为 lstline.tex,它是它自己的示例)
如果断开是正常的,我会接受它作为虚线并继续前进,但事实并非如此(例如,参见非常长的、多次换行的第 3 行)。
在剥离到 MWE 时,我尝试了一些东西,但没有任何帮助。
请注意,这些是多页列表,因此围绕它们的框看起来很奇怪,规则实际上只是将行号与代码分开。
编辑我使用 pdflatex 进行编译(我想我必须这样做)。
*(行距看起来很大拉丁现代打字机轻型浓缩版我通常使用它,但问题与字体无关)
答案1
左框架由与支柱一样高的规则绘制,但\baselinestretch
设置为 0.8 时,一些字符高于支柱。
你可以通过改变规则的计算方式来解决,例如
\documentclass{article}
\usepackage{listings}
\usepackage{setspace}
\lstset{basicstyle=\footnotesize\ttfamily\selectfont, breakatwhitespace=false, breakindent=0.5em, breaklines=true, captionpos=b, extendedchars=false, frame=l, keepspaces=true} %this line intentionally long
\usepackage{etoolbox}
\makeatletter
\patchcmd{\lst@frameInit}
{\vrule\@width\lst@framerulewidth}
{\smash{\vrule\@width\lst@framerulewidth\@height1.2\ht\strutbox\@depth1.2\dp\strutbox}}
{}{}
\makeatother
%and some intentional blanks.
\lstset{
numbers=left,
numbersep=5pt,
numberstyle=\tiny\ttfamily\selectfont,
showspaces=false,
showstringspaces=false,
showtabs=false,
stepnumber=2,
tabsize=2,
}
\begin{document}
This is a singlespaced listing:
\lstinputlisting[frame=leftline,firstline=1,lastline=9]{\jobname}
This is after \verb|\setstretch{0.8}|:
\lstset{basicstyle=\footnotesize\ttfamily\linespread{0.8}\selectfont}
\lstinputlisting[frame=leftline,firstline=1,lastline=9]{\jobname}
\end{document}
但是行距不均匀,我不喜欢loading setspace
,所以我把设置改成了等距。
我认为最好最多只减少行距,以便支柱仍然比字符高一点,比如说 0.9:
\documentclass{article}
\usepackage{listings}
\usepackage{setspace}
\lstset{basicstyle=\footnotesize\ttfamily\selectfont, breakatwhitespace=false, breakindent=0.5em, breaklines=true, captionpos=b, extendedchars=false, frame=l, keepspaces=true} %this line intentionally long
%and some intentional blanks.
\lstset{
numbers=left,
numbersep=5pt,
numberstyle=\tiny\ttfamily\selectfont,
showspaces=false,
showstringspaces=false,
showtabs=false,
stepnumber=2,
tabsize=2,
}
\begin{document}
This is a singlespaced listing:
\lstinputlisting[frame=leftline,firstline=1,lastline=9]{\jobname}
This is after \verb|\setstretch{0.9}|:
\lstset{basicstyle=\footnotesize\ttfamily\linespread{0.9}\selectfont}
\lstinputlisting[frame=leftline,firstline=1,lastline=9]{\jobname}
\end{document}