调整列表宽度(包括分页符)

调整列表宽度(包括分页符)

我有自己的 lstlistings 环境,它们都是框架式的。因为我想调整宽度以便框架从文本开始,所以我在 lstlisting 中使用了一个迷你页面。(参见 MWE)。

但是由于我有相当长的代码片段,所以我想允许列表内的​​分页符,而使用 minipage 则无法做到这一点。

我无法使用 实现同样的效果\adjustwidth{..}

有什么想法吗?(我正在使用 XeLatex)

\documentclass[a4paper]{article}
\usepackage{polyglossia}
\setdefaultlanguage[]{english}

\usepackage{listings}
\lstset{frame=single}
\usepackage{ifthen}
\lstnewenvironment{example}[1]
  {
  \flushleft \textbf{Example }\def\ExampleDescription{#1\\}\\
  \ExampleDescription
  \hspace*{\dimexpr\fboxrule+\fboxsep}% 
  \minipage{\dimexpr\textwidth-\fboxsep-\fboxrule}% 
  }{
  \endminipage
  }
\usepackage{lipsum}
\begin{document}

\lipsum[2-6]
\begin{example}{Description}
hello
this is a code example
that should
be long
enough
to provoke a pagebreak
\end{example}
\end{document}

答案1

(这实际上与 Xetex 无关,因此我将其从我的示例中排除。)

抱歉,我一开始误解了你的问题。minipage默认情况下,A 是不可破坏的,但你可以使用xleftmargin=3ptxrightmargin=3pt选项lstlisting3pt来自framesep选项的默认值。如果你更改它,也请更改这些(它可以自动化,但如果你不是真的需要它,那就太过分了)。

在此处输入图片描述

\documentclass[a4paper]{article}

\usepackage{listings}
\lstset{frame=single, xleftmargin=3pt, xrightmargin=3pt}
\usepackage{ifthen}
\lstnewenvironment{example}[1]
  {
  \flushleft \textbf{Example }\def\ExampleDescription{#1\\}\\
  \ExampleDescription
  \hspace*{\dimexpr\fboxrule+\fboxsep}%
  }{
  }
\usepackage{lipsum}
\begin{document}

\lipsum[2-6]
\begin{example}{Description}
hello
this is a code example
that should
be long
enough
to provoke a pagebreak
\end{example}
\end{document}

相关内容