当 lstlisting 跳页时如何显示提示?

当 lstlisting 跳页时如何显示提示?

我使用带标题的内联列表块。我有几个列表跨越多个页面或从页面末尾开始。现在我想给读者一个提示,列表还没有结束,还会继续到下一页。这个提示应该是“下一页/第二页有进一步的列表”。

我在 listings 包手册的第 4 部分搜索过,还没有找到这个参数。是否有可能显示这样的提示?

答案1

你可以使用mdframed 尤其是它的选项singleextrafirstextra和。不同的选项允许您为单个页面上的框架和分布在两个或多个页面上secondextramiddleextra框架设置不同的样式。

mdframed与 一起使用时framemethod=tikz,您可以访问框架的角落。左下角的节点称为(O),右上角的节点称为(P)。因此,右下角的节点可以通过 访问(O -| P),左上角的节点可以通过访问(P -| O)

这可以与使用来\lstnewenvironment获得一个可以根据需要定制的列表环境。

下面我定义了一种mdframed样式,如果框架被拆分,它会添加一些连续的信息,以及一个listings使用此框架样式的新环境。它看起来如下:

在此处输入图片描述

代码如下:

\documentclass{article}
\usepackage[T1]{fontenc}

\usepackage[framemethod=tikz]{mdframed}
% define the frame style for the listing:
\mdfdefinestyle{note}
  {
    hidealllines = true ,
    skipabove    = .5\baselineskip ,
    skipbelow    = .5\baselineskip ,
    singleextra  = {} ,
    firstextra   = {
      \node[below right,overlay,align=left,font=\continuingfont]
        at (O) {\continuingtext};
    } ,
    secondextra  = {
      \node[above right,overlay,align=left,font=\continuingfont]
        at (O |- P) {\continuedtext};
    } ,
    middleextra  = {
      \node[below right,overlay,align=left,font=\continuingfont]
        at (O) {\continuingtext};
      \node[above right,overlay,align=left,font=\continuingfont]
        at (O |- P) {\continuedtext};
    }
  }

% customize the appearance of the continuing notes:
\newcommand*\continuingfont{\footnotesize\itshape}
\newcommand*\continuingtext{Listing continues on next page}
\newcommand*\continuedtext{Continuing from last page}

\usepackage{listings}
% define the listings style:
\lstdefinestyle{code}{
  language         = [LaTeX]TeX,
  basicstyle       = \small\ttfamily ,
  numbers          = left,
  numberstyle      = \tiny,
  numberblanklines = true,
  breaklines       = true,
  keepspaces       = true,
  columns          = fullflexible,
  % whatever else you want ...
}

% define the environment:
\lstnewenvironment{listing}
  {%
    \lstset{style=code}%
    \mdframed[style=note]%
  }
  {%
    \endmdframed
  }

\usepackage{lipsum}% dummy text

\begin{document}

\lipsum[1-2]

\begin{listing}
\usepackage[framemethod=tikz]{mdframed}
\mdfdefinestyle{note}
  {
    hidealllines = true ,
    skipabove    = .5\baselineskip ,
    skipbelow    = .5\baselineskip ,
    singleextra  = {} ,
    firstextra   = {
      \node[below right,overlay,align=left,font=\continuingfont]
        at (O) {\continuingtext};
    } ,
    secondextra  = {
      \node[above right,overlay,align=left,font=\continuingfont]
        at (O |- P) {\continuedtext};
    } ,
    middleextra  = {
      \node[below right,overlay,align=left,font=\continuingfont]
        at (O) {\continuingtext};
      \node[above right,overlay,align=left,font=\continuingfont]
        at (O |- P) {\continuedtext};
    }
  }
\newcommand*\continuingfont{\footnotesize\itshape}
\newcommand*\continuingtext{Listing continues on next page}
\newcommand*\continuedtext{Continuing from last page}

\usepackage{listings}
\lstdefinestyle{code}{
  language         = [LaTeX]TeX,
  basicstyle       = \small\ttfamily ,
  numbers          = left,
  numberstyle      = \tiny,
  numberblanklines = true,
  breaklines       = true,
  keepspaces       = true,
  columns          = fullflexible,
  % whatever else you want ...
}
\lstnewenvironment{listing}
  {%
    \lstset{style=code}%
    \mdframed[style=note]%
  }
  {%
    \endmdframed
  }
\end{listing}

\lipsum[2]

\end{document}

答案2

好吧,我主要使用行号,所以行号是一个很好的提示。而且我也经常使用框架,你可以在我的例子中看到。在我看来,这是一种很好的方式,可以表明代码尚未完成并延续分页符。

使用您listings可以设置frame=single或以下选项之一:none,,,,,leftlinetoplinebottomlineshadowbox。有关更多详细信息,您可以查看列表文档,我在第 15 页还找到了可能的框架。

\lstset是我的常用设置,源代码来自回答我在这里给出了 TeX.sx。

代码

\documentclass{article}

\usepackage{lipsum}
\usepackage{listings}

\usepackage{xcolor}
\definecolor{gray}{rgb}{0.25,0.25,0.25}

\lstset{
  basicstyle=\footnotesize,
  breakatwhitespace=false,
  breaklines=true,
  frame=shadowbox,
  language=[LaTeX]{TeX},
  numbers=left,
  numbersep=5pt,
  numberstyle=\tiny\color{gray},
  title=\lstname
}

\begin{document}
\lipsum[1-3]

\begin{lstlisting}
\documentclass{article}
\usepackage[dvipsnames]{xcolor}
\input{kvmacros}

\begin{document}
\karnaughmap{5}{$f(x_i)$}%
{{$x_1$}{$x_2$}{$x_3$}{$x_4$}{$x_5$}}%
{%
0011011001100110%
0110011001000110%
}%
{%
%Single Ones
\textcolor{Blue}{
\put(2.5,3.5){\oval(0.9,0.9)[]}
\put(7.5,2.5){\oval(0.9,0.9)[]}
\put(0.5,1.5){\oval(0.9,0.9)[]}}
%Pairs of Ones
\put(1,2.5){\oval(1.9,0.9)[]}
%Quadruples of Ones
\textcolor{Yellow}{
\put(4,2){\oval(1.9,1.9)[]}}%
\textcolor{Green}{
\put(6,4){\oval(1.9,1.9)[b]}
\put(6,0){\oval(1.9,1.9)[t]}}%
\textcolor{Red}{
\put(5,0.5){\oval(3.9,0.9)[r]}
\put(3,0.5){\oval(3.9,0.9)[l]}}
\end{lstlisting}

\lipsum[4]
\end{document}

結果

图像

相关内容