展示原则的简短示例

展示原则的简短示例

我目前采用以下方式在报告中插入代码,因为我通常不希望在代码示例中添加分页符。

\lstset{basicstyle=\ttfamily\footnotesize,breaklines=true}

\begin{figure}[ht]
    \centering

\begin{minted}{java}
Code here...
\end{minted}

   \caption{This is an example of code}
    \label{fig:codeexample}

\end{figure}

但是我现在有一个多页的示例,我无法使用分页功能。有没有更好的方法可以解决这个问题?我仍然希望在报告中引用图表时使用数字。

答案1

欢迎来到 TeX.SX!

是的,我确实认为有更好的方法来实现这一点。至少在我看来是这样。

首先,正如 TeXnician 所提到的,使用图形来包含列表并不是很合适。我建议listings为此使用专用环境。毕竟,图形与列表不是一回事。

除了是否应该使用figure环境来包含列表这一哲学问题之外,还有一个实际问题:figure环境是浮动的,不能跨页。因此,我建议采用不同的方法:

  • 使用listings浮动来显示短代码列表,这些代码列表不会跨页显示。
  • 为可以跨页的长代码列表创建一个新环境。请参阅minted软件包文档第 32 页,其中还提到这个问题

展示原则的简短示例

如上所述,我们创建了一个名为 的新环境longlisting,它将跨页面显示,并可以添加标题和标签。它还将显示在 中\listoflistings

\documentclass{article}
\usepackage{minted}
\usepackage{caption}
\setminted{
    linenos=true,
    autogobble,
}
% Create a new environment for breaking code listings across pages.
\newenvironment{longlisting}{\captionsetup{type=listing}}{}
\begin{document}

\listoflistings

\section{Let Us Make Some Listings}

\begin{longlisting}
    \begin{minted}{tex}
        ... input a lot of code here ...
        ... It will break across pages ...
    \end{minted}
    \caption[Long Code Example]{A long code example which will break across pages.}
\label{lst:long}
\end{longlisting}


\begin{listing}
    \begin{minted}{java}
        ... input short code here ...
        ... This code will not break across pages ...
    \end{minted}
    \caption[Short Code Example]{A shorter code example which will not break across pages.}
    \label{lst:short}
\end{listing}
\end{document}

填写代码时的结果

page1 page2 page3

结束语

如果我误解了您的意图,请原谅。如果您确实想将您的列表列为figures,您可以在我的代码中进行以下更改:

代替

\newenvironment{longlisting}{\captionsetup{type=listing}}{}

写:

\newenvironment{longlisting}{\captionsetup{type=figure}}{}

对于不可破坏的环境,只需figure像以前一样使用即可。但正如所说,我真的不推荐这样做。

相关内容