如何将乳胶文档中的代码打印分页为多页而不是一页

如何将乳胶文档中的代码打印分页为多页而不是一页

这个问题之后如何在 LaTeX 中实现不同编程语言代码的类似显示它会在独立的 pdf 文档中打印代码(例如,仅在一个 pdf 页面中就有 1000 行代码),我在将该代码与我的主要论文 tex 文件一起使用时遇到了问题。我的意思是,由于代码文档的文档类型和我的文档代码似乎不同,tex 在编译 tex 代码的过程中停止了。此外,无法将长代码作为图形导入主 tex 文件(因为它比标准 A4 pdf 文件大)。

我该如何调整回答的代码能够将其打印在两到三个 pdf 页面中而不是单个长 pdf 页面中吗?

答案1

将 替换\documentclass[...]{standalone}为您自己的\documentclass{<xxx>},其中<xxx>可以替换为任何可用的类别,如articlebookreport等。您将获得跨越多页的列表。

\documentclass[a4paper,11pt,twoside,openany,dvipsnames]{book}
\usepackage{xcolor}
\usepackage{listings}

\usepackage{accsupp}
\newcommand*{\noaccsupp}[1]{\BeginAccSupp{ActualText={}}#1\EndAccSupp{}}


\lstdefinestyle{Common}
{
    basicstyle=\scriptsize\ttfamily\null,
    numbers=left,
    numbersep=1em,
    frame=single,
    framesep=\fboxsep,
    framerule=\fboxrule,
    xleftmargin=\dimexpr\fboxsep+\fboxrule,
    xrightmargin=\dimexpr\fboxsep+\fboxrule,
    breaklines=true,
    breakindent=0pt,
    tabsize=5,
    columns=flexible,
    showstringspaces=false,
    captionpos=b,% or t for top (default)
    abovecaptionskip=0.5\smallskipamount,   % there is also belowcaptionskip
}



\lstdefinestyle{CSharp}
{
    style=Common,
    language={[Sharp]C},
    alsolanguage={[LaTeX]TeX},
    morekeywords=
    {
        % add your new fortran keywords here!
    },
}

\lstdefinestyle{CSFall}
{
    style=CSharp,   
    backgroundcolor=\color{Blue},
    basicstyle=\color{Yellow}\scriptsize\ttfamily,
    keywordstyle=\color{White}\sffamily,
    identifierstyle=\color{Cyan}\bfseries,
    commentstyle=\color{ForestGreen},
    stringstyle=\color{Maroon},
    numberstyle=\color{Black}\tiny\noaccsupp,
    rulecolor=\color{Black},
}


\lstnewenvironment{CSFall}
{\lstset{style=CSFall}}
{}




\usepackage{filecontents}
\begin{filecontents*}{csharp.cs}
public class DoubleFormatter : IFormatProvider, ICustomFormatter
{
  // always use dot separator for doubles
  private CultureInfo enUsCulture = CultureInfo.GetCultureInfo("en-US");

  public string Format(string format, object arg, IFormatProvider formatProvider)
  {
    if (arg is double)
    {
      if (string.IsNullOrEmpty(format))
      {
        // by default, format doubles to 3 decimal places
        return string.Format(enUsCulture, "{0:0.000}", arg);
      }
      else
      {
        // if user supplied own format use it
        return ((double)arg).ToString(format, enUsCulture);
      }
    }
    // format everything else normally
    if (arg is IFormattable)
      return ((IFormattable)arg).ToString(format, formatProvider);
    else
      return arg.ToString();
  }

  public object GetFormat(Type formatType)
  {
    return (formatType == typeof(ICustomFormatter)) ? this : null;
  }
}
\end{filecontents*}

\usepackage{lipsum}

\begin{document}
\lipsum[1]

\lstinputlisting[style=CSFall,caption={An example of C\# code.}]{csharp.cs}

\lipsum[2]
\end{document}

在此处输入图片描述

相关内容