为什么列表的框架宽度比 \textwidth 稍大?

为什么列表的框架宽度比 \textwidth 稍大?

以下是示例代码:

\documentclass[]{article}
\usepackage{listings}
\lstset{
    basicstyle=\ttfamily\footnotesize,
    frame=single, % adds a frame around the code
}
\begin{document}
\setlength{\fboxsep}{0pt}
\noindent\makebox[\linewidth]{\rule{\textwidth}{1pt}} 
abc

\begin{lstlisting}
abc
\end{lstlisting}

\end{document}

结果的屏幕截图:

代码截图

即使我将设置\fboxsep为零,结果仍然相同。有什么方法可以让它小一点吗?

由于我的 tex 代码中有许多表格和列表框,我希望它们的宽度都相同。对于表格,可以通过tabularx包正确设置其宽度,例如\begin{tabularx}{\textwidth}...。但我不知道如何正确设置lstlisting的框架宽度。

答案1

框架位于列表之外。因此,可以使用xleftmarginxrightmargin为框架留出空间。 的默认值为framesep3pt, 的默认值为framerule0.4pt。

结果:

\documentclass[]{article}
\usepackage{listings}
\lstset{
    basicstyle=\ttfamily\footnotesize,
    frame=single, % adds a frame around the code
    xleftmargin=3.4pt,
    xrightmargin=3.4pt,
}
\begin{document}
\noindent\makebox[\linewidth]{\rule{\textwidth}{1pt}}
abc

\begin{lstlisting}
abc
\end{lstlisting}

\end{document}

结果

相关内容