该问题在下图中以红色标出。
我可以猜出其中的正确缩进breakindent
,pt
但肯定有更好的方法。
\documentclass{article}
\usepackage{listings}
\lstset{basicstyle=\ttfamily,
breaklines=true,
breakatwhitespace=true,
columns=flexible,
keepspaces=true,
%breakindent=20.9pt,
}
\begin{document}
\begin{lstlisting}
IIII IIII IIII IIII IIII IIII
IIIII IIIII IIIII IIIII IIIII IIIII IIIII IIIII IIIII IIIII IIIII IIIII
IIIIII IIIIII IIIIII
\end{lstlisting}
\end{document}
答案1
我会使用以“em”为单位表示的值:该单位与大写字母“M”的宽度直接相关(至少在理论上如此),并且由于 listings 使用等宽字体,因此这也是“I”(+ 字母间距)的宽度。(另一种定义是 1em 等于字体大小,但在这两种情况下,您都有一个随所选字体大小而变化的单位)。
答案2
\documentclass{article}
\usepackage{listings}
\settowidth{\dimen0}{\ttfamily I}%
\lstset{basicstyle=\ttfamily,
breaklines=true,
breakatwhitespace=true,
breakindent=4\dimen0,
columns=flexible,
keepspaces=true,
}
\begin{document}
\begin{lstlisting}
IIII IIII IIII IIII IIII IIII
IIIII IIIII IIIII IIIII IIIII IIIII IIIII IIIII IIIII IIIII IIIII IIIII
IIIIII IIIIII IIIIII
\end{lstlisting}
\end{document}
假设您希望缩进 4 个“空格”。如果您使用列表样式,情况会有所不同\small
,那么您需要重新计算 tt“I”的宽度\small
。